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.
217 lines
8.0 KiB
217 lines
8.0 KiB
WEBVTT |
|
|
|
00:00.680 --> 00:08.750 |
|
だから将来的には、 トレーニングをしてモデルを微調整し、 微調整したモデルを作るつもりだ。 |
|
|
|
00:08.750 --> 00:16.160 |
|
そして、 これからすることは、 未来に保存しておいたもののひとつをロードすることだ。 |
|
|
|
00:16.250 --> 00:21.230 |
|
そうすれば、 その建築物を見て、 感覚をつかむことができる。 |
|
|
|
00:21.320 --> 00:24.380 |
|
そして、 ベースモデルではなく、 ロードすることでそれを実現する。 |
|
|
|
00:24.440 --> 00:35.630 |
|
このような、 えーと、 えーと、 事前に訓練された因果LLMの自動モデルではなく、 事前に訓練されたパラメータ効率の良い微調整モデルであるPeftモデルである。 |
|
|
|
00:35.630 --> 00:39.350 |
|
そして、 今ここにあるのがベースモデルであることを伝える。 |
|
|
|
00:39.350 --> 00:40.760 |
|
そしてモデルを微調整する。 |
|
|
|
00:40.760 --> 00:44.570 |
|
このようにして保存したモデルの名前がこれだ。 |
|
|
|
00:44.570 --> 00:45.950 |
|
ローラの微調整 |
|
|
|
00:45.950 --> 00:48.920 |
|
どんな風に見えるかをお見せするためにやっているんだ。 |
|
|
|
00:48.950 --> 00:54.440 |
|
これは比較的小さいから、 すぐに終わるよ。 |
|
|
|
00:54.590 --> 00:56.870 |
|
サイズを見てみよう。 |
|
|
|
00:56.870 --> 01:02.270 |
|
そのため、 メモリフットプリントはギガバイトになる。 |
|
|
|
01:02.270 --> 01:06.170 |
|
そして、 それはこの件に非常に近いので、 あなたにも馴染みがあるはずだ。 |
|
|
|
01:06.320 --> 01:10.940 |
|
ええと、 その差は約100MBです。 |
|
|
|
01:10.940 --> 01:12.440 |
|
見てみよう。 |
|
|
|
01:13.250 --> 01:18.470 |
|
つまり、 これがこの製品のアーキテクチャーだ。 |
|
|
|
01:18.740 --> 01:22.340 |
|
今はもう、 そんな芸当はしない。 |
|
|
|
01:22.370 --> 01:24.530 |
|
これは以前見たものとは明らかに違う。 |
|
|
|
01:24.530 --> 01:26.360 |
|
そして、 私たちが見ていることをお話ししましょう。 |
|
|
|
01:26.360 --> 01:35.420 |
|
まず第一に、 ここまでの内容は、 32ラマ・デコーダーのレイヤーがあるところまでは同じです。 |
|
|
|
01:35.420 --> 01:49.340 |
|
そして今、 私たちはこの注目のレイヤーにたどり着き、 Qプロジ、 Kプロジ、 Vプロジ、 Oプロジのレイヤーがある。 |
|
|
|
01:49.340 --> 01:53.930 |
|
そして、 これらにはそれぞれベースレイヤーがある。 |
|
|
|
01:53.930 --> 01:57.410 |
|
そしてロラAとロラBがある。 |
|
|
|
01:57.500 --> 02:07.060 |
|
そしてこれが、 以前お話ししたA行列とB行列で、 ここに32番があります。 |
|
|
|
02:07.060 --> 02:11.260 |
|
それが先ほどのR、 ローラランクだ。 |
|
|
|
02:11.290 --> 02:14.050 |
|
これらは32ランクの行列である。 |
|
|
|
02:14.200 --> 02:16.270 |
|
うーん、 そうだね。 |
|
|
|
02:16.300 --> 02:24.160 |
|
行列の計算の仕方に詳しい方なら、 32の次元を掛け合わせることで、 このベースレイヤーに適用し、 |
|
|
|
02:24.160 --> 02:39.130 |
|
そのベースレイヤーにわずかなシフトを加えることができるように設計されているのがおわかりでしょう。 |
|
|
|
02:39.130 --> 02:45.760 |
|
理論に拘泥したいので、 また少し手垢がついているが、 これらは掛け合わされるということだ。 |
|
|
|
02:45.790 --> 02:46.720 |
|
ローラAとローラ |
|
|
|
02:46.750 --> 02:53.890 |
|
Bにスケーリングファクターであるアルファを加えたものが、 適用するデルタとして使われる。 |
|
|
|
02:53.890 --> 02:59.890 |
|
このベースレイヤーの上に、 ドロップアウトと呼ばれる別のハイパーパラメーターがある。 |
|
|
|
03:00.010 --> 03:01.870 |
|
それについては後で話す。 |
|
|
|
03:01.870 --> 03:04.360 |
|
それは今週話したビッグ3のうちの一つではない。 |
|
|
|
03:04.990 --> 03:07.180 |
|
しかし、 ここではその特徴を何度か目にすることになるだろう。 |
|
|
|
03:07.180 --> 03:13.060 |
|
4つのターゲット・モジュールのうち、 |
|
|
|
03:13.060 --> 03:20.020 |
|
他のモジュールを見てみると、 ローラAとローラBがあり、 |
|
|
|
03:20.020 --> 03:36.430 |
|
ここにもローラAとローラBがある。 |
|
|
|
03:36.460 --> 03:42.400 |
|
Rのハイパーパラメータで指定された32次元だ。 |
|
|
|
03:43.510 --> 03:45.220 |
|
ええと、 他は何も変わっていない。 |
|
|
|
03:45.220 --> 03:48.880 |
|
多層パーセプトロン層もまったく同じである。 |
|
|
|
03:49.060 --> 03:51.130 |
|
うーん、 他は全部同じだよ。 |
|
|
|
03:52.090 --> 03:58.720 |
|
もう一度言っておくが、 私たちはこの件に拘泥しないようにしているが、 |
|
|
|
03:58.720 --> 04:07.720 |
|
この4つの行列の次元数がこれであることを納得するために振り返ってみるといい。 |
|
|
|
04:07.720 --> 04:14.530 |
|
それぞれにローラAとローラBがあり、 そのマトリックスの次元を掛け合わせることで、 |
|
|
|
04:14.530 --> 04:20.890 |
|
これらのアダプター全体でいくつの次元、 いくつのウェイトがあるかがわかる。 |
|
|
|
04:20.890 --> 04:25.210 |
|
そして各レイヤーについて、 この4つの数字を合計するということだ。 |
|
|
|
04:25.210 --> 04:31.990 |
|
モジュールのグループが32個あるので、 それを32倍する。 |
|
|
|
04:32.800 --> 04:37.120 |
|
そして、 これらのパラメーターはそれぞれ4バイトの数字である。 |
|
|
|
04:37.120 --> 04:38.350 |
|
32ビットだ。 |
|
|
|
04:38.350 --> 04:43.570 |
|
それでサイズを計算し、 それを100万で割ってメガバイトにする。 |
|
|
|
04:43.870 --> 04:48.580 |
|
ローラ・アダプタのウエイトをすべて合計すると、 |
|
|
|
04:48.580 --> 05:02.830 |
|
2700万個のパラメータがあり、 合計サイズは約109MBになる。 |
|
|
|
05:02.830 --> 05:07.190 |
|
つまり、 2,700万個のパラメータは、 100.9メガバイトのサイズということになる。 |
|
|
|
05:07.190 --> 05:10.730 |
|
それくらい私たちのアダプターは大きい。 |
|
|
|
05:11.030 --> 05:20.840 |
|
そしてもちろん、 llama全体が80億のパラメーターを持ち、 サイズが32GBであることと比較してほしい。 |
|
|
|
05:20.840 --> 05:33.290 |
|
多くのパラメータとトレーニングが必要だが、 ラマ3のような巨大なものに比べれば小さなものだ。 |
|
|
|
05:33.290 --> 05:33.290 |
|
1、 小さなバリエーションであっても。 |
|
|
|
05:33.290 --> 05:46.490 |
|
しかし、 このような低次元の行列を使うことで、 より大きなアーキテクチャに影響を与えることができるということを、 |
|
|
|
05:46.490 --> 06:00.320 |
|
直感的に理解していただければと思います。 |
|
|
|
06:00.680 --> 06:09.870 |
|
そして、 この109MBという数字が、 私が実際にハグすることができるパラメータのサイズであることを証明するものでもある。 |
|
|
|
06:09.900 --> 06:18.810 |
|
私は今、 ハグをしている。 そして、 あの特別なローラ・アダプター、 微調整されたモデルをどこに保存したか、 そして何を見つけるかを見ている。 |
|
|
|
06:18.810 --> 06:22.320 |
|
これらを見るとき、 セーフ・テンソルと呼ばれるものを探す。 |
|
|
|
06:22.320 --> 06:26.070 |
|
これは、 パラメーターそのものを保存するファイルである。 |
|
|
|
06:26.310 --> 06:31.530 |
|
そして、 ラマ3について見てみよう。 1、 32GBの大容量であることがわかるだろう。 |
|
|
|
06:31.530 --> 06:42.540 |
|
これを見ると、 パラメータが109MB、 109MBであることがわかる。 |
|
|
|
06:42.540 --> 06:49.830 |
|
それが、 このQラウラを使って微調整するパラメーターの大きさだ。 |
|
|
|
06:50.310 --> 07:01.470 |
|
少なくとも、 ここで何が起こっているのか、 そして最適化するために何GBものデータを必要とせずにモデルを微調整することができるというトリックをどのように使っているのか、 |
|
|
|
07:01.470 --> 07:05.250 |
|
きちんとした直感をつかんでいただけたと思います。 |
|
|
|
07:06.000 --> 07:09.720 |
|
ということで、 スライドに戻り、 まとめとしたい。
|
|
|