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.
211 lines
7.6 KiB
211 lines
7.6 KiB
WEBVTT |
|
|
|
00:00.950 --> 00:05.870 |
|
そして今、 qとqラウラの量子化について話している。 |
|
|
|
00:05.900 --> 00:07.730 |
|
Qは量子化された量子化の略。 |
|
|
|
00:07.760 --> 00:08.420 |
|
ローラ |
|
|
|
00:08.420 --> 00:12.620 |
|
確か3週目に量子化について少し触れた。 |
|
|
|
00:12.620 --> 00:14.480 |
|
だから、 覚えていることもあるだろう。 |
|
|
|
00:14.480 --> 00:17.540 |
|
でも、 これからは本音で話そう。 |
|
|
|
00:18.080 --> 00:20.630 |
|
問題はここからだ。 |
|
|
|
00:20.630 --> 00:28.700 |
|
我々はこのような小さなモデル、 つまり80億パラメータ版のラマ3で作業している。 1. |
|
|
|
00:28.700 --> 00:36.950 |
|
私たちは、 より少ない次元の行列を扱うことで、 より多くのメモリを確保できるよう、 ローラという賢いスキームを考え出した。 |
|
|
|
00:37.130 --> 00:42.740 |
|
しかし問題は、 そのベースモデルでさえ、 その小型版、 80億版でさえ、 |
|
|
|
00:42.740 --> 00:46.730 |
|
32GBのラムを消費するということだ。 |
|
|
|
00:46.730 --> 00:52.880 |
|
これは80億個の浮動小数点数で、 それぞれ32ビット長だ。 |
|
|
|
00:53.000 --> 00:56.480 |
|
それでGPUがいっぱいになるんだ。 |
|
|
|
00:56.510 --> 01:05.530 |
|
実際、 T4ボックスで使用される安価なGPUには15GBのメモリしか搭載されていないため、 ベースモデル自体にすら適合しない。 |
|
|
|
01:05.530 --> 01:08.740 |
|
すぐにメモリ不足になるから、 それは問題だ。 |
|
|
|
01:08.770 --> 01:13.570 |
|
ローラは僕らにとって物事をより良くするのにとても役に立つが、 ベースモデル自体をメモリに収めることもできないので、 |
|
|
|
01:13.570 --> 01:15.880 |
|
十分とは言えない。 |
|
|
|
01:15.880 --> 01:23.920 |
|
というのも、 80億という数字は、 ある世界では小さなモデルサイズかもしれないが、 それでも膨大な数のパラメーターがあることに変わりはないからだ。 |
|
|
|
01:24.190 --> 01:27.940 |
|
そして、 それが私たちに課題を与えている。 |
|
|
|
01:28.240 --> 01:31.810 |
|
そこで驚くべき発見がなされた。 |
|
|
|
01:31.810 --> 01:33.970 |
|
それが私たちの仕事だ。 |
|
|
|
01:34.120 --> 01:37.870 |
|
そして、 最初は、 それは本当であるにはあまりにも良すぎるように聞こえる。 |
|
|
|
01:37.900 --> 01:40.480 |
|
これはケーキを食べながらケーキを食べる方法のようだ。 |
|
|
|
01:40.480 --> 01:41.950 |
|
そして、 それはある種のものだ。 |
|
|
|
01:42.190 --> 01:51.310 |
|
つまり、 80億のパラメーターがあるのだから、 80億のパラメーターを使えばいいという考え方もある。 |
|
|
|
01:51.310 --> 01:58.600 |
|
40億のパラメーターを持つモデルのようにパラメーターを少なくしようとすれば、 モデルのパワーの多くを失うことになる。 |
|
|
|
01:58.600 --> 02:01.900 |
|
この80億のパラメーターは、 私たちにたくさんのノブを与えてくれる。 |
|
|
|
02:01.930 --> 02:04.270 |
|
それはこの非常に巧妙な建築にある。 |
|
|
|
02:04.270 --> 02:05.800 |
|
大きな力を与えてくれる。 |
|
|
|
02:05.830 --> 02:06.370 |
|
分かった。 |
|
|
|
02:06.370 --> 02:09.080 |
|
だから、 パラメーターの数を減らすのはやめよう。 |
|
|
|
02:09.080 --> 02:15.200 |
|
そうする代わりに、 それぞれのパラメーターの精度を下げよう。 |
|
|
|
02:15.230 --> 02:21.050 |
|
非常に細かく砥石を回すことができる代わりに、 カチッ、 カチッ、 カチッ、 カチッ、 カチッ、 カチッ、 カチッ、 カチッ、 カチッ、 カチッ、 カチッ、 カチッ、 |
|
|
|
02:21.050 --> 02:25.100 |
|
カチッ、 カチッ、 カチッ、 カチッ、 カチッ、 といくつかの設定を通過させることができるようにするんだ。 |
|
|
|
02:25.310 --> 02:32.450 |
|
それで、 それぞれのウエイトの精度を下げて、 ウエイトの数は同じにしようと考えたんだ。 |
|
|
|
02:32.480 --> 02:37.010 |
|
論理的に考えればそうかもしれないが、 情報量を減らしているだけだ。 |
|
|
|
02:37.010 --> 02:43.730 |
|
確かに、 情報量が半分になれば、 ウエイトの数が半分になるのと似たようなものだろう。 |
|
|
|
02:43.760 --> 02:46.280 |
|
そうではないことがわかったんだ。 |
|
|
|
02:46.280 --> 02:52.520 |
|
どんな理由であれ、 精度を下げればニューラルネットワークの質は多少落ちるが、 |
|
|
|
02:52.520 --> 02:55.100 |
|
思ったほどではない。 |
|
|
|
02:55.100 --> 02:57.920 |
|
まだ多くのパワーを保っている。 |
|
|
|
02:58.160 --> 03:06.560 |
|
そして、 これは同じパラメーター数でより大きなモデルをメモリにフィットさせるための素晴らしいトリックであることがわかった。 |
|
|
|
03:06.560 --> 03:10.220 |
|
精度が低いというだけで、 より少ないメモリしか消費しない。 |
|
|
|
03:10.580 --> 03:14.210 |
|
だから、 驚くほどうまく機能している。 |
|
|
|
03:14.300 --> 03:21.020 |
|
実際、 通常の32ビットの浮動小数点数を8ビットに減らしても、 |
|
|
|
03:21.020 --> 03:26.000 |
|
十分なパフォーマンスを得ることができる。 |
|
|
|
03:26.000 --> 03:29.540 |
|
そして、 ここからが本当にクレイジーに聞こえ始めるところだ。 |
|
|
|
03:29.630 --> 03:32.480 |
|
4ビットまで減らすことができる。 |
|
|
|
03:32.480 --> 03:35.210 |
|
つまり、 それぞれの数字は単なる4ビットの数字なのだ。 |
|
|
|
03:35.240 --> 03:42.950 |
|
整数の観点から考えるなら、 それぞれの数字が0から15まで進んでいるようなものだ。 |
|
|
|
03:43.160 --> 03:45.020 |
|
ただ、 整数で。 |
|
|
|
03:45.560 --> 03:47.510 |
|
それだけ精度が低いということだ。 |
|
|
|
03:47.510 --> 03:51.620 |
|
16の設定があるだけのクリックとかね。 |
|
|
|
03:52.010 --> 03:55.190 |
|
うーん、 それでもかなりいいパフォーマンスが得られる。 |
|
|
|
03:55.340 --> 03:55.670 |
|
もちろんだ。 |
|
|
|
03:55.670 --> 04:00.770 |
|
品質が落ちるのは少しだが、 ほんの少しだ。 |
|
|
|
04:01.010 --> 04:03.200 |
|
それで、 これが直感だったんだ。 |
|
|
|
04:03.200 --> 04:10.310 |
|
そしてもちろん、 これによって必要なメモリが劇的に削減され、 より大きなモデルをメモリに収めることができるようになる。 |
|
|
|
04:10.790 --> 04:14.420 |
|
細かい技術的なことをいくつか挙げておこう。 |
|
|
|
04:14.780 --> 04:17.810 |
|
そのひとつが、 先ほど話したクリックスイッチだ。 |
|
|
|
04:17.810 --> 04:20.510 |
|
0から15までの数字のようなものだと考えればいい。 |
|
|
|
04:20.510 --> 04:31.940 |
|
一般的には、 整数として解釈されることはなく、 4ビットが浮動小数点数として使用される。 |
|
|
|
04:31.940 --> 04:34.970 |
|
そして、 現実の例を見ればわかるだろう。 |
|
|
|
04:35.360 --> 04:39.740 |
|
そして、 もうひとつ指摘しておきたいのは、 カラーが初めて登場した当初は、 |
|
|
|
04:39.770 --> 04:53.390 |
|
私が理解していなかったことなのですが、 これはベースモデルを量子化しているのであって、 ローラ・アダプターを量子化しているわけではないということです。 |
|
|
|
04:53.570 --> 05:02.300 |
|
つまり、 ベースモデルの精度を下げて、 この巨大で素晴らしいベースモデルをメモリに収まるようにしようという話なんだ。 |
|
|
|
05:02.300 --> 05:04.490 |
|
それがクー・ロラなんだ。 |
|
|
|
05:04.520 --> 05:05.840 |
|
それが量子化だ。 |
|
|
|
05:05.840 --> 05:10.250 |
|
あと少しでラボで見ることができるのだから、 よりリアルに感じられるだろう。 |
|
|
|
05:10.250 --> 05:16.640 |
|
その前に、 次のビデオで3つの重要なハイパーパラメーターについてお話ししたいと思います。
|
|
|