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.
 
 

577 lines
20 KiB

WEBVTT
00:00.320 --> 00:07.100
こうして今、 前日にキックオフしたのと同じラボに戻ってきた。
00:07.100 --> 00:12.890
今は第7週3日目というやや誤解を招きそうな名前だが、 我々はもちろん第7週4日目にいるからだ。
00:13.190 --> 00:18.170
でも、 何かで止めてしまうことを恐れて、 触れないようにしているんだ。
00:18.170 --> 00:28.070
GPUラムは、 天井の38に迫る勢いで釘付けになっている。 40GBのうち2GB。
00:28.070 --> 00:29.600
しかし、 幸いなことにそれは変わらない。
00:29.600 --> 00:30.650
上がらない。
00:30.980 --> 00:36.440
そして、 各バッチステップのプリントアウトをご覧ください。
00:36.440 --> 00:40.430
現在、 バッチステップ4350だ。
00:40.640 --> 00:47.600
うーん、 そして、 もしズームアップしきったら、 うーん、 もう一度言うけど、 うっかりバッチを止めてしまわないように、
00:47.630 --> 00:49.580
慎重にやっているんだ。
00:49.610 --> 00:55.310
この3つのエポックを表す帯は、 まだほんの少ししか入っていないことがわかるだろう。
00:55.310 --> 01:01.580
そこでひとつ、 おそらくすべてのデータを完全に、 あー、 一通り調べてみる。
01:01.820 --> 01:05.180
ええと、 バッチステップにいるのがわかるだろう。
01:05.360 --> 01:11.360
あまりに早く過ぎてしまうので、 数字は言えませんが、 10回分です。
01:11.510 --> 01:20.690
この10万という丸い数字のうち、 なぜこんなに丸いのか不思議に思うかもしれない。
01:20.720 --> 01:24.290
それは偶然の一致なんだ。
01:24.350 --> 01:33.380
ええと、 40万点のデータがありますが、 1ステップで16点ずつです。
01:33.410 --> 01:40.430
だから、 このつまらない計算のために電卓で400,000を16で割ってみる。
01:40.730 --> 01:45.920
それにエポック数を掛けるんだ。
01:46.160 --> 01:51.950
エポックは3つだと思っていたが、 4つあるようだ。
01:51.980 --> 01:54.050
私は4エポックのままにしておいた。
01:54.200 --> 01:56.270
ああ、 そうだね。
01:56.360 --> 01:59.630
それを4倍して4エポックとする。
01:59.820 --> 02:10.530
その証拠に、 10万台のカメラがある。
02:10.530 --> 02:15.120
単なる乱数ではなく、 ランダムに丸められた数字だ。
02:15.120 --> 02:25.830
実際、 これは40万点のデータを16のバッチにまとめ、 4回繰り返して行うバッチ・ステップの数そのものである。
02:26.160 --> 02:29.550
ええと、 そうすると、 それが止まるんだ。
02:29.550 --> 02:37.770
この数字を見ただけでも、 かなり高いトレーニングロスからスタートし、 その数字がかなり下がっていることがわかるだろう。
02:37.770 --> 02:44.490
しかし、 数字が上下に動き回っているため、 ここから何が起こっているのかを正確に判断するのは難しい。
02:44.700 --> 02:46.770
うーん、 トレンドの感覚をつかむのは難しいですね。
02:46.770 --> 02:55.500
バッチの進捗状況を視覚化し、 異なる実行の比較などを可能にするツールがあればいいのだが......。
02:55.530 --> 02:59.880
もちろん、 そのようなツールはあるし、 重みもバイアスもある。
03:00.090 --> 03:03.060
ええと、 そしてこれが僕らが走った結果なんだ。
03:03.060 --> 03:04.830
これが今起きていることだ。
03:05.070 --> 03:09.750
そして、 これは何が起こっているかを示しているんだ。
03:09.750 --> 03:10.020
だから
03:10.020 --> 03:12.930
だから、 このトレーニングの損失は本物だ。
03:12.930 --> 03:14.610
これが私たちが本当に見たいことなのだ。
03:14.640 --> 03:17.550
このパネルを編集して、 もう少し見せてもらおう。
03:17.730 --> 03:26.160
このY軸はゼロまで下がっていて、 ゼロはゼロロスとなり、 完璧を意味する。
03:26.160 --> 03:37.710
これは、 モデルが常に100%の信頼度で次のトークンを予測し、 100%の信頼度で予測した次のトークンが正しい次のトークンであることを意味する。
03:37.830 --> 03:40.350
うーん、 それはあり得ない場所だね。
03:40.380 --> 03:45.450
実際、 1を大きく下回ると疑われる。 5.
03:45.480 --> 03:49.950
一般的には、 これは経験則のようなものだが、 しかし、 一般的に言えば、 それは素晴らしい、 あー、
03:49.950 --> 03:52.080
持っているべき損失のようなものだろう。
03:52.080 --> 03:57.630
そしてその下には、 オーバーフィッティングが起こっていないかどうかを考えるきっかけになるかもしれない。
03:57.840 --> 04:03.730
この軸を変えて、 Y軸の最小値を1つにしてみよう。
04:03.760 --> 04:04.540
まあ、 何とかなるさ。
04:04.570 --> 04:05.230
我々はもっとうまくやれる。
04:05.230 --> 04:12.250
1のようにすればいい。 4か何かで、 ここで何が起こっているのかがわかるようにするんだ。
04:12.430 --> 04:20.530
しかし、 この初期の段階でも、 このでこぼこした線が改善傾向にあることは明らかだ。
04:20.560 --> 04:27.580
GPTと微調整を行った時とは異なり、 上下に揺れ動き、
04:27.580 --> 04:32.530
トレンドは見られなかった。
04:32.530 --> 04:36.190
また、 スムージングを適用して、 どのように見えるか見てみよう。
04:36.310 --> 04:37.600
つまり、 それは明らかに違う。
04:37.600 --> 04:40.450
つまり、 それは向上しているラインなのだ。
04:40.450 --> 04:42.700
平滑化係数を適用すると
04:42.730 --> 04:45.820
さて、 なぜこれが上下するのか?
04:45.970 --> 04:47.530
つまり、 本当に場合によるんだ。
04:47.530 --> 04:55.270
これらのポイントはそれぞれ、 16のデータポイント、 16のプロンプト、 その最後に予測するものを1つに押し込んだもので、
04:55.270 --> 05:00.940
ランダムにごちゃ混ぜになっているんだ。
05:00.940 --> 05:03.190
つまり、 16人の中からランダムに選ばれているわけだ。
05:03.520 --> 05:06.940
それで、 どの製品が16番に押し込まれるかは誰にもわからない。
05:06.970 --> 05:12.070
もしかしたら、 本当に高価な製品かもしれない。
05:12.070 --> 05:14.410
だから雑音は多い。
05:14.500 --> 05:20.530
それぞれのバッチステップの構成が異なるので、
05:20.530 --> 05:29.620
少しノイズがあるのは良いことです。
05:29.710 --> 05:34.510
ある意味、 また非常に手探りですが、 ローカル・ミニマムから抜け出せないで、
05:34.510 --> 05:39.580
モデルが改善されて大きなグローバル・ミニマム、 大きな谷を見つけ、
05:39.580 --> 05:49.600
勾配を見つけて次のトークンを予測する能力を向上させようとする、 という考えで、 さまざまな可能性を試しているのです。
05:49.960 --> 05:51.730
うーん、 少し前進しただけだよ。
05:51.730 --> 05:57.040
そして、 ここでもまた、 目に見えて改善が進んでいることは明らかだ。
05:57.370 --> 05:58.990
他に何が見える?
05:58.990 --> 06:00.940
これが学習率だ。
06:00.940 --> 06:06.460
このハイパーパラメーターは、 どの程度のステップを踏むべきかを示す重要なパラメーターだ。
06:06.460 --> 06:11.590
コサイン学習率を選んだと言ったが、 コサインyにはまったく見えないし、 私が説明したようには見えないものを見て、
06:11.590 --> 06:15.370
少し驚くかもしれない。
06:15.370 --> 06:22.180
これはウォームアップと呼ばれるもので、
06:22.180 --> 06:30.190
0点では始動しない。 0001が最高で、 ゼロから始まり、 そこまで積み上げていく。
06:30.190 --> 06:38.110
バッチの始まりは、 大きく外れていた状態から、 より良いポジションへとかなり劇的な動きを見せているのがわかるだろう。
06:38.110 --> 06:40.750
それに、 学習率が高すぎるのもよくない。
06:40.780 --> 06:43.570
あるいは、 いろんな意味でオーバーシュートするかもしれない。
06:43.570 --> 06:45.820
これが、 このウォームアップのセオリーだ。
06:46.000 --> 06:49.180
ええと、 プロセスの一部なんだ。
06:49.210 --> 06:53.170
本当に、 本当に、 ここに来ているのがわかるだろう。
06:53.470 --> 07:00.860
なぜコサインのような形があまり出てこないのか不思議に思うかもしれない。
07:00.860 --> 07:02.900
それはトレーニングの初期だからだ。
07:02.900 --> 07:05.060
それでも、 我々はまだこのコサインの頂点にいる。
07:05.060 --> 07:09.560
これからカーブを描き始めるが、 それは非常にゆっくりとしたものだ。
07:09.920 --> 07:18.590
それと、 GPUで何が起こっているかを示す楽しいチャートもある。
07:18.740 --> 07:21.440
そのなかには、 もっと意味のあるものもある。
07:21.470 --> 07:22.430
ここにもある。
07:22.430 --> 07:24.140
その...。
07:24.170 --> 07:29.480
ええ、 電力使用量とメモリへのアクセスに費やされる時間は良好です。
07:29.540 --> 07:30.020
ええと、 それは
07:30.020 --> 07:32.150
CPU使用率を見たい。
07:32.150 --> 07:32.870
それはどこですか?
07:33.170 --> 07:35.540
つまり、 GPUやCPUの使用率さえもだ。
07:35.570 --> 07:43.640
GPUの使用率は、 GPUが懸命に働いている時間が、 メモリの出し入れに時間を取られているのではないことを確認するために、
07:43.640 --> 07:49.460
おそらく最も重要なものの1つだろう。
07:49.460 --> 07:52.580
GPUが活用されていることを知りたい。
07:52.580 --> 07:59.090
そしてそれは、 私たちが強力なA100ブロックを打ち込み、 それを最大限に活用していることの証でもある。
07:59.090 --> 08:04.550
また、 異なるボックスを使用している場合は、 異なるハイパーパラメータをいくつか持っていることになる。
08:04.550 --> 08:13.760
それからGPUの使用率をチェックし、 うまく動作していることを確認する。
08:13.790 --> 08:23.090
そうでない場合は、 ハイパーパラメータを微調整して、 トレーニングプロセスをより効率的にすることができないか試してみるといいだろう。
08:23.690 --> 08:25.550
うーん、 わかった。
08:25.550 --> 08:29.390
だから、 これからするのはちょっとしたズルだ。
08:29.450 --> 08:36.200
料理教室とか、 料理のビデオとかで、 オーブンに入れて、 こう言うんだけど、
08:36.200 --> 08:41.540
これはさっきやったやつなんだけど、 オーブンから取り出して、
08:41.540 --> 08:46.670
中に入れたものなんだ。
08:46.670 --> 08:53.180
しかし、 私はそれを実行したし、 しばらく前にこれをキックオフし、 同じハイパーパラメータで実行した。
08:53.180 --> 08:58.080
だから、 同じように、 うーん、 このピンクのやつだよ。
08:58.080 --> 09:00.240
そして、 これは私が説明すべきことだった。
09:00.240 --> 09:00.870
本当に申し訳ない。
09:00.870 --> 09:05.640
これは、 このプロジェクトで行われた4回の走行である。
09:05.640 --> 09:07.500
プライサーと呼ばれるプロジェクトだ。
09:07.500 --> 09:12.450
この一番上のナビゲーションには、 プリサープロジェクトがあります。
09:12.450 --> 09:15.240
そしてこの下にあるのが4本だ。
09:15.450 --> 09:28.650
この実行は、 同じデータセットで、 このモデルを3エポックか4エポック実行したものです。
09:28.680 --> 09:30.990
それ以外はすべて同じだ。
09:31.140 --> 09:35.910
それを見せれば、 その結果どうなったかわかるだろう。
09:38.310 --> 09:39.810
そして、 これだ。
09:39.810 --> 09:43.290
だから、 これは......これは肉厚なやつだ。
09:43.290 --> 09:48.630
では、 これを上に持ってきて、 スケールを変更する必要がありそうだ。
09:49.620 --> 09:51.390
降りなければならない。
09:51.990 --> 09:52.650
これでよし。
09:52.650 --> 09:53.640
これですべてを見ることができる。
09:53.640 --> 09:54.870
このままにしておけば
09:55.200 --> 09:57.840
さて、 いくつか指摘しておきたいことがある。
09:57.840 --> 10:02.370
だからまず、 あなたは紫を見ている。
10:02.790 --> 10:03.630
クリックさせてください。
10:03.660 --> 10:06.120
ここをこうすれば、 それが出てくると思うんだ。
10:06.120 --> 10:06.870
これでよし。
10:06.960 --> 10:10.320
青と紫の線が見えるだろう。
10:10.320 --> 10:13.920
青はちょうどここにあり、 紫はここにある。
10:13.920 --> 10:19.350
青は、 このタブで現在実行中のものだ。
10:19.650 --> 10:22.950
今走っているのはこの男だ。
10:22.950 --> 10:26.610
紫は少し前に蹴飛ばしたやつだ。
10:26.730 --> 10:29.460
もちろん、 10日ほど前のデータも入っている。
10:29.820 --> 10:38.010
青が紫に極めて近く追従しているのがわかるだろう。
10:38.010 --> 10:43.200
青は紫と同じ軌跡をたどり続けるだろう。
10:43.200 --> 10:45.960
紫はちょうどその時期が終わったところだ。
10:46.320 --> 10:54.150
今わかることは、 トレンドは確かに改善され、 改善され、 改善されるということだ。
10:54.450 --> 11:00.630
まず第一に、 改善し、 そして少し急降下し、 そして改善し、 また少し急降下し、
11:00.630 --> 11:05.670
そして改善し、 さらに大きく急降下するのがわかるだろう。
11:05.670 --> 11:08.550
このダイブとは何なのか?
11:08.550 --> 11:12.210
まあ、 これらのダイビングはそれぞれのエポックの終わりなんだ。
11:12.210 --> 11:14.130
つまり、 これは1つのエポックなのだ。
11:14.160 --> 11:18.240
これがエポック1、 これがエポック2、 これがエポック3、 そしてこれがエポック4だ。
11:18.240 --> 11:20.040
そして残念ながらクラッシュした。
11:20.040 --> 11:25.650
あるいは、 グーグルがエポック4の途中でインスタンスをリセットした。
11:25.650 --> 11:28.530
だから、 エポック4がどのように終わったかを見ることはできなかった。
11:28.800 --> 11:31.980
うーん、 でも見ての通り、 そんなことはどうでもいいことだとわかるだろう。
11:32.340 --> 11:36.720
では、 なぜ各エポックの終わりになると急に気温が下がるのか?
11:36.720 --> 11:38.220
それはいい質問だね。
11:38.220 --> 11:39.720
非常に重要なことだ。
11:39.840 --> 11:44.190
少しオーバーフィッティングが始まっているんだ。
11:44.190 --> 11:51.120
ここで起こっているのは、 モデルが最初のエポックですでに見たのと同じデータを見ているということだ。
11:51.150 --> 11:53.070
今は確かに、 違う形で混濁している。
11:53.110 --> 12:00.100
そして、 ここに来た選手とは異なる16人バッチで彼らを見ることになる。
12:00.130 --> 12:01.750
ハグをすれば、 その心配はない。
12:01.750 --> 12:06.310
SFTトレーナーは、 毎回自動的にバッチを入れ替えます。
12:06.550 --> 12:12.070
しかし、 それにもかかわらず、 モデルは以前からこのデータを見ており、 それを活用することができる。
12:12.070 --> 12:14.770
落ちこぼれにもかかわらず、 何かを学んだ。
12:14.950 --> 12:22.600
正則化を試みるために他のことをやったにもかかわらず、 このデータは以前にも同じデータを見たことがあるということで、
12:22.600 --> 12:25.330
まだ優位に立っているんだ。
12:25.810 --> 12:32.290
うーん、 でも幸いなことに、 そこからはほんのわずかな段差しかないので、 オーバーフィッティングが起きていることをあまり心配する必要はない。
12:32.290 --> 12:38.620
しかし、 その後はここにきてさらに悪化し、 著しく悪化している。
12:38.830 --> 12:41.890
これはオーバーフィッティングの大きな兆候だ。
12:41.890 --> 12:46.630
そして、 もし私がベストプラクティスであり、 やるべきことだと言った、
12:46.630 --> 12:53.710
検証ランを同時に行っていたら、 まず第一に、 彼らはこのような小さなジャンプダウンをしなかっただろう。
12:53.710 --> 12:59.560
しかし第二に、 おそらくこの時点で上がり始めていただろう。
12:59.560 --> 13:04.360
そして実際、 私はこの時点でバッチの貯金を持っている。
13:04.720 --> 13:11.650
そして案の定、 5000歩ごとにハグする顔のハブに保存されたので、 テストすることができた。
13:11.650 --> 13:20.410
そして案の定、 3回目のエポックを過ぎると結果は悪化する。
13:20.410 --> 13:28.660
だから、 グーグルがこの時点で私のインスタンスのプラグを抜いたことは問題ではなかった。
13:28.660 --> 13:30.580
このモデルはすでに不調だった。
13:30.850 --> 13:40.360
これは、 定期的にハブにアップロードし、 各チェックポイントに戻ってテストを実行できる素晴らしい例だ。
13:40.360 --> 13:43.930
そして、 最高のパフォーマンスを発揮するモデルを選ぶことができる。
13:44.170 --> 13:50.020
これは、 何エポック走らせるかを推測する必要がないようにするための非常に強力なテクニックだ。
13:50.020 --> 13:55.520
たくさん実行しすぎて、 トレーニングデータから最も良い結果が出たものを選ぶだけだ。
13:55.550 --> 13:58.220
新しいことに挑戦するときは、 見本から外れる。
13:58.610 --> 14:03.950
だから、 これがどのように機能するのか、 本当によくわかると思う。
14:04.010 --> 14:10.610
それと、 オーバーフィッティングの影響と、 エポック数の違いによる影響。
14:10.640 --> 14:16.010
そして、 しかし、 私たちが確実に知っているのは、 最初のエポックでは、 常に新しいデータを見ていたため、
14:16.010 --> 14:22.340
この下向きの傾斜はすべて良好な改善を表しているということだ。
14:22.370 --> 14:26.450
そして、 ここでの最後の結果も、 ここより明らかに良かったと言える。
14:26.450 --> 14:28.790
だから、 この点でも改善が見られた。
14:28.820 --> 14:32.330
そして、 しかし、 このあたりから少し怪しくなってきた。
14:32.330 --> 14:36.680
そして、 もしかしたら、 偶然かもしれないが、 それは1番あたりかもしれない。 5レベル。
14:36.680 --> 14:45.170
そして、 経験則として1以下というのがあると前述した。 5 もしかしたら、 眉をひそめて自分の結果を見直す時期かもしれない。
14:46.220 --> 14:52.040
ええと、 ですから、 この場は一旦中断して、 また戻ってきたら、 もう少し他のことについて話しましょう。