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.
439 lines
16 KiB
439 lines
16 KiB
WEBVTT |
|
|
|
00:00.680 --> 00:06.440 |
|
トレーニング・ロスに関するこの満足のいくチャートを見て、 トレーニング・ロスが減少していくのを見たところで、 |
|
|
|
00:06.440 --> 00:07.640 |
|
ここでお別れだ。 |
|
|
|
00:07.670 --> 00:09.800 |
|
一日中眺めていても飽きない。 |
|
|
|
00:09.800 --> 00:14.270 |
|
あー、 でも、 他のチャートに移ろう。 |
|
|
|
00:14.480 --> 00:18.170 |
|
もう一度、 この図に戻ってみよう。 |
|
|
|
00:18.590 --> 00:22.190 |
|
ええと、 すでにご覧になったかもしれませんが、 これを指摘したいと思います。 |
|
|
|
00:22.190 --> 00:24.110 |
|
これが学習率である。 |
|
|
|
00:24.110 --> 00:25.670 |
|
爆破しよう。 |
|
|
|
00:27.050 --> 00:34.250 |
|
でも、 さっき言ったように、 ウエイトとバイアスを見ると、 |
|
|
|
00:34.250 --> 00:39.830 |
|
もっとはっきり見えるんだ。 |
|
|
|
00:39.890 --> 00:55.130 |
|
これは、 4つのエポックの初めから終わりまで、 つまりほぼ4つのエポックの終わりまでは学習率がどのように変化したかを示しています。 |
|
|
|
00:55.160 --> 00:58.430 |
|
そしてご覧いただけるのは、 学習率がゼロから始まっていることだ。 |
|
|
|
00:58.460 --> 01:03.720 |
|
その後、 ここまで暖かくなったので、 上昇した。 |
|
|
|
01:03.870 --> 01:15.210 |
|
そうすると、 最初はゆっくりで、 だんだんとスムーズになっていくのがわかるだろう。 |
|
|
|
01:15.210 --> 01:17.460 |
|
そして最後は尻すぼみになる。 |
|
|
|
01:17.460 --> 01:23.430 |
|
そして、 4つのエポックが終わったときに、 ちょうどゼロになるという考え方だ。 |
|
|
|
01:23.430 --> 01:25.710 |
|
しかし、 私は第4エポックの終わりには間に合わなかった。 |
|
|
|
01:25.740 --> 01:30.900 |
|
そして、 1つのエポックを選択した場合、 その1つのエポックのチャート全体が表示される。 |
|
|
|
01:30.930 --> 01:37.860 |
|
設定したエポック数を受け取り、 その数のエポックにわたって学習率を平滑化するだけだ。 |
|
|
|
01:38.220 --> 01:42.660 |
|
ええと、 つまり、 これはまさにそのポイントを示しているんだ。 |
|
|
|
01:42.660 --> 01:48.960 |
|
そして、 現在のバッチを表す青い線がこの一番上にあるのがわかるだろう。 |
|
|
|
01:49.020 --> 01:53.010 |
|
私たちには平坦に見えたが、 それは私たちが一番上にいたからだ。 |
|
|
|
01:53.010 --> 01:59.310 |
|
しかし、 そのうちに、 前任者がそうであったように、 スムーズに降りてくるだろう。 |
|
|
|
02:00.580 --> 02:06.220 |
|
それから、 もうひとつ言っておきたいことがあるんだけど、 ここでいろいろな走りを見ているときに、 |
|
|
|
02:06.220 --> 02:12.250 |
|
この目のアイコンを使って何を見るかを決めることができるんだ。 |
|
|
|
02:12.250 --> 02:16.690 |
|
そして、 その間にあるこの1本には目を入れていなかった。 |
|
|
|
02:16.720 --> 02:29.230 |
|
さて、 これはどういうことかというと、 私のこのバッチがグーグルによってインスタンスから蹴落とされた後、 残酷にもグーグルによってインスタンスから蹴落とされたのだ。 |
|
|
|
02:29.230 --> 02:35.230 |
|
私は腹が立ったので、 その続きをして、 もう2、 3エポック走ってみようと思った。 |
|
|
|
02:35.230 --> 02:38.470 |
|
結果が悪くなっても、 何が起こったのか見たかった。 |
|
|
|
02:38.500 --> 02:44.770 |
|
極端な話、 4回目のエポックで結果が悪くなったのは単なる異常ではないことを確かめたかった。 |
|
|
|
02:44.770 --> 02:47.110 |
|
第5エポックになれば、 急に良くなるかもしれない。 |
|
|
|
02:47.110 --> 02:49.360 |
|
だからせめて、 そのプレーを少しは見たかった。 |
|
|
|
02:49.540 --> 02:52.540 |
|
では、 それをお見せしましょう。 |
|
|
|
02:52.570 --> 02:56.080 |
|
また始めたので、 ちょっと混乱しそうだ。 |
|
|
|
02:56.080 --> 02:58.960 |
|
このまま右に外れることはない。 |
|
|
|
02:58.960 --> 03:01.430 |
|
左から始まるよ。 |
|
|
|
03:01.430 --> 03:06.500 |
|
だから、 それが最初のトレーニングステップであるかのように見られることを念頭に置いておく必要がある。 |
|
|
|
03:06.500 --> 03:11.720 |
|
しかし実際には、 これからお見せするのは、 この紫の線の右側にあるものだ。 |
|
|
|
03:11.720 --> 03:12.350 |
|
見てみよう。 |
|
|
|
03:12.380 --> 03:14.180 |
|
さて、 これはこれは。 |
|
|
|
03:14.180 --> 03:15.530 |
|
そして、 そこにある。 |
|
|
|
03:15.530 --> 03:17.600 |
|
では、 これを爆発させてみよう。 |
|
|
|
03:18.050 --> 03:23.630 |
|
だから、 こっちの方が本当にあるべきだということがはっきりすればいいんだけどね。 |
|
|
|
03:23.630 --> 03:27.080 |
|
それを右に寄せることができるはずだ。 |
|
|
|
03:27.530 --> 03:34.130 |
|
というのも、 SFTのトレーナーをここで中断したところから再開したら、 こうなったのだ。 |
|
|
|
03:34.130 --> 03:47.990 |
|
そして、 おわかりのように、 これは基本的に第5の、 もうひとつの完全なエポックである。 |
|
|
|
03:47.990 --> 03:51.290 |
|
そして、 これは第6エポック全体のようなものだ。 |
|
|
|
03:51.410 --> 03:57.530 |
|
そして、 もうひとつは、 6番目のエポックが始まったときと、 |
|
|
|
03:57.530 --> 04:04.100 |
|
この時点で、 間違いなく非常に疑わしい領域にある。 |
|
|
|
04:04.250 --> 04:05.810 |
|
損失が少なすぎるように見える。 |
|
|
|
04:05.810 --> 04:12.710 |
|
そして案の定、 これらのバージョンのモデルを使ってテストしてみると、 |
|
|
|
04:12.710 --> 04:19.010 |
|
どれもこのあたりで切り落としたモデルよりも性能が劣っていた。 |
|
|
|
04:19.460 --> 04:21.890 |
|
だから、 やる価値のあるテストだった。 |
|
|
|
04:21.890 --> 04:30.080 |
|
ただ運が悪かったのではなく、 本当にオーバーフィッティングで、 もう有益な結果が得られていないのだと納得する必要があった。 |
|
|
|
04:30.080 --> 04:31.910 |
|
そして、 それが証明された。 |
|
|
|
04:32.210 --> 04:35.090 |
|
だから、 いいテストになった。 |
|
|
|
04:35.090 --> 04:40.220 |
|
なぜなら、 もしフル・モンティでこの大きなバージョンのモデルで走ると決めたなら、 |
|
|
|
04:40.250 --> 04:48.830 |
|
3つのエポックを超えない方がいいということがわかるからだ。 |
|
|
|
04:48.830 --> 04:57.290 |
|
私の経験では、 ハイパーパラメーターを変えてみて何か違うものを発見しない限り、 その使い道はない。 |
|
|
|
04:58.500 --> 05:04.860 |
|
それから、 最後にお見せするのは、 他のチャートやウェイト、 バイアスをいろいろと弄ってみることだ。 |
|
|
|
05:04.860 --> 05:05.760 |
|
探検することはたくさんある。 |
|
|
|
05:05.760 --> 05:09.930 |
|
グラデーションそのものを見ることもできるし、 それはかなりのウサギの穴だ。 |
|
|
|
05:10.020 --> 05:17.220 |
|
そして、 自分が見ているものを理解し、 そこから何かを学ぶには、 少し、 あー、 掘り下げて研究する必要がある。 |
|
|
|
05:17.220 --> 05:26.670 |
|
そして理想的には、 勾配がゼロになるような状況に陥らないようにすることだ。 |
|
|
|
05:26.880 --> 05:29.700 |
|
ええと、 つまり、 あなたはもう学んでいないということです。 |
|
|
|
05:29.700 --> 05:36.270 |
|
勾配がゼロであれば、 モデルはもはや学習しておらず、 学習プロセスを続ける意味がない。 |
|
|
|
05:36.270 --> 05:40.740 |
|
つまり、 勾配がゼロにならないように気をつけたいし、 |
|
|
|
05:40.740 --> 05:49.920 |
|
勾配が吹っ飛んで高くなりすぎないように気をつけたい。 |
|
|
|
05:49.920 --> 05:53.820 |
|
あー、 あなたのモデルは、 あー、 生産的な方法で学んでいない。 |
|
|
|
05:53.820 --> 05:59.740 |
|
ウェイトとバイアスの勾配を見る際には、 このような点に注意する必要がある。 |
|
|
|
06:00.370 --> 06:03.730 |
|
でも、 最後に見せたかったのは、 ハグする顔だった。 |
|
|
|
06:03.910 --> 06:15.520 |
|
このモデルは、 私がすべてのエポックについて実行したPricerモデルのバージョンです。 |
|
|
|
06:15.700 --> 06:16.930 |
|
これが見える? |
|
|
|
06:16.930 --> 06:21.880 |
|
ランの名前は、 日付と時間から私が組み立てたものだ。 |
|
|
|
06:21.940 --> 06:24.880 |
|
ええと、 39で終わるんだ。 |
|
|
|
06:25.030 --> 06:26.440 |
|
秒数。 |
|
|
|
06:26.440 --> 06:28.690 |
|
ああ、 そのことは頭の片隅に置いておいてくれ。 |
|
|
|
06:28.690 --> 06:34.480 |
|
ハグ顔になったら、 アバターメニューから自分の名前に移動する。 |
|
|
|
06:34.600 --> 06:40.180 |
|
モデルやデータセットがあれば、 スペースが表示されます。 |
|
|
|
06:40.180 --> 06:42.700 |
|
私が1つか2つ持っているのがわかるだろう。 |
|
|
|
06:43.120 --> 06:46.990 |
|
プライサーに関しては、 1、 2度実行したことがある。 |
|
|
|
06:47.170 --> 06:55.870 |
|
ええと、 ええと、 これらはそれぞれ、 異なるプライサー・ランのひとつを表す異なるレポを表している。 |
|
|
|
06:55.960 --> 07:01.670 |
|
そして、 私は、 この1つのレポの中にすべての異なるエポックとすべてを持つことができるように、 |
|
|
|
07:01.700 --> 07:05.420 |
|
それぞれの実行を別々のレポとして管理したいんだ。 |
|
|
|
07:05.420 --> 07:13.310 |
|
だから、 この139番は、 4つ、 3つ半のエポックに登場した大物だと思う。 |
|
|
|
07:13.310 --> 07:22.730 |
|
この中をクリックすると、 モデルのページが表示され、 ファイルとバージョンに移動すると、 ここで見ているのは基本的にgitで、 |
|
|
|
07:22.730 --> 07:31.070 |
|
モデルに関連するファイルがあるレポを見ていることになります。 |
|
|
|
07:31.340 --> 07:39.020 |
|
ええと、 先日もお話したように、 ここでのビジネスはこのファイル、 セーフ・テンソルであることがお分かりいただけると思う。 |
|
|
|
07:39.020 --> 07:50.690 |
|
そしてそのファイルは109MBで、 これは我々が使っているアダプターが32に設定されているサイズだ。 |
|
|
|
07:50.720 --> 07:55.550 |
|
計算すると、 109MB分のウエイトになる。 |
|
|
|
07:55.550 --> 07:57.400 |
|
それがこのファイルのすべてだ。 |
|
|
|
07:57.400 --> 07:59.710 |
|
ここは安全な時制だ。 |
|
|
|
08:00.130 --> 08:06.700 |
|
それに、 他にもいくつか見ることができるものがあるんだ。 |
|
|
|
08:06.730 --> 08:15.460 |
|
アダプティブ・コンフィグ。 jsonは、 Loraの微調整に使っているアダプターの情報です。 |
|
|
|
08:15.460 --> 08:22.810 |
|
例えば、 ここにはターゲット・モジュールが格納されており、 R 32という値が表示されている。 |
|
|
|
08:22.840 --> 08:25.450 |
|
ロラのトレーニングを使っていると書いてある。 |
|
|
|
08:25.660 --> 08:32.230 |
|
それで、 ベースモデルの名前は......ラマ3。 180億ドルがそこにある。 |
|
|
|
08:32.590 --> 08:39.130 |
|
それで、 このモデルに保存されているすべての情報を知ることができる。 |
|
|
|
08:39.160 --> 08:43.360 |
|
ただ、 もうひとつ指摘したかったのは、 この16人のコミットメントだ。 |
|
|
|
08:43.360 --> 08:46.090 |
|
これはコミット履歴を示している。 |
|
|
|
08:46.090 --> 08:53.170 |
|
そして基本的に5000ステップごとに、 ええと、 あなたが見たコードは保存されていた。 |
|
|
|
08:53.170 --> 08:55.600 |
|
これは我々のモデルをハブへと押しやるものだった。 |
|
|
|
08:55.600 --> 08:57.940 |
|
これはトレーニング・パラメーターで設定したものだ。 |
|
|
|
08:57.940 --> 09:00.760 |
|
つまり、 5000歩ごとに保存されていたわけだ。 |
|
|
|
09:00.760 --> 09:05.410 |
|
つまり、 これらのモデルのどれでもロードしてテストできるということだ。 |
|
|
|
09:05.410 --> 09:08.080 |
|
こうして、 最も良いパフォーマンスを発揮しているものを選ぶことができるんだ。 |
|
|
|
09:08.110 --> 09:10.000 |
|
それぞれのチェックポイントがある。 |
|
|
|
09:10.000 --> 09:11.890 |
|
そして、 これらはいくつでもできる。 |
|
|
|
09:12.070 --> 09:20.980 |
|
それを使って、 モデルがトレーニングのその時点に戻った瞬間を再現することができるんだ。 |
|
|
|
09:21.040 --> 09:26.110 |
|
そして、 私のさまざまなトレーニングのすべてを、 このレポジトリの異なるリビジョン、 |
|
|
|
09:26.140 --> 09:32.740 |
|
異なるバージョン、 異なる価格として、 このレポジトリに置くことができる。 |
|
|
|
09:32.740 --> 09:33.970 |
|
でも、 そうするととても散らかってしまう。 |
|
|
|
09:33.970 --> 09:38.620 |
|
そのため、 それぞれのレポを独立させた。 |
|
|
|
09:38.620 --> 09:45.430 |
|
そして、 さまざまなバッチステップが、 コミットのさまざまな履歴としてここに表示される。 |
|
|
|
09:45.580 --> 09:48.250 |
|
それは組織的でいい方法だと思う。 |
|
|
|
09:48.670 --> 09:54.400 |
|
これがHuggingfaceのハブでモデルを見る方法だ。 |
|
|
|
09:54.400 --> 09:56.170 |
|
そうだろうね。 |
|
|
|
09:56.170 --> 09:57.820 |
|
これが今走っているものだ。 |
|
|
|
09:57.820 --> 09:59.290 |
|
15分前に更新されました。 |
|
|
|
09:59.290 --> 10:02.440 |
|
それで、 このファイルとバージョンに入るんだ。 |
|
|
|
10:02.440 --> 10:03.190 |
|
そうだろう。 |
|
|
|
10:03.220 --> 10:05.320 |
|
はい、 すでにバージョンを保存しています。 |
|
|
|
10:05.320 --> 10:06.610 |
|
我々は5000のステップを踏まなければならない。 |
|
|
|
10:06.640 --> 10:10.510 |
|
つまり、 最初のコミットがあったので、 1つのバージョンか2つのコミットということになる。 |
|
|
|
10:10.510 --> 10:14.950 |
|
そしてステップ5000は15分前に保存されたばかりだ。 |
|
|
|
10:14.980 --> 10:17.110 |
|
だから、 すでに動いているモデルがある。 |
|
|
|
10:17.110 --> 10:20.890 |
|
そして、 もしあなたが私と同じ時期にこれをやっていたなら、 同じような境遇にあり、 |
|
|
|
10:20.920 --> 10:26.560 |
|
私が話している間にこのモデルのバージョンがHuggingfaceのハブにアップロードされていることだろう。 |
|
|
|
10:26.950 --> 10:30.070 |
|
そして実際に、 すぐにテストすることができる。 |
|
|
|
10:30.070 --> 10:32.350 |
|
トレーニングが終わるのを待つ必要はない。 |
|
|
|
10:32.770 --> 10:34.780 |
|
うーん、 そうだな。 |
|
|
|
10:34.810 --> 10:42.940 |
|
トレーニングは進行中だが、 ちょっと理解しがたい敗戦がここにある。 |
|
|
|
10:42.970 --> 10:50.290 |
|
重みとバイアスが美しく可視化され、 モデルそのものがハブに保存されるのも見たことがある。 |
|
|
|
10:50.290 --> 10:53.650 |
|
そしてこれがトレーニングの経験だ。 |
|
|
|
10:53.680 --> 10:55.640 |
|
何時間でもできるんだ。 |
|
|
|
10:55.640 --> 10:59.270 |
|
それを何時間も続けてきた。 |
|
|
|
10:59.270 --> 11:03.710 |
|
実際、 このコースの一番最初に、 あそこにあるウェイトとバイアスが表示されている画面と、 |
|
|
|
11:03.710 --> 11:16.430 |
|
さっきお見せしたチャートは、 ええと、 このチャートは、 一番最初にあそこにあったチャートだと申し上げました。 |
|
|
|
11:16.430 --> 11:18.320 |
|
今はこのグラフが表示されている。 |
|
|
|
11:18.470 --> 11:26.330 |
|
それで、 このコースを作り始めてから数週間の間、 その様子を見ていたんだ。 |
|
|
|
11:26.450 --> 11:28.730 |
|
とても楽しいよ。 |
|
|
|
11:28.820 --> 11:37.040 |
|
トレーニングの様子を見たり、 モデルのバージョンがハブにアップロードされるのを見たり。 |
|
|
|
11:37.070 --> 11:41.090 |
|
あとは走りきるだけだ。 |
|
|
|
11:41.090 --> 11:51.770 |
|
そして明日、 私たちがこのモデルを評価し、 私たち自身の垂直モデルの微調整がどのように行われたかを確認するために来てもらう。 |
|
|
|
11:52.100 --> 11:54.020 |
|
うーん、 でも今日はこれで終わりにしよう。 |
|
|
|
11:54.020 --> 11:55.400 |
|
スライドに戻る。
|
|
|