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

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