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 スライドに戻る。