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.
232 lines
8.6 KiB
232 lines
8.6 KiB
WEBVTT |
|
|
|
00:01.340 --> 00:02.180 |
|
やあ、 みんな。 |
|
|
|
00:02.210 --> 00:04.250 |
|
何を考えているかは分かる。 |
|
|
|
00:04.250 --> 00:07.130 |
|
今週はトレーニングウィークのはずだった。 |
|
|
|
00:07.160 --> 00:11.900 |
|
フロンティア・モデルを微調整するために、 私はすべてを設定した。 |
|
|
|
00:11.900 --> 00:13.250 |
|
私たちは何をしなかったのか? |
|
|
|
00:13.250 --> 00:15.110 |
|
私たちはフロンティアモデルを微調整していない。 |
|
|
|
00:15.110 --> 00:16.490 |
|
だが、 いいニュースがある。 |
|
|
|
00:16.490 --> 00:18.140 |
|
今日がその日だ。 |
|
|
|
00:18.170 --> 00:19.460 |
|
今日がその日だ。 |
|
|
|
00:19.460 --> 00:25.550 |
|
しかし、 今日もまた、 私たちと同じように、 ある意味で失望させられるかもしれないことを覚悟しておかなければならない。 |
|
|
|
00:25.580 --> 00:26.720 |
|
いずれ分かるだろう。 |
|
|
|
00:26.900 --> 00:35.720 |
|
うーん、 でも、 勇敢な新世界に乗り出すのだから、 その覚悟はしておいてほしい。 |
|
|
|
00:35.720 --> 00:51.140 |
|
簡単にまとめると、 すでにフロンティア・モデルを使ってテキストやコードを生成したり、 APIを使ったり、 パイプラインと下位レベルのトランスフォーマーAPIの両方を通してオープンソースのモデルを抱き合わせで使ったりすることができる。 |
|
|
|
00:51.140 --> 00:59.390 |
|
モデルを直接使用するのと同様に、 ランゲ・チェインを使用して高度なラグ・パイプラインを作成することも、 ランゲ・チェインを使用しないこともできます。 |
|
|
|
00:59.390 --> 01:09.110 |
|
そして最も重要なことは、 問題解決のための5つのステップ戦略に従うことができるようになったことだ。 |
|
|
|
01:09.140 --> 01:13.910 |
|
その結果、 多くの時間をデータのキュレーションに費やし、 ベースラインモデルを作成することが判明した。 |
|
|
|
01:13.910 --> 01:16.760 |
|
トレーニングも行ったが、 それはベースラインモデルのトレーニングだった。 |
|
|
|
01:16.790 --> 01:22.970 |
|
伝統的なMLは、 私たちがまだ行っていない、 訓練された、 微調整された、 フロンティアモデルである。 |
|
|
|
01:22.970 --> 01:24.500 |
|
そして、 それが今日私たちがやろうとしていることだ。 |
|
|
|
01:24.530 --> 01:30.170 |
|
ファイン・チューニングのプロセスをモデルの前で理解し、 そのためのデータセットを作成し、 ファイン・チューニングを実行し、 |
|
|
|
01:30.200 --> 01:35.360 |
|
そしてファイン・チューニングされた新しいモデルをテストする。 |
|
|
|
01:35.930 --> 01:42.290 |
|
この種のモデルの文脈では、 |
|
|
|
01:42.290 --> 01:54.020 |
|
微調整はトレーニングと同義なのです。 |
|
|
|
01:54.020 --> 02:00.680 |
|
つまり私たちは常に、 訓練済みの既存のモデル(事前訓練済みモデル)を使って、 転移学習を利用しながら訓練を重ねているのです。 |
|
|
|
02:00.680 --> 02:12.030 |
|
転移学習とは、 事前訓練済みの既存のモデルを使い、 もう少し訓練を重ねれば、 新しいタスクに対してより優れた訓練ができるようになるという理論です。 |
|
|
|
02:12.120 --> 02:14.760 |
|
そしてそれは微調整とも呼ばれる。 |
|
|
|
02:15.450 --> 02:24.030 |
|
それでは、 OpenAIで微調整を行うための3つのステップについて説明しよう。 |
|
|
|
02:24.180 --> 02:33.390 |
|
GPT4ゼロ、 あるいはGPT4ミニを獲得し、 微調整するためには、 3つのことを守る必要がある。 |
|
|
|
02:33.420 --> 02:39.270 |
|
最初のステップは、 トレーニングに使用するトレーニングデータを準備することだ。 |
|
|
|
02:39.270 --> 02:44.820 |
|
従来のモデル、 線形回帰などの文脈では、 明らかにトレーニングデータを使用する。 |
|
|
|
02:44.820 --> 02:49.170 |
|
我々はいくつかのトレーニング例を得て、 それを線形回帰モデルにかけた。 |
|
|
|
02:49.170 --> 02:50.790 |
|
だから、 トレーニングデータを作らなければならない。 |
|
|
|
02:50.820 --> 02:54.720 |
|
そしてそれをOpenAIにアップロードしなければならない。 |
|
|
|
02:54.720 --> 03:07.160 |
|
そして、 JSON L(JSON行の略)と呼ばれる特定のフォーマットでトレーニング・データを受け取る。 |
|
|
|
03:07.640 --> 03:13.880 |
|
これからトレーニング、 微調整を行い、 これらのチャートはすべて下向きになる。 |
|
|
|
03:13.880 --> 03:14.900 |
|
あなたを悩ませるかもしれない。 |
|
|
|
03:14.930 --> 03:20.270 |
|
物事がうまくいっていないように見えるが、 とんでもない。 |
|
|
|
03:20.300 --> 03:21.590 |
|
トレーニングの損失。 |
|
|
|
03:21.710 --> 03:23.960 |
|
そしてもちろん、 あなたは損失が減ることを望んでいる。 |
|
|
|
03:23.960 --> 03:25.880 |
|
つまり、 状況は良くなっているということだ。 |
|
|
|
03:25.970 --> 03:32.480 |
|
だから私たちはタカのようにチャートを注視し、 損失が減少していることを確認しようとする。 |
|
|
|
03:33.200 --> 03:39.560 |
|
そして最も重要なのは、 バッチの過程でトレーニングのロスを調べ、 |
|
|
|
03:39.590 --> 03:44.090 |
|
さらに検証のロスを調べることだ。 |
|
|
|
03:44.090 --> 03:45.740 |
|
ええと、 それも降りてくるんですか? |
|
|
|
03:45.770 --> 03:49.940 |
|
トレーニングの損失を見るだけでは、 トレーニングデータにオーバーフィットする可能性があるからだ。 |
|
|
|
03:49.970 --> 03:56.990 |
|
なぜなら、 トレーニング・データを1エポック実行するだけだからだ。 |
|
|
|
03:56.990 --> 03:58.850 |
|
そしてエポックとは、 あなたがそう呼ぶものだ。 |
|
|
|
03:58.940 --> 04:07.370 |
|
そして、 同じデータで2回目を行う。 |
|
|
|
04:07.400 --> 04:10.070 |
|
これはトレーニングの第2のエポックと呼ばれるものだ。 |
|
|
|
04:10.490 --> 04:16.130 |
|
なぜなら、 我々はトレーニングデータをたくさん持っているからだ。 |
|
|
|
04:16.130 --> 04:19.580 |
|
もう少し多くのトレーニングデータを使って、 1エポックやったほうがいいかもしれない。 |
|
|
|
04:19.580 --> 04:27.230 |
|
そして、 すべてのデータは常に新しいデータであるため、 トレーニング損失は検証損失と同様に我々にとって有用である。 |
|
|
|
04:28.100 --> 04:31.760 |
|
そして最後に結果を評価する。 |
|
|
|
04:31.760 --> 04:38.240 |
|
そして、 その結果に基づいて微調整をし、 繰り返し、 続けていく。 |
|
|
|
04:38.390 --> 04:40.310 |
|
これがその段階だ。 |
|
|
|
04:41.060 --> 04:44.870 |
|
その第一は、 データを準備することだ。 |
|
|
|
04:45.050 --> 04:53.750 |
|
だからOpenAIは、 JSON Lと呼ばれるフォーマット、 つまりJSONデータの一連の行でそれを期待する。 |
|
|
|
04:53.900 --> 04:56.030 |
|
JSONデータと同じじゃないか、 と思うかもしれない。 |
|
|
|
04:56.030 --> 04:56.870 |
|
それは違う。 |
|
|
|
04:56.870 --> 04:59.000 |
|
コレクションの中には入っていない。 |
|
|
|
04:59.000 --> 04:59.900 |
|
だからリストには入っていない。 |
|
|
|
04:59.900 --> 05:02.770 |
|
カンマ付きの角括弧では始まらない。 |
|
|
|
05:02.770 --> 05:11.410 |
|
このファイルの各行は、 中かっこで始まり、 中かっこで終わる別々のJSONオブジェクトである。 |
|
|
|
05:11.410 --> 05:16.270 |
|
これは微妙な違いだが、 JSONオブジェクトを記述していないことを想定していない場合、 |
|
|
|
05:16.270 --> 05:19.390 |
|
リストに囲まれてしまうため、 注意を引くことができる。 |
|
|
|
05:19.390 --> 05:27.550 |
|
あなたはこのファイルにJSONの行を書き、 それぞれの行は私たちにとって非常に馴染みのあるものになる。 |
|
|
|
05:27.580 --> 05:30.730 |
|
メッセージという属性を持つ。 |
|
|
|
05:30.730 --> 05:40.750 |
|
そしてそこに入るのは、 私たちがよく知っている辞書のリストであり、 各辞書には役割と内容がある。 |
|
|
|
05:40.750 --> 05:42.100 |
|
それは会話だ。 |
|
|
|
05:42.100 --> 05:45.460 |
|
つまり、 これが各列に入るものだ。 |
|
|
|
05:45.610 --> 05:51.040 |
|
おわかりのように、 この特殊なデータセットをアップロードするために細工をする。 |
|
|
|
05:52.240 --> 05:53.260 |
|
分かった。 |
|
|
|
05:53.680 --> 05:57.130 |
|
雑談はこれくらいにしておこう。 |
|
|
|
05:57.160 --> 05:58.900 |
|
Jupyter Labに行ってみよう。 |
|
|
|
05:58.900 --> 06:01.000 |
|
実際に走らせてみよう。 |
|
|
|
06:01.000 --> 06:05.230 |
|
そして初めてフロンティアモデルをトレーニングする。 |
|
|
|
06:05.260 --> 06:06.370 |
|
そうしよう。
|
|
|