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.
409 lines
14 KiB
409 lines
14 KiB
WEBVTT |
|
|
|
00:00.800 --> 00:09.230 |
|
そして、 ハギング・フェイス・トランスフォーマー・ライブラリーのモデル・クラスを巡る旅の続きへようこそ。 |
|
|
|
00:09.260 --> 00:17.690 |
|
私たちはただ、 単純に書いたときに得られるラマ・モデルのアーキテクチャを見て、 他のモデルにも目を向けるべきだと言っただけなのだ。 |
|
|
|
00:17.690 --> 00:22.010 |
|
もうひとつ指摘しておきたいのは、 常に次元を見ることだ。 |
|
|
|
00:22.010 --> 00:32.120 |
|
簡単に触れたように、 ボキャブラリーを表す入力次元の数を見て、 それがこの下の出力と一致していることを確認してほしい。 |
|
|
|
00:32.300 --> 00:39.080 |
|
そして、 建築物を通して寸法を追うことができ、 何が起こっているのかを感じ取ることができる。 |
|
|
|
00:40.010 --> 00:41.060 |
|
分かった。 |
|
|
|
00:41.060 --> 00:48.170 |
|
しかし、 こうしてすべてを終え、 何が起こっているのかを話し合い、 インプットを作り上げた今、 |
|
|
|
00:48.200 --> 00:51.320 |
|
ビジネスの時が来た。 |
|
|
|
00:51.320 --> 00:53.990 |
|
これがドットジェネレーションのメソッドモデルだ。 |
|
|
|
00:53.990 --> 00:58.220 |
|
GPU上にある私たちの入力を取り込み、 その準備をする。 |
|
|
|
00:58.460 --> 01:02.100 |
|
新しいトークンは80枚までとする。 |
|
|
|
01:02.340 --> 01:06.150 |
|
ええと、 念のために言っておくけど、 私たちがお願いしたのはジョークだよ。 |
|
|
|
01:06.180 --> 01:08.970 |
|
データサイエンティストの部屋でのジョーク。 |
|
|
|
01:09.000 --> 01:11.460 |
|
私たちのお気に入りの小さな実験。 |
|
|
|
01:11.700 --> 01:16.110 |
|
それから出力を取るんだ。 |
|
|
|
01:16.110 --> 01:20.490 |
|
アウトプットのリストの最初のものを取る。 |
|
|
|
01:20.760 --> 01:28.770 |
|
そして、 トークナイザー・ドット・デコードを呼び出して、 トークンから文字に戻し、 再びテキストにする。 |
|
|
|
01:28.770 --> 01:30.690 |
|
そしてその結果を印刷する。 |
|
|
|
01:30.720 --> 01:32.340 |
|
そうしよう。 |
|
|
|
01:32.520 --> 01:34.560 |
|
だから走り出す。 |
|
|
|
01:34.710 --> 01:41.070 |
|
この下を見て、 フォワードパスをするのを見るのが好きなんだ。 |
|
|
|
01:41.070 --> 01:45.810 |
|
そして、 軽妙なジョークに対する私たちの答えがそこにある。 |
|
|
|
01:45.810 --> 01:49.590 |
|
なぜ回帰モデルはニューラルネットワークと別れたのか? |
|
|
|
01:49.620 --> 01:54.900 |
|
ニューラルネットワークが感情をオーバーフィットさせていたからだ。 |
|
|
|
01:55.230 --> 01:56.610 |
|
ああ、 大丈夫だよ。 |
|
|
|
01:56.610 --> 01:57.830 |
|
ひどくはない。 |
|
|
|
01:57.830 --> 01:58.880 |
|
それは、 ええと。 |
|
|
|
01:58.910 --> 02:02.990 |
|
ああ、 まったくもっともなジョークだよ。 |
|
|
|
02:02.990 --> 02:05.870 |
|
今まで聞いた中で一番面白いとは思わないけど、 まあね。 |
|
|
|
02:05.900 --> 02:07.370 |
|
悪くないよ。 |
|
|
|
02:09.290 --> 02:12.350 |
|
ロジスティック回帰モデルはなぜセラピーを受けたのか? |
|
|
|
02:12.350 --> 02:15.410 |
|
感情を分類するのに苦労していたからだ。 |
|
|
|
02:15.410 --> 02:17.120 |
|
それは本当にいいことだと思うよ。 |
|
|
|
02:17.120 --> 02:18.560 |
|
それは素晴らしいことだと思う。 |
|
|
|
02:19.520 --> 02:23.810 |
|
よりシンプルで、 データ・サイエンスの読者には的確だ。 |
|
|
|
02:23.810 --> 02:30.410 |
|
フロンティアのモデルたちが思いつくギャグより、 その方がいいと思うよ。 |
|
|
|
02:30.830 --> 02:33.320 |
|
ああ、 よくやった。 |
|
|
|
02:33.320 --> 02:34.520 |
|
ラマ 3. 1. |
|
|
|
02:34.730 --> 02:45.320 |
|
ええと、 念頭に置いておかなければならないのは、 もちろん、 ここで扱っているのは80億パラメータのバージョンのラマ3だということだ。 |
|
|
|
02:45.320 --> 02:45.320 |
|
1、 |
|
|
|
02:45.320 --> 02:46.730 |
|
つまり最小のバージョンで、 それを4ビットに量子化し、 さらに2倍に量子化した。 |
|
|
|
02:46.910 --> 02:54.740 |
|
ええと、 つまり、 この超スリム版のモデルで、 完全に立派なジョークを言っただけなんだ。 |
|
|
|
02:55.710 --> 02:57.840 |
|
楽しんでもらえたかな? |
|
|
|
02:57.990 --> 03:01.500 |
|
次にすることは、 メモリを解放するためのクリーンアップだ。 |
|
|
|
03:01.500 --> 03:06.570 |
|
そうでなければ、 このまま走り続ければ、 さまざまなモデルがあっという間にGPUを使い果たしてしまう。 |
|
|
|
03:06.660 --> 03:13.320 |
|
このようなことが起こるかもしれないが、 その場合はいつでもランタイムのセッションを再起動して、 |
|
|
|
03:13.320 --> 03:19.110 |
|
インポートを行った後、 中断したところから続けることができる。 |
|
|
|
03:19.620 --> 03:27.450 |
|
だから次にすることは、 今やったことをすべて、 そのすべてを行う小さな関数にパッケージ化することだ。 |
|
|
|
03:27.450 --> 03:34.770 |
|
この関数は、 モデル名を受け取り、 通常の辞書のリストをメッセージします。 |
|
|
|
03:34.770 --> 03:38.970 |
|
そして、 今やったことを修正する方法として、 これを一行ずつ見ていこう。 |
|
|
|
03:39.000 --> 03:48.060 |
|
まず、 オート・トークナイザー・クラスを使用して、 作業中のモデルに基づいて新しいトークナイザーを作成します。 |
|
|
|
03:48.990 --> 03:54.860 |
|
この行は、 パディング・トークンを文末トークンと同じにするためのものである。 |
|
|
|
03:54.890 --> 03:57.710 |
|
このようなことは、 お決まりの定型文のようなものだ。 |
|
|
|
03:57.950 --> 03:58.970 |
|
そしてこれだ。 |
|
|
|
03:58.970 --> 04:00.890 |
|
私たちはそれを知っているし、 よく知っている。 |
|
|
|
04:01.130 --> 04:08.900 |
|
ここで、 このトークナイザーに適したチャットテンプレートをリストのメッセージに適用します。 |
|
|
|
04:08.900 --> 04:13.220 |
|
そして、 一連のトークンを返してくる。 |
|
|
|
04:13.220 --> 04:20.240 |
|
それをGPUに載せ、 入力に割り当てる。 |
|
|
|
04:20.510 --> 04:21.590 |
|
これは新しい。 |
|
|
|
04:21.590 --> 04:29.120 |
|
だから、 もうひとつ、 ちょっとした技を加えて、 結果をストリーミングで返そうと思うんだ。 |
|
|
|
04:29.240 --> 04:33.320 |
|
そして、 Huggingfaceライブラリーはそれもサポートしている。 |
|
|
|
04:33.320 --> 04:36.290 |
|
テキストストリーマーというものを作るんだ。 |
|
|
|
04:36.320 --> 04:43.190 |
|
トークンをストリームバックする際に、 トークンをテキストに変換する必要があるからだ。 |
|
|
|
04:43.220 --> 04:46.130 |
|
どのトークナイザーを使っているかを知る必要がある。 |
|
|
|
04:46.130 --> 04:50.240 |
|
だから、 それを提供し、 そして行動する。 |
|
|
|
04:50.450 --> 04:52.400 |
|
ええと、 まずモデルを手に入れます。 |
|
|
|
04:52.400 --> 04:55.200 |
|
これは因果LMの自動モデルである。 |
|
|
|
04:55.200 --> 04:58.770 |
|
これはオート・トークナイザーに相当する。 |
|
|
|
04:58.770 --> 05:04.350 |
|
しかし、 事前に訓練されたモデルをロードするには、 モデル名を指定する。 |
|
|
|
05:04.470 --> 05:07.590 |
|
デバイス・マップはオート、 つまりユーザーGPUを意味する。 |
|
|
|
05:07.590 --> 05:22.650 |
|
もし4ビットの数値があれば、 その数値のコンフィギュレーションを4ビット・ダブル量子化NFに設定する。 |
|
|
|
05:22.650 --> 05:28.710 |
|
そして、 bfloat16は計算、 つまりデータ型である。 |
|
|
|
05:29.010 --> 05:34.170 |
|
そして、 今こそビジネスモデルのドットジェネレーションの時だ。 |
|
|
|
05:34.170 --> 05:35.460 |
|
それが大きな方法だ。 |
|
|
|
05:35.460 --> 05:42.540 |
|
そしてインプットを渡すと、 最大80の新しいトークンを生成し、 ストリーマに渡す。 |
|
|
|
05:42.570 --> 05:49.020 |
|
これが、 出力をストリーミングし、 クリーンアップする部分だ。 |
|
|
|
05:49.530 --> 05:55.550 |
|
つまり、 この関数は、 前にやったことをすべてラップし、 さらにストリーミングを追加したものだ。 |
|
|
|
05:55.550 --> 06:03.350 |
|
それで、 今書いた関数を使って、 単純にファイ3をメッセージで呼び出してみよう。 |
|
|
|
06:03.350 --> 06:06.380 |
|
これでファイ3が再びロードされることになる。 |
|
|
|
06:06.410 --> 06:12.920 |
|
初めてロードするので、 少し時間がかかります。 |
|
|
|
06:12.980 --> 06:16.370 |
|
ええと、 すでにロードしてあるので、 ディスクにキャッシュされています。 |
|
|
|
06:16.460 --> 06:20.660 |
|
ええと、 だから、 ハグした顔から全部を再ダウンロードする必要はないんだ。 |
|
|
|
06:20.690 --> 06:21.380 |
|
ハブだ。 |
|
|
|
06:21.710 --> 06:25.730 |
|
そうしている間に、 ロードするためにまだ少しやることがあるんだ。 |
|
|
|
06:25.730 --> 06:27.140 |
|
そうだな。 |
|
|
|
06:27.170 --> 06:32.180 |
|
ああ、 資源を見ることができると言おうと思ったんだけど、 あっという間に終わってしまいそうだから、 |
|
|
|
06:32.180 --> 06:34.580 |
|
ストリーミングで戻ってきてほしいんだ。 |
|
|
|
06:34.610 --> 06:39.050 |
|
そして、 がっかりされるかもしれないという事実を覚悟しておくべきだと思うんだ。 |
|
|
|
06:39.560 --> 06:50.400 |
|
少なくともプロンプトを使った限りでは、 ファイ3にジョークを言わせることはできなかった。 |
|
|
|
06:50.400 --> 06:59.010 |
|
むしろ、 データ・サイエンティストが話していそうな一般的な事柄をいくつか挙げて、 とりとめもなく説明している。 |
|
|
|
06:59.040 --> 07:04.320 |
|
このプロンプトを、 53歳にとってもう少し自己主張の強いものに改善できるか、 |
|
|
|
07:04.320 --> 07:08.700 |
|
それとも単に53歳がやりたがらないだけなのかはわからない。 |
|
|
|
07:08.970 --> 07:14.040 |
|
53は実に多くのことを立派にこなすが、 この特別な仕事はできない。 |
|
|
|
07:14.040 --> 07:19.680 |
|
だから、 他のモデルも試してみてほしい。 |
|
|
|
07:19.680 --> 07:28.860 |
|
また、 53にジョークを言わせるために促し方を改善できるかどうか、 あるいはジョーク好きでないなら、 得意なことをいくつか見つけられるかどうかも見てみよう。 |
|
|
|
07:28.860 --> 07:35.130 |
|
Llmsの使用方法など、 我々がllmsに尋ねた他の質問にも、 実にうまく答えてくれるだろう。 |
|
|
|
07:35.700 --> 07:41.070 |
|
それが53の結果だ。 |
|
|
|
07:41.070 --> 07:43.410 |
|
さて、 ジェマはどうするか。 |
|
|
|
07:43.410 --> 07:51.290 |
|
Gemmaはシステム・プロンプトをサポートしていないので、 |
|
|
|
07:51.320 --> 08:02.270 |
|
このようにユーザー・プロンプトを渡さなければならない。 |
|
|
|
08:02.540 --> 08:06.500 |
|
そして、 ジェンマを試してみよう。 |
|
|
|
08:06.500 --> 08:08.780 |
|
もちろん、 20億のモデルだ。 |
|
|
|
08:08.780 --> 08:10.130 |
|
とても小さなモデルだ。 |
|
|
|
08:10.130 --> 08:16.850 |
|
非常に小さなモデルであることに加えて、 私たちはそれを4ビットに量子化し、 また量子化している。 |
|
|
|
08:16.850 --> 08:29.270 |
|
というわけで、 この時点では非常にスリムなモデルを扱っていて、 メモリもそれほど消費しないし、 読み込みも早くてジョークもすぐに言えるはずだ。 |
|
|
|
08:32.330 --> 08:34.130 |
|
そこにジョークがある。 |
|
|
|
08:34.130 --> 08:37.400 |
|
データサイエンティストはなぜ統計学者と別れたのか? |
|
|
|
08:37.400 --> 08:41.240 |
|
p値に関する意見の相違が多すぎたからだ。 |
|
|
|
08:41.270 --> 08:44.540 |
|
p値に関する、 またオタクっぽいジョークだよ。 |
|
|
|
08:44.570 --> 08:46.130 |
|
私には理解できない。 |
|
|
|
08:46.140 --> 08:49.470 |
|
でも、 もしかしたら私が見落としている明白な何かがあるかもしれない。 |
|
|
|
08:49.620 --> 08:50.790 |
|
ああ、 ようこそ。 |
|
|
|
08:50.790 --> 08:53.040 |
|
どなたか教えてください。 |
|
|
|
08:53.370 --> 08:53.760 |
|
ええと。 |
|
|
|
08:53.760 --> 08:56.820 |
|
それでも、 親切でフレンドリーなところがいい。 |
|
|
|
08:56.820 --> 08:57.540 |
|
もうひとつある。 |
|
|
|
08:57.540 --> 08:59.490 |
|
またジョークを聞きたいなら言ってくれ。 |
|
|
|
08:59.640 --> 09:02.970 |
|
これを走らせたら、 もっといいジョークが飛び出すかもしれないよ。 |
|
|
|
09:03.120 --> 09:07.890 |
|
あー、 でも、 あー、 確かに、 あー、 楽しい、 あー、 トーンだ。 |
|
|
|
09:07.890 --> 09:15.180 |
|
そして、 ジェマ2世はデータ・サイエンスに関連した、 称賛に値する仕事をしたと思う。 |
|
|
|
09:15.480 --> 09:21.780 |
|
そして、 特に、 この小さなモデルをさらに量子化していることを思い出してほしい。 |
|
|
|
09:21.780 --> 09:28.440 |
|
ジェマ2世は素晴らしい結果を残したと思うが、 私が使っている量子を使えば、 |
|
|
|
09:28.440 --> 09:36.150 |
|
もっと優れた結果が出るだろうし、 パイ3世でももっと良い結果が出るかもしれない。 |
|
|
|
09:36.150 --> 09:41.310 |
|
それから、 ミックスドトライアルモデルを選ぼうが、 もう少しスリムで自分も使えるものを選ぼうが、 |
|
|
|
09:41.340 --> 09:44.370 |
|
いずれにせよ、 いい結果が得られると想像している。 |
|
|
|
09:44.510 --> 09:49.580 |
|
また、 彼らが苦手とする数学の質問をしてみるのもいいだろう。 |
|
|
|
09:49.610 --> 09:52.640 |
|
難しい数学を扱っているのなら。 |
|
|
|
09:52.790 --> 10:02.840 |
|
しかし、 私はラマ3世にかなり難しい質問をしてみた。 1以前は全く問題なかった。 |
|
|
|
10:03.200 --> 10:09.050 |
|
いずれにせよ、 今はこれらのモデルを使って、 いろいろなことを試してみる時だ。 |
|
|
|
10:09.080 --> 10:11.450 |
|
あなたはオープンソースのモデルを使っている。 |
|
|
|
10:11.540 --> 10:13.490 |
|
APIにコストはかかっていない。 |
|
|
|
10:13.520 --> 10:16.610 |
|
あなたが支払うコストは、 使い切った場合だけです。 |
|
|
|
10:16.610 --> 10:25.850 |
|
フリー・コラボを利用していない方で、 グーグル・コラボのユニットを使い切ろうとしている方。 |
|
|
|
10:26.030 --> 10:32.240 |
|
ええと、 私が使っているのは1. 毎時76台。 |
|
|
|
10:32.240 --> 10:40.250 |
|
というわけで、 これを使って作業したり、 抱きつき顔トランスフォーマー・ライブラリーを使ってオープンソースのモデルで推論を楽しんだりする時間は、 |
|
|
|
10:40.250 --> 10:43.790 |
|
本当にたくさんある。
|
|
|