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.
373 lines
13 KiB
373 lines
13 KiB
WEBVTT |
|
|
|
00:00.620 --> 00:02.630 |
|
みんな、 行動の時だ。 |
|
|
|
00:02.660 --> 00:04.670 |
|
コラボを立ち上げたんだ。 |
|
|
|
00:04.670 --> 00:06.380 |
|
さあ、 7週目、 3日目だ。 |
|
|
|
00:06.410 --> 00:08.240 |
|
常にセットアップしている。 |
|
|
|
00:08.540 --> 00:12.920 |
|
モデル名を確認し、 いよいよ本番だ。 |
|
|
|
00:13.250 --> 00:19.940 |
|
ええと、 まず最初にすることは、 ハギング・フェイスにログインすること。 |
|
|
|
00:19.940 --> 00:23.810 |
|
そして、 ハギング・フェイスにログインした後、 皆さんがあまりご存じない、 |
|
|
|
00:23.810 --> 00:29.480 |
|
新しいこと、 素晴らしいウェイト&バイアス・プラットフォームにログインします。 |
|
|
|
00:29.690 --> 00:34.940 |
|
先週のウェイトとバイアスの考察の一環として、 すでに設定済みかもしれないが、 そうでなければ、 |
|
|
|
00:34.940 --> 00:36.830 |
|
とても簡単だ。 |
|
|
|
00:36.830 --> 00:38.150 |
|
もちろん無料だ。 |
|
|
|
00:38.150 --> 00:43.550 |
|
ここにリンクされているウェイトとバイアスのWとBのドットIをご覧ください。 |
|
|
|
00:43.550 --> 00:51.530 |
|
無料アカウントをセットアップして、 あなたの杖のAPIキー、 重みと偏りのAPIキーを見つけることができます。 |
|
|
|
00:51.530 --> 00:58.160 |
|
そして、 この南京錠のマークをクリックし、 Google Colabにシークレットとして追加します。 |
|
|
|
00:58.220 --> 01:03.840 |
|
そうしたくない場合は、 このノートブックに直接入力することもできます。 |
|
|
|
01:03.840 --> 01:05.850 |
|
しかし、 秘訣を使うことをお勧めする。 |
|
|
|
01:05.850 --> 01:09.990 |
|
ウェイトとバイアスを設定したら、 さあ始めよう。 |
|
|
|
01:10.020 --> 01:15.420 |
|
そしてデータセットをロードし、 そのデータセットが期待通りのものであることを素早くチェックすることができる。 |
|
|
|
01:15.450 --> 01:18.750 |
|
私たちはそれを期待しているし、 期待している。 |
|
|
|
01:18.780 --> 01:27.840 |
|
トレーニング・データ・ポイントの数を見てみよう。 40万個のトレーニング・データ・ポイントがある。 |
|
|
|
01:27.840 --> 01:29.040 |
|
一つ目を見てみよう。 |
|
|
|
01:29.040 --> 01:32.760 |
|
ただ、 私たちが期待する通りのものであることを確認してほしい。 |
|
|
|
01:32.760 --> 01:39.570 |
|
このトレーニング・データ・ポイントのテキストは、 私たちが期待しているプロンプトで、 その後に価格が続きます。 |
|
|
|
01:39.570 --> 01:45.120 |
|
そして、 この次のトークンを予測し、 それを的中させるためにモデルは必死になる。 |
|
|
|
01:45.510 --> 01:47.460 |
|
実際の価格もここにある。 |
|
|
|
01:47.460 --> 01:49.950 |
|
四捨五入しているのがわかるだろう。 |
|
|
|
01:49.950 --> 01:51.660 |
|
そして、 探していることを伝える。 |
|
|
|
01:51.660 --> 01:56.550 |
|
1ドル単位、 トークン単位、 1ドル単位でいくらかかりますか? |
|
|
|
01:57.100 --> 01:58.360 |
|
そして値段だ。 |
|
|
|
01:58.390 --> 01:59.440 |
|
本当の価格だ。 |
|
|
|
01:59.440 --> 02:03.940 |
|
テストデータセットを見てみよう。 |
|
|
|
02:03.940 --> 02:06.400 |
|
しかし、 テストデータセットが非常に似ていることを覚えているだろう。 |
|
|
|
02:06.430 --> 02:08.020 |
|
ほんの小さな違いだ。 |
|
|
|
02:08.020 --> 02:10.480 |
|
ここに値段はない。 |
|
|
|
02:10.480 --> 02:12.070 |
|
値段はドルと書いてあるだけだ。 |
|
|
|
02:12.280 --> 02:16.360 |
|
そしてそれこそが、 我々のモデルが得意とするトレーニングなのだ。 |
|
|
|
02:16.750 --> 02:17.530 |
|
オーケー。 |
|
|
|
02:17.560 --> 02:24.880 |
|
ログインして、 weights and biasesにログインするように指示すると、 weights and Biasesプロジェクトがセットアップされます。 |
|
|
|
02:24.880 --> 02:33.160 |
|
というのも、 もし走り始めても、 ハグフェイスがこれをやってくれるからだ。 |
|
|
|
02:33.160 --> 02:45.580 |
|
しかし、 必要であれば、 コンフィグにいくつかのパラメータを渡して、 ウェイトやバイアスに表示される追加的なUMや属性を設定することもできるからだ。 |
|
|
|
02:45.580 --> 02:47.470 |
|
知っておくと便利なトリックだね。 |
|
|
|
02:47.560 --> 02:50.290 |
|
うーん、 でも、 とにかく、 これを実行するかどうかは自由だ。 |
|
|
|
02:50.320 --> 02:51.940 |
|
大した違いはない。 |
|
|
|
02:52.570 --> 02:55.310 |
|
じゃあ、 これは前にも見たね。 |
|
|
|
02:55.310 --> 03:01.310 |
|
このハイパーパラメーターを使って、 ビットとバイトのコンフィグを4ビット量子化に使うか、 |
|
|
|
03:01.340 --> 03:04.280 |
|
8ビットに使うかを決めるだけだ。 |
|
|
|
03:04.280 --> 03:06.320 |
|
もちろん4ビットで行く。 |
|
|
|
03:06.350 --> 03:08.390 |
|
ずっと下に行くんだ。 |
|
|
|
03:08.390 --> 03:13.100 |
|
そして、 トークナイザーとモデルをロードする。 |
|
|
|
03:13.160 --> 03:16.220 |
|
そして、 トークナイザーをロードするいつものコード。 |
|
|
|
03:16.220 --> 03:22.670 |
|
これは定型文のようなもので、 トレーナーに対して、 配列の最大長を満たすようにすべてのデータ・ポイントをパディングし、 |
|
|
|
03:22.700 --> 03:41.630 |
|
文末のトークンですべてのデータ・ポイントをパディングして、 配列のトークンの長さである182文字を埋めるように指示するものです。 |
|
|
|
03:41.630 --> 03:44.570 |
|
だから、 このトークンで右サイドを埋めるんだ。 |
|
|
|
03:44.960 --> 03:52.490 |
|
そしてこの1行は、 世代設定と呼ばれるものにパッドのトークンIDを設定するための、 |
|
|
|
03:52.520 --> 03:54.690 |
|
単なる定型文です。 |
|
|
|
03:54.690 --> 04:05.490 |
|
これを入れたのは、 後で警告が出るのを防ぐためだ。 |
|
|
|
04:05.490 --> 04:09.420 |
|
そうすることで、 不必要な警告が表示されるのを避けることができる。 |
|
|
|
04:10.290 --> 04:17.730 |
|
そして最後に、 いつものようにメモリーのフットプリントを印刷して、 それが5であることを確認する。 4ビット版のラマに期待される6GB、 |
|
|
|
04:17.730 --> 04:24.840 |
|
3. 180億パラメータモデル。 |
|
|
|
04:25.560 --> 04:27.300 |
|
さて、 ここでもうひとつ詭弁がある。 |
|
|
|
04:27.300 --> 04:29.610 |
|
データコレーターと呼ばれるものだ。 |
|
|
|
04:29.670 --> 04:46.230 |
|
つまり、 トレーニングをするときに、 価格を含む完全なシーケンスを渡すという狡猾な方法がある。 |
|
|
|
04:46.230 --> 04:47.940 |
|
しかし、 ちょっとした引っ掛かりがある。 |
|
|
|
04:47.940 --> 04:57.000 |
|
実際には、 ドル記号までのプロンプトのすべてのトークンを予測する方法についてモデルが学習することは気にしない。 |
|
|
|
04:57.000 --> 05:00.060 |
|
トークンを予測する方法を学ばせたいんだ。 |
|
|
|
05:00.060 --> 05:05.790 |
|
だから、 商品の説明を書くのがどれだけ上手かを見るのに多くの時間を費やしてほしくないし、 |
|
|
|
05:05.790 --> 05:10.200 |
|
価格も覚えてほしくない。 |
|
|
|
05:10.380 --> 05:15.120 |
|
そのためには、 マスクというものをセットアップする必要があるんだ。 |
|
|
|
05:15.270 --> 05:23.310 |
|
トレーナーに「プロンプトについて学ぶ必要はない。 |
|
|
|
05:23.310 --> 05:27.960 |
|
しかし、 ドル記号のすぐ後にあるこのトークンを予測する方法を学ぼう。 |
|
|
|
05:27.960 --> 05:36.390 |
|
マスクのセッティングは少々手こずり、 トークンをいじくり回す必要がある。 |
|
|
|
05:36.390 --> 05:42.330 |
|
しかし幸運なことに、 ハギング・フェイスは、 それをすべてやってくれるちょっとしたユーティリティで、 実に簡単にしてくれた。 |
|
|
|
05:42.330 --> 05:46.500 |
|
そして、 それはデータ・コレーターと呼ばれ、 完成度の高いものである。 |
|
|
|
05:46.830 --> 05:49.420 |
|
LMは......僕らが手に入れたものだ。 |
|
|
|
05:49.450 --> 05:51.970 |
|
完成させたいものしかないんだ。 |
|
|
|
05:51.970 --> 05:53.380 |
|
この特別な文章。 |
|
|
|
05:53.380 --> 05:59.800 |
|
どのように機能するかというと、 レスポンス・テンプレートと呼ばれるものを考え出すのです。 とても派手に聞こえますが、 |
|
|
|
05:59.800 --> 06:06.700 |
|
それは単に、 次に何が来るかを予測してほしいことを示すテキストの塊を意味します。 |
|
|
|
06:06.700 --> 06:10.480 |
|
そして私たちの場合、 それは単純に価格がドル記号であるということだ。 |
|
|
|
06:10.480 --> 06:13.120 |
|
その次を予測させたい。 |
|
|
|
06:13.120 --> 06:18.490 |
|
そこで、 それをレスポンス・テンプレートと呼ばれるものに入れ、 レスポンス・テンプレートだけを渡して、 |
|
|
|
06:18.490 --> 06:23.800 |
|
データ・コレーターのインスタンスを作成する。 |
|
|
|
06:23.800 --> 06:33.730 |
|
そして、 トークナイザーも指定しなければならない。 トークナイザーは、 トレーナーに入力されるマスクされたデータの最終的なセットを構築するためにそれを使用する。 |
|
|
|
06:33.730 --> 06:35.230 |
|
すぐにわかるだろう。 |
|
|
|
06:35.230 --> 06:41.320 |
|
だからこれは超シンプルで、 裏ではかなり高度なことをやっていて、 僕らにとっては簡単なことなんだ。 |
|
|
|
06:42.010 --> 06:42.910 |
|
分かった。 |
|
|
|
06:43.270 --> 06:46.750 |
|
そしてついに、 私たちにとって最後の大きな瞬間がやってきた。 |
|
|
|
06:46.750 --> 06:50.090 |
|
これはたくさんのコードがあるように見えるだろうが、 実際にはそれほど多くはない。 |
|
|
|
06:50.270 --> 06:56.090 |
|
これからトレーナーを呼び出すので、 2組のパラメーターを渡さなければならない。 |
|
|
|
06:56.090 --> 06:58.460 |
|
そのひとつがローラのコンフィグだ。 |
|
|
|
06:58.460 --> 07:02.960 |
|
ハイパーパラメーターは、 ローラのトレーニング方法に関係するものだ。 |
|
|
|
07:02.960 --> 07:08.390 |
|
そしてもうひとつは、 psftコンフィグによる微調整だ。 |
|
|
|
07:08.390 --> 07:15.140 |
|
コンフィグは、 トレーニングがどのように機能するかについての一般的なもので、 私がやったことは、 |
|
|
|
07:15.140 --> 07:24.560 |
|
基本的に、 アルファ値やドロップアウトなど、 ノートブックの一番上で定義した定数から引っ張ってくるように設定しました。 |
|
|
|
07:24.560 --> 07:30.110 |
|
これらは重要なハイパーパラメーターではない。 |
|
|
|
07:30.140 --> 07:40.610 |
|
ローラのパラメーターには、 もちろんアルファを渡していることがわかるだろう。 |
|
|
|
07:40.610 --> 07:46.950 |
|
ローラの設定、 トレーニングパラメータ、 SFTの設定には、 ラン名などが含まれています。 |
|
|
|
07:46.950 --> 07:50.160 |
|
バッチサイズは何エポックですか? |
|
|
|
07:50.310 --> 07:52.170 |
|
ええと、 超重要な16番。 |
|
|
|
07:52.200 --> 07:56.610 |
|
私の場合、 T4ボックスを使っているのであれば、 これはあなたのためのものかもしれない。 |
|
|
|
07:56.850 --> 08:00.660 |
|
グラデーションの蓄積は、 僕らにとっては大事なことなんだ。 |
|
|
|
08:00.750 --> 08:06.360 |
|
そして、 私たちが使うことにしたコサイン・スケジューラーの学習率などだ。 |
|
|
|
08:06.510 --> 08:12.960 |
|
それから、 この下の方にある、 ハブにプッシュするように言っているんだ。 |
|
|
|
08:13.050 --> 08:19.050 |
|
保存を行うたびに、 つまりバッチ・ステップの5000回ごとに、 このモデルをハブにプッシュして、 |
|
|
|
08:19.050 --> 08:23.520 |
|
ハブに一連の保存を行うようにします。 |
|
|
|
08:23.520 --> 08:26.220 |
|
そして、 それぞれのポイントで我々のモデルを見ることができる。 |
|
|
|
08:26.520 --> 08:32.700 |
|
そして、 この名前をつけてほしいと頼み、 非公開のレポにしたいと言って、 そのレポから素晴らしい結果が出たと満足するまで、 |
|
|
|
08:32.700 --> 08:36.570 |
|
まだ公開しないようにする。 |
|
|
|
08:37.710 --> 08:40.740 |
|
そしてこれが最後のセリフだ。 |
|
|
|
08:40.740 --> 08:43.990 |
|
SFTトレーナーというものを立ち上げた。 |
|
|
|
08:43.990 --> 08:47.230 |
|
私たちはほんのわずかなことで合格する。 |
|
|
|
08:47.260 --> 08:49.630 |
|
第一に、 ベースモデルを知る必要がある。 |
|
|
|
08:49.630 --> 08:54.940 |
|
私たちが微調整したい根本的なモデルとは、 ラマ3である。 1. |
|
|
|
08:55.330 --> 08:57.490 |
|
その2 トレーニングデータとは何か? |
|
|
|
08:57.520 --> 08:58.510 |
|
私たちはそれをパスする。 |
|
|
|
08:58.510 --> 09:00.430 |
|
ローラのパラメーターは? |
|
|
|
09:00.430 --> 09:09.430 |
|
これには、 アルファ値、 r、 ドロップアウト、 トークナイザー、 トレーニング・パラメーターが設定されている。 |
|
|
|
09:09.430 --> 09:17.770 |
|
そして最後にコレーターを渡す。 コレーターは、 ドル記号の値段を探すことを知っていて、 それを教えてくれる卑劣なオブジェクトだ。 |
|
|
|
09:17.800 --> 09:20.110 |
|
その前をわざわざ予測する必要はない。 |
|
|
|
09:20.440 --> 09:22.570 |
|
次のことを心配する。 |
|
|
|
09:22.990 --> 09:27.400 |
|
それで、 これでトレーナーが決まった。 |
|
|
|
09:27.400 --> 09:36.190 |
|
そして次のビデオでは、 この単線の微調整列車を走らせる。 |
|
|
|
09:36.310 --> 09:37.990 |
|
それは素晴らしい瞬間だ。 |
|
|
|
09:37.990 --> 09:42.070 |
|
では、 さっそく行ってみよう。
|
|
|