From the uDemy course on LLM engineering.
https://www.udemy.com/course/llm-engineering-master-ai-and-large-language-models
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
277 lines
9.5 KiB
277 lines
9.5 KiB
WEBVTT |
|
|
|
00:00.980 --> 00:04.850 |
|
4日目のJupyter Labへようこそ。 |
|
|
|
00:04.880 --> 00:10.820 |
|
とても見慣れたものに見えるだろうが、 実は3日目と重複して始めているからだ。 |
|
|
|
00:11.030 --> 00:14.720 |
|
そしてこの複製にはいくつかの細胞がある。 |
|
|
|
00:14.720 --> 00:19.880 |
|
インポートを再実行し、 環境をつなげたい。 |
|
|
|
00:19.880 --> 00:22.340 |
|
フロンティアモデルにつなげたい。 |
|
|
|
00:22.340 --> 00:23.630 |
|
だってそうだろう。 |
|
|
|
00:23.630 --> 00:29.900 |
|
フロンティア・モデルとオープンソース・モデルを共存させることができる。 |
|
|
|
00:30.260 --> 00:39.530 |
|
プロンプトやメッセージ関数は、 Cプラス・プラス・ファイルに書き出すことができる。 |
|
|
|
00:39.920 --> 00:43.880 |
|
ええと、 これは上書きされるから実行する必要はないと思う。 |
|
|
|
00:43.880 --> 00:49.850 |
|
でも、 Piプログラムのコードは、 覚えているだろうから、 試す必要はない。 |
|
|
|
00:49.850 --> 01:00.680 |
|
しかし、 最大の累積数を持つ配列の部分配列を探すハード・プログラムのコードは得られるだろう。 |
|
|
|
01:01.360 --> 01:07.870 |
|
そして、 このストリーム、 GPT機能が必要なんだ。 |
|
|
|
01:07.870 --> 01:10.600 |
|
そして、 このストリーム、 クロード機能が必要なのだ。 |
|
|
|
01:10.600 --> 01:14.710 |
|
そして、 これから上書きすることになるが、 このオプティマイズ関数が必要なのだ。 |
|
|
|
01:14.710 --> 01:22.270 |
|
そして、 ゴージャスなグラデーション関数は、 Pythonを実行し、 |
|
|
|
01:22.270 --> 01:28.180 |
|
Cプラスプラスを実行することを覚えているだろう。 |
|
|
|
01:28.180 --> 01:34.360 |
|
PythonやCプラスアルファの任意のコードを実行させることを許したくはないだろう。 |
|
|
|
01:34.360 --> 01:35.650 |
|
それはよくない。 |
|
|
|
01:35.650 --> 01:40.960 |
|
だから、 グラディオのインターフェイスは自分だけのものにしておき、 それについてはシェア=トゥルーなんて言わないことだ。 |
|
|
|
01:40.960 --> 01:44.170 |
|
そして、 CSSで見栄えを良くする。 |
|
|
|
01:44.200 --> 01:45.430 |
|
分かった。 |
|
|
|
01:45.430 --> 01:47.770 |
|
そして、 新しいコードに取りかかる。 |
|
|
|
01:47.770 --> 01:50.710 |
|
そして、 それは極めてシンプルなものになるだろう。 |
|
|
|
01:50.710 --> 01:52.780 |
|
まずは輸入品から。 |
|
|
|
01:52.780 --> 01:59.860 |
|
Huggingface hubからインポートしているのは、 前に見たログイン関数と、 推論クライアントというクラスだ。 |
|
|
|
02:00.280 --> 02:03.210 |
|
そしてトークナイザーをインポートする。 |
|
|
|
02:03.810 --> 02:05.790 |
|
ハグ顔にログインするんだ。 |
|
|
|
02:05.790 --> 02:06.780 |
|
これでよし。 |
|
|
|
02:06.780 --> 02:09.030 |
|
そして今度は、 いくつかの定数だ。 |
|
|
|
02:09.150 --> 02:17.040 |
|
コードとは、 このコードモデルの名前である。 |
|
|
|
02:17.070 --> 02:22.200 |
|
これは私のエンドポイントのURLなので、 エンドポイントのページから取ってきただけです。 |
|
|
|
02:22.200 --> 02:24.540 |
|
このURLを持っていけばいいんだ。 |
|
|
|
02:24.540 --> 02:29.040 |
|
今、 私のエンドポイントはそこで動いていて、 コストは0ドルだ。 時給80円。 |
|
|
|
02:29.040 --> 02:35.250 |
|
そしてこれは、 特に安定していなかったため、 惜しまれつつも一時停止しているコード・ジェンマだ。 |
|
|
|
02:35.640 --> 02:38.370 |
|
オーケー、 ではこれを試してみよう。 |
|
|
|
02:38.400 --> 02:45.090 |
|
そこで、 オートトークナイザークラスを使用して作成できるトークナイザーを覚えておき、 Frompretrainedと言い、 モデルの名前を渡すと、 |
|
|
|
02:45.090 --> 02:49.020 |
|
そのモデルに適したトークナイザーが表示されます。 |
|
|
|
02:49.020 --> 02:51.390 |
|
そして、 これを作るんだ。 |
|
|
|
02:51.390 --> 03:03.380 |
|
これは前に書いた関数で、 構造化された辞書のリストを作成し、 円周率を表す単純な関数をC+++で書き換えるよう求めるものだ。 |
|
|
|
03:03.380 --> 03:09.980 |
|
そして、 Tokenizersのapply chat templateを使ってテキストに変換します。 |
|
|
|
03:10.010 --> 03:12.110 |
|
ここで私が話していることを見てみよう。 |
|
|
|
03:12.110 --> 03:15.650 |
|
だから、 それを忘れずに実行し、 次にこれを実行すればいい。 |
|
|
|
03:16.250 --> 03:19.250 |
|
だからまず、 メッセージとは何かを思い出してほしい。 |
|
|
|
03:19.250 --> 03:22.490 |
|
メッセージは2つの要素を持つリストである。 |
|
|
|
03:22.490 --> 03:24.650 |
|
そのうちの1人はシステムの役割を担っている。 |
|
|
|
03:24.650 --> 03:25.760 |
|
それが内容だ。 |
|
|
|
03:25.790 --> 03:29.180 |
|
あなたはPythonのコードを再インプリメントすることに固執していた。 |
|
|
|
03:29.900 --> 03:34.850 |
|
そしてユーザー、 ユーザーメソッド。 |
|
|
|
03:34.880 --> 03:41.810 |
|
ここで、 完全にオープンであることの精神から、 乱数ジェネレーターの実装を同一にし、 |
|
|
|
03:41.810 --> 03:49.940 |
|
結果が正確に一致するようにする、 というちょっとしたヒントを付け加えておく。 |
|
|
|
03:50.060 --> 03:57.410 |
|
想像できるように、 あちこちにヒントを付け加えなければならない。 |
|
|
|
03:57.470 --> 04:00.830 |
|
その結果はすぐにわかるだろう。 |
|
|
|
04:00.880 --> 04:04.240 |
|
これはもちろん、 皆さんがよく知っているメッセージだ。 |
|
|
|
04:04.240 --> 04:11.710 |
|
そして、 チャットテンプレートを適用した後、 どのようなテキストになったかをお見せすると、 これを印刷すると、 |
|
|
|
04:11.740 --> 04:13.240 |
|
少し間隔が空きます。 |
|
|
|
04:13.270 --> 04:14.590 |
|
印刷されるのを見よう。 |
|
|
|
04:14.950 --> 04:16.360 |
|
さあ、 始めよう。 |
|
|
|
04:16.510 --> 04:17.440 |
|
これを見てほしい。 |
|
|
|
04:17.440 --> 04:24.490 |
|
だから、 特別なトークンがあって、 それからシステム、 それからシステム・メッセージがあるんだ。 |
|
|
|
04:24.490 --> 04:26.080 |
|
そしてユーザーも同じだ。 |
|
|
|
04:26.080 --> 04:27.970 |
|
そしてこれがコードだ。 |
|
|
|
04:27.970 --> 04:30.700 |
|
そして、 この小さなプロンプトで終わる。 |
|
|
|
04:30.700 --> 04:37.330 |
|
つまり、 LMはそのままアシスタンス対応を続けるということだ。 |
|
|
|
04:37.540 --> 04:46.090 |
|
そうなると、 ハグする顔のエンドポイントに電話をかけ、 オープンソースモデルにこの種のメッセージを送り、 |
|
|
|
04:46.090 --> 04:51.430 |
|
レスポンスを返すのは本当に難しいことだと想像できるだろう。 |
|
|
|
04:51.730 --> 04:52.840 |
|
そして、 そうではない。 |
|
|
|
04:52.840 --> 04:55.390 |
|
ほんの2、 3行のコードでできることだ。 |
|
|
|
04:55.390 --> 04:56.050 |
|
これだ。 |
|
|
|
04:56.050 --> 04:57.490 |
|
簡単なことだ。 |
|
|
|
04:57.580 --> 05:04.020 |
|
推論クライアントというオブジェクトを作り、 エンドポイントのURLとハグする顔のトークンを伝え、 |
|
|
|
05:04.050 --> 05:09.150 |
|
クライアント・ドット・テキスト生成と言うだけだ。 |
|
|
|
05:09.150 --> 05:13.320 |
|
テキストを渡して、 この場合は結果をストリームバックしたい、 と言う。 |
|
|
|
05:13.320 --> 05:15.780 |
|
それがなかったら、 これはもっと短くなる。 |
|
|
|
05:15.780 --> 05:18.030 |
|
でも、 結果がどんどん戻ってくるのはうれしい。 |
|
|
|
05:18.330 --> 05:24.030 |
|
そして、 新しいトークンを最大まで増やすことで、 少しの間なら続けられると伝えるんだ。 |
|
|
|
05:24.270 --> 05:26.790 |
|
どうなるかな? |
|
|
|
05:28.080 --> 05:38.610 |
|
この変換の結果、 私のエンドポイントからストリーミングが戻ってきている。 |
|
|
|
05:40.650 --> 05:44.580 |
|
このコードを認識し、 PythonからCプラスへのコードの変換がとても合法的で、 |
|
|
|
05:44.580 --> 05:51.300 |
|
とてもしっかりしたものであることを確認してほしい。 |
|
|
|
05:51.300 --> 05:57.990 |
|
それに、 冒頭でC++コードについて少し説明しているんだ。 |
|
|
|
05:57.990 --> 06:01.850 |
|
そして、 なぜそのようなことをしたのかというたくさんの文章で締めくくられている。 |
|
|
|
06:01.880 --> 06:07.070 |
|
私のシステムメッセージは、 そんなことをしてはいけないと主張しているにもかかわらず、 だ。 |
|
|
|
06:07.190 --> 06:15.980 |
|
ええと、 説明をしないでくださいと書いてありますが、 システムメッセージで説明をしないようにすることはできませんでした。 |
|
|
|
06:16.010 --> 06:20.420 |
|
とはいえ、 GPTの4番とクロードは指示に従っている。 |
|
|
|
06:20.420 --> 06:26.900 |
|
だから、 そうならないようにするために、 もっと時間をかけてプロンプトに取り組むことができるだろうね。 |
|
|
|
06:26.900 --> 06:32.360 |
|
しかし、 そうでない場合は、 もちろん、 後処理をするのはとても簡単で、 |
|
|
|
06:32.360 --> 06:45.890 |
|
Cプラスプラスコードの始まりから、 その記号までのすべてを取り除くことができる。 |
|
|
|
06:46.010 --> 06:49.850 |
|
だから、 後処理でそれをやるのはかなり簡単だろう。 |
|
|
|
06:50.270 --> 06:51.170 |
|
分かった。 |
|
|
|
06:51.170 --> 06:55.310 |
|
とにかく、 推論を実行するのがいかに簡単であるかはわかった。 |
|
|
|
06:55.460 --> 07:00.620 |
|
ええと、 また次回、 UIにこれを組み込んでやってみよう。 |
|
|
|
07:00.650 --> 07:01.520 |
|
ではまた
|
|
|