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.
136 lines
6.0 KiB
136 lines
6.0 KiB
WEBVTT |
|
|
|
00:00.290 --> 00:05.120 |
|
そこで今回は、 トレーニング・プロセスにおける5つの重要なハイパーパラメーターについてお話しします。 |
|
|
|
00:05.120 --> 00:07.460 |
|
そのうちのいくつかは、 以前にも簡単に話したことがある。 |
|
|
|
00:07.460 --> 00:13.670 |
|
しかし、 これらの多くは、 この種の他のデータ・サイエンス・プロジェクトに携わったことがない限り、 あなたにとってやや目新しいものだろう。 |
|
|
|
00:13.700 --> 00:18.890 |
|
そして、 最初に挙げるのは、 少し前に少し触れたエポックだ。 |
|
|
|
00:18.890 --> 00:29.300 |
|
つまりエポックとは、 トレーニング・プロセスの一環として、 データセット全体を何回処理するかということだ。 |
|
|
|
00:29.300 --> 00:34.370 |
|
だから、 トレーニングするときに、 それぞれのトレーニング・データ・ポイントを取って、 そのセットを1回通して、 |
|
|
|
00:34.370 --> 00:37.670 |
|
それで終わりだと想像するかもしれない。 |
|
|
|
00:37.670 --> 00:42.620 |
|
しかし実際には、 2度目に戻ってすべてのトレーニングデータをもう一度モデルで調べ直すことで、 |
|
|
|
00:42.620 --> 00:45.200 |
|
より多くの走行距離を得られることが判明した。 |
|
|
|
00:45.230 --> 00:46.820 |
|
と思うかもしれない。 |
|
|
|
00:46.820 --> 00:50.240 |
|
モデルがすでに一度見ているのに、 なぜ2度目を通すことが助けになるのか? |
|
|
|
00:50.240 --> 00:52.520 |
|
では、 同じデータを2度目に与えるだけなのか? |
|
|
|
00:52.520 --> 00:58.160 |
|
トレーニングの最適化プロセスでは、 これらのポイントをひとつひとつ確認し、 |
|
|
|
00:58.160 --> 01:11.490 |
|
モデルを少し良くする方向にごく小さな一歩を踏み出す。 |
|
|
|
01:11.640 --> 01:17.700 |
|
だから、 すべてのトレーニング・データ・セットを経験するたびに、 私たちはほんの少し上達する機会を得ることになる。 |
|
|
|
01:17.880 --> 01:22.860 |
|
そして恐らく、 それが完了した時点で、 モデルの状態は少し変わっている。 |
|
|
|
01:22.950 --> 01:27.930 |
|
そうすれば、 再びそれを見たときに、 より洗練された、 より良いプレーができるようになる。 |
|
|
|
01:28.560 --> 01:35.550 |
|
複数のエポックを持つことがしばしば理にかなっている理由はもう一つあり、 それはバッチサイズに行き着く。 |
|
|
|
01:35.580 --> 01:43.950 |
|
次のハイパーパラメーター・バッチサイズは、 1つのデータポイントを次のトークンを予測するモデルのフォワードパスにかけて、 損失を計算し、 |
|
|
|
01:43.980 --> 01:49.410 |
|
それから逆戻りして、 その損失がどの程度なのかの勾配を把握する、 ということをしないことが多い、 |
|
|
|
01:49.410 --> 01:52.380 |
|
ということです。 |
|
|
|
01:52.410 --> 01:56.610 |
|
モデルのパラメーターの重みが違うことが影響しているのでしょうか? |
|
|
|
01:56.610 --> 02:00.540 |
|
そして、 正しい方向に少しずつステップを踏んでモデルを最適化する? |
|
|
|
02:00.630 --> 02:06.240 |
|
多くのデータポイントを同時に扱うことは、 理にかなっていることもあるんだ。 |
|
|
|
02:06.240 --> 02:13.410 |
|
よくあるように、 4人とか8人とか16人を選んで、 16人全員でやるんだ。 |
|
|
|
02:13.930 --> 02:18.460 |
|
そうする理由のひとつは、 パフォーマンスだ。 |
|
|
|
02:18.460 --> 02:19.630 |
|
全部一緒にできる。 |
|
|
|
02:19.660 --> 02:23.920 |
|
もしGPUに16個のデータポイントを収めることができるなら、 それは良いことだ。 |
|
|
|
02:23.950 --> 02:30.670 |
|
一歩一歩やるより、 まとめてやったほうがいい理由は他にもいくつかある。 |
|
|
|
02:30.760 --> 02:35.920 |
|
うーん、 でも、 でも、 でも、 基本的な理由はパフォーマンスのためだよ。 |
|
|
|
02:36.100 --> 02:44.710 |
|
各エポックで複数のエポックを行う場合、 リゾートするか、 すべてのバッチをジャグリングするのが一般的だ。 |
|
|
|
02:44.710 --> 02:52.870 |
|
つまり、 エポックごとに異なるバッチ、 異なる16点のデータセットをモデルが見ることになる。 |
|
|
|
02:52.870 --> 03:02.890 |
|
エポックごとに異なるデータを見ているのですから。 |
|
|
|
03:02.890 --> 03:06.250 |
|
それが、 複数のエポックが良い理由でもある。 |
|
|
|
03:06.880 --> 03:13.630 |
|
各エポックの終了時にモデルを保存するという、 非常に一般的なテクニックがある。 |
|
|
|
03:13.630 --> 03:27.270 |
|
多くのエポックを実行し、 各エポックの終了時にモデルのパフォーマンスをテストするのはよくあることです。 |
|
|
|
03:27.270 --> 03:41.220 |
|
多くの場合、 モデルは各エポックで学習を重ねるにつれてどんどん良くなっていきます。 |
|
|
|
03:41.220 --> 03:49.740 |
|
そしてテストすると、 トレーニングデータセット外のポイントを想定していないため、 パフォーマンスが悪化する。 |
|
|
|
03:49.740 --> 03:54.690 |
|
だから、 より良い、 より良い、 より良い、 より良い、 より悪い、 より悪い、 より悪い、 より悪い、 というように見えてくる。 |
|
|
|
03:54.690 --> 03:57.450 |
|
そして結果は悪化の一途をたどる。 |
|
|
|
03:57.450 --> 04:05.550 |
|
そしてこれを実行し、 単純に最良のモデル、 最良の結果をもたらしたエポックを選ぶのだ。 |
|
|
|
04:05.550 --> 04:08.460 |
|
そして、 それがトレーニングの成果だと考えるものだ。 |
|
|
|
04:08.460 --> 04:12.570 |
|
それが微調整モデルのバージョンであり、 それを前進させるものだ。 |
|
|
|
04:12.570 --> 04:20.490 |
|
そのため、 より多くのエポック数を実行し、 そのようなテストを使ってどれがベストなモデルかを選ぶのが一般的だ。 |
|
|
|
04:21.870 --> 04:26.910 |
|
これで一旦中断し、 次のビデオでこれらのパラメータについて続けることにする。
|
|
|