こうして今､ 前日にキックオフしたのと同じラボに戻ってきた｡
今は第7週3日目というやや誤解を招きそうな名前だが､ 我々はもちろん第7週4日目にいるからだ｡
でも､ 何かで止めてしまうことを恐れて､ 触れないようにしているんだ｡
GPUラムは､ 天井の38に迫る勢いで釘付けになっている｡ 40GBのうち2GB｡
しかし､ 幸いなことにそれは変わらない｡
上がらない｡
そして､ 各バッチステップのプリントアウトをご覧ください｡
現在､ バッチステップ4350だ｡
うーん､ そして､ もしズームアップしきったら､ うーん､ もう一度言うけど､ うっかりバッチを止めてしまわないように､
慎重にやっているんだ｡
この3つのエポックを表す帯は､ まだほんの少ししか入っていないことがわかるだろう｡
そこでひとつ､ おそらくすべてのデータを完全に､ あー､ 一通り調べてみる｡
ええと､ バッチステップにいるのがわかるだろう｡
あまりに早く過ぎてしまうので､ 数字は言えませんが､ 10回分です｡
この10万という丸い数字のうち､ なぜこんなに丸いのか不思議に思うかもしれない｡
それは偶然の一致なんだ｡
ええと､ 40万点のデータがありますが､ 1ステップで16点ずつです｡
だから､ このつまらない計算のために電卓で400,000を16で割ってみる｡
それにエポック数を掛けるんだ｡
エポックは3つだと思っていたが､ 4つあるようだ｡
私は4エポックのままにしておいた｡
ああ､ そうだね｡
それを4倍して4エポックとする｡
その証拠に､ 10万台のカメラがある｡
単なる乱数ではなく､ ランダムに丸められた数字だ｡
実際､ これは40万点のデータを16のバッチにまとめ､ 4回繰り返して行うバッチ・ステップの数そのものである｡
ええと､ そうすると､ それが止まるんだ｡
この数字を見ただけでも､ かなり高いトレーニングロスからスタートし､ その数字がかなり下がっていることがわかるだろう｡
しかし､ 数字が上下に動き回っているため､ ここから何が起こっているのかを正確に判断するのは難しい｡
うーん､ トレンドの感覚をつかむのは難しいですね｡
バッチの進捗状況を視覚化し､ 異なる実行の比較などを可能にするツールがあればいいのだが......｡
もちろん､ そのようなツールはあるし､ 重みもバイアスもある｡
ええと､ そしてこれが僕らが走った結果なんだ｡
これが今起きていることだ｡
そして､ これは何が起こっているかを示しているんだ｡
だから
だから､ このトレーニングの損失は本物だ｡
これが私たちが本当に見たいことなのだ｡
このパネルを編集して､ もう少し見せてもらおう｡
このY軸はゼロまで下がっていて､ ゼロはゼロロスとなり､ 完璧を意味する｡
これは､ モデルが常に100％の信頼度で次のトークンを予測し､ 100％の信頼度で予測した次のトークンが正しい次のトークンであることを意味する｡
うーん､ それはあり得ない場所だね｡
実際､ 1を大きく下回ると疑われる｡ 5.
一般的には､ これは経験則のようなものだが､ しかし､ 一般的に言えば､ それは素晴らしい､ あー､
持っているべき損失のようなものだろう｡
そしてその下には､ オーバーフィッティングが起こっていないかどうかを考えるきっかけになるかもしれない｡
この軸を変えて､ Y軸の最小値を1つにしてみよう｡
まあ､ 何とかなるさ｡
我々はもっとうまくやれる｡
1のようにすればいい｡ 4か何かで､ ここで何が起こっているのかがわかるようにするんだ｡
しかし､ この初期の段階でも､ このでこぼこした線が改善傾向にあることは明らかだ｡
GPTと微調整を行った時とは異なり､ 上下に揺れ動き､
トレンドは見られなかった｡
また､ スムージングを適用して､ どのように見えるか見てみよう｡
つまり､ それは明らかに違う｡
つまり､ それは向上しているラインなのだ｡
平滑化係数を適用すると
さて､ なぜこれが上下するのか？
つまり､ 本当に場合によるんだ｡
これらのポイントはそれぞれ､ 16のデータポイント､ 16のプロンプト､ その最後に予測するものを1つに押し込んだもので､
ランダムにごちゃ混ぜになっているんだ｡
つまり､ 16人の中からランダムに選ばれているわけだ｡
それで､ どの製品が16番に押し込まれるかは誰にもわからない｡
もしかしたら､ 本当に高価な製品かもしれない｡
だから雑音は多い｡
それぞれのバッチステップの構成が異なるので､
少しノイズがあるのは良いことです｡
ある意味､ また非常に手探りですが､ ローカル・ミニマムから抜け出せないで､
モデルが改善されて大きなグローバル・ミニマム､ 大きな谷を見つけ､
勾配を見つけて次のトークンを予測する能力を向上させようとする､ という考えで､ さまざまな可能性を試しているのです｡
うーん､ 少し前進しただけだよ｡
そして､ ここでもまた､ 目に見えて改善が進んでいることは明らかだ｡
他に何が見える？
これが学習率だ｡
このハイパーパラメーターは､ どの程度のステップを踏むべきかを示す重要なパラメーターだ｡
コサイン学習率を選んだと言ったが､ コサインyにはまったく見えないし､ 私が説明したようには見えないものを見て､
少し驚くかもしれない｡
これはウォームアップと呼ばれるもので､
0点では始動しない｡ 0001が最高で､ ゼロから始まり､ そこまで積み上げていく｡
バッチの始まりは､ 大きく外れていた状態から､ より良いポジションへとかなり劇的な動きを見せているのがわかるだろう｡
それに､ 学習率が高すぎるのもよくない｡
あるいは､ いろんな意味でオーバーシュートするかもしれない｡
これが､ このウォームアップのセオリーだ｡
ええと､ プロセスの一部なんだ｡
本当に､ 本当に､ ここに来ているのがわかるだろう｡
なぜコサインのような形があまり出てこないのか不思議に思うかもしれない｡
それはトレーニングの初期だからだ｡
それでも､ 我々はまだこのコサインの頂点にいる｡
これからカーブを描き始めるが､ それは非常にゆっくりとしたものだ｡
それと､ GPUで何が起こっているかを示す楽しいチャートもある｡
そのなかには､ もっと意味のあるものもある｡
ここにもある｡
その...｡
ええ､ 電力使用量とメモリへのアクセスに費やされる時間は良好です｡
ええと､ それは
CPU使用率を見たい｡
それはどこですか？
つまり､ GPUやCPUの使用率さえもだ｡
GPUの使用率は､ GPUが懸命に働いている時間が､ メモリの出し入れに時間を取られているのではないことを確認するために､
おそらく最も重要なものの1つだろう｡
GPUが活用されていることを知りたい｡
そしてそれは､ 私たちが強力なA100ブロックを打ち込み､ それを最大限に活用していることの証でもある｡
また､ 異なるボックスを使用している場合は､ 異なるハイパーパラメータをいくつか持っていることになる｡
それからGPUの使用率をチェックし､ うまく動作していることを確認する｡
そうでない場合は､ ハイパーパラメータを微調整して､ トレーニングプロセスをより効率的にすることができないか試してみるといいだろう｡
うーん､ わかった｡
だから､ これからするのはちょっとしたズルだ｡
料理教室とか､ 料理のビデオとかで､ オーブンに入れて､ こう言うんだけど､
これはさっきやったやつなんだけど､ オーブンから取り出して､
中に入れたものなんだ｡
しかし､ 私はそれを実行したし､ しばらく前にこれをキックオフし､ 同じハイパーパラメータで実行した｡
だから､ 同じように､ うーん､ このピンクのやつだよ｡
そして､ これは私が説明すべきことだった｡
本当に申し訳ない｡
これは､ このプロジェクトで行われた4回の走行である｡
プライサーと呼ばれるプロジェクトだ｡
この一番上のナビゲーションには､ プリサープロジェクトがあります｡
そしてこの下にあるのが4本だ｡
この実行は､ 同じデータセットで､ このモデルを3エポックか4エポック実行したものです｡
それ以外はすべて同じだ｡
それを見せれば､ その結果どうなったかわかるだろう｡
そして､ これだ｡
だから､ これは......これは肉厚なやつだ｡
では､ これを上に持ってきて､ スケールを変更する必要がありそうだ｡
降りなければならない｡
これでよし｡
これですべてを見ることができる｡
このままにしておけば
さて､ いくつか指摘しておきたいことがある｡
だからまず､ あなたは紫を見ている｡
クリックさせてください｡
ここをこうすれば､ それが出てくると思うんだ｡
これでよし｡
青と紫の線が見えるだろう｡
青はちょうどここにあり､ 紫はここにある｡
青は､ このタブで現在実行中のものだ｡
今走っているのはこの男だ｡
紫は少し前に蹴飛ばしたやつだ｡
もちろん､ 10日ほど前のデータも入っている｡
青が紫に極めて近く追従しているのがわかるだろう｡
青は紫と同じ軌跡をたどり続けるだろう｡
紫はちょうどその時期が終わったところだ｡
今わかることは､ トレンドは確かに改善され､ 改善され､ 改善されるということだ｡
まず第一に､ 改善し､ そして少し急降下し､ そして改善し､ また少し急降下し､
そして改善し､ さらに大きく急降下するのがわかるだろう｡
このダイブとは何なのか？
まあ､ これらのダイビングはそれぞれのエポックの終わりなんだ｡
つまり､ これは1つのエポックなのだ｡
これがエポック1､ これがエポック2､ これがエポック3､ そしてこれがエポック4だ｡
そして残念ながらクラッシュした｡
あるいは､ グーグルがエポック4の途中でインスタンスをリセットした｡
だから､ エポック4がどのように終わったかを見ることはできなかった｡
うーん､ でも見ての通り､ そんなことはどうでもいいことだとわかるだろう｡
では､ なぜ各エポックの終わりになると急に気温が下がるのか？
それはいい質問だね｡
非常に重要なことだ｡
少しオーバーフィッティングが始まっているんだ｡
ここで起こっているのは､ モデルが最初のエポックですでに見たのと同じデータを見ているということだ｡
今は確かに､ 違う形で混濁している｡
そして､ ここに来た選手とは異なる16人バッチで彼らを見ることになる｡
ハグをすれば､ その心配はない｡
SFTトレーナーは､ 毎回自動的にバッチを入れ替えます｡
しかし､ それにもかかわらず､ モデルは以前からこのデータを見ており､ それを活用することができる｡
落ちこぼれにもかかわらず､ 何かを学んだ｡
正則化を試みるために他のことをやったにもかかわらず､ このデータは以前にも同じデータを見たことがあるということで､
まだ優位に立っているんだ｡
うーん､ でも幸いなことに､ そこからはほんのわずかな段差しかないので､ オーバーフィッティングが起きていることをあまり心配する必要はない｡
しかし､ その後はここにきてさらに悪化し､ 著しく悪化している｡
これはオーバーフィッティングの大きな兆候だ｡
そして､ もし私がベストプラクティスであり､ やるべきことだと言った､
検証ランを同時に行っていたら､ まず第一に､ 彼らはこのような小さなジャンプダウンをしなかっただろう｡
しかし第二に､ おそらくこの時点で上がり始めていただろう｡
そして実際､ 私はこの時点でバッチの貯金を持っている｡
そして案の定､ 5000歩ごとにハグする顔のハブに保存されたので､ テストすることができた｡
そして案の定､ 3回目のエポックを過ぎると結果は悪化する｡
だから､ グーグルがこの時点で私のインスタンスのプラグを抜いたことは問題ではなかった｡
このモデルはすでに不調だった｡
これは､ 定期的にハブにアップロードし､ 各チェックポイントに戻ってテストを実行できる素晴らしい例だ｡
そして､ 最高のパフォーマンスを発揮するモデルを選ぶことができる｡
これは､ 何エポック走らせるかを推測する必要がないようにするための非常に強力なテクニックだ｡
たくさん実行しすぎて､ トレーニングデータから最も良い結果が出たものを選ぶだけだ｡
新しいことに挑戦するときは､ 見本から外れる｡
だから､ これがどのように機能するのか､ 本当によくわかると思う｡
それと､ オーバーフィッティングの影響と､ エポック数の違いによる影響｡
そして､ しかし､ 私たちが確実に知っているのは､ 最初のエポックでは､ 常に新しいデータを見ていたため､
この下向きの傾斜はすべて良好な改善を表しているということだ｡
そして､ ここでの最後の結果も､ ここより明らかに良かったと言える｡
だから､ この点でも改善が見られた｡
そして､ しかし､ このあたりから少し怪しくなってきた｡
そして､ もしかしたら､ 偶然かもしれないが､ それは1番あたりかもしれない｡ 5レベル｡
そして､ 経験則として1以下というのがあると前述した｡ 5 もしかしたら､ 眉をひそめて自分の結果を見直す時期かもしれない｡
ええと､ ですから､ この場は一旦中断して､ また戻ってきたら､ もう少し他のことについて話しましょう｡