WEBVTT 00:00.620 --> 00:08.330 そこで今回は、 4ビットの量子化について見ていくことにする。 00:08.330 --> 00:13.460 つまり、 ビットとバイトを使ってクオンツのコンフィグを作成する前とよく似ている。 00:13.700 --> 00:17.150 しかし、 今回は4ビット・イコールでロードするように頼んだ。 00:17.150 --> 00:17.750 その通りだ。 00:17.780 --> 00:19.370 他にもいくつかの設定がある。 00:19.370 --> 00:24.710 今回は "use double Quant "という、 これまたちょっと不思議なものがある。 00:24.710 --> 00:32.270 ここでの考え方は、 すべてのウエイトを量子化するパススルーを行い、 その後、 もう一度パススルーを行うというものだ。 00:32.270 --> 00:36.830 そうすることで、 さらに10~20%ほどメモリを減らすことができるんだ。 00:36.860 --> 00:38.990 ここからもう少し絞り出す。 00:39.080 --> 00:46.940 そしてこれは、 ニューラルネットワークのパワーにごくわずかな違いをもたらすことが実験的に示されている。 00:46.940 --> 00:48.470 だから、 ほとんどタダ同然だ。 00:48.500 --> 00:51.020 またケーキを食べているような状況だ。 00:51.020 --> 00:54.980 そのため、 ダブルクアントをトゥルーとして使用することを推奨する。 00:55.130 --> 01:01.280 このcompute dtypeは、 計算中に使用されるデータ型に関するものである。 01:01.490 --> 01:06.350 そして一般的に、 ここでは32ビットの浮動小数点数を使うことができる。 01:06.350 --> 01:14.240 しかし、 Bfloat16データ型バイナリフロート16を使用することは、 トレーニングの質をほんの少し犠牲にするだけで、 01:14.240 --> 01:20.480 トレーニングのスピードを向上させ、 より速くするものだと考えられている。 01:20.630 --> 01:30.470 確かに、 私がこれを試したとき、 より速く走るのを見たが、 最適化の速度に実際の変化を検出することはできなかった。 01:30.710 --> 01:32.750 だから、 これは絶対にお勧めだ。 01:32.750 --> 01:35.750 しかし、 繰り返すが、 これはハイパーパラメーターであり、 試してみることができる。 01:35.750 --> 01:40.220 そしてこれが4ビットのクオンツタイプ。 01:40.220 --> 01:46.730 これは、 精度を4ビットに落としたとき、 その4ビットをどう解釈すべきかということだ。 01:46.760 --> 01:55.790 4ビットが0000から1111までなら、 0から15までの整数を表していることになる。 01:55.820 --> 01:57.800 それも一つの方法かもしれない。 01:57.830 --> 02:02.690 それを解釈して、 浮動小数点数のようなものにマッピングするのが一般的だ。 02:02.810 --> 02:08.750 そして、 このnf4のアプローチは、 それを正規分布に対応させるものなんだ。 02:08.780 --> 02:11.540 そしてまた、 これは非常に一般的な設定でもある。 02:11.540 --> 02:13.550 僕が使ってきたものだよ。 02:13.580 --> 02:16.010 他のものを試したが、 それほど良くなかった。 02:16.040 --> 02:18.620 だから、 一般的にはこれが推奨されている。 02:18.620 --> 02:23.090 しかし、 これはハイパーパラメーターであり、 試行錯誤が可能であることを意味する。 02:23.600 --> 02:31.370 これを念頭に置いて、 4ビット量子化用のごく標準的なクオンツ・コンフィグを作成する。 02:31.370 --> 02:38.570 これでベースモデルを作り、 メモリのフットプリントを印刷する。 02:38.570 --> 02:43.010 そして驚くべきことに、 我々は5人になってしまった。 6GB。 02:43.040 --> 02:48.770 しかし、 ベースモデルの実物が32GBだったことを思い出すと、 02:48.770 --> 02:54.470 本当にずいぶん小さくなったものだ。 02:54.470 --> 03:01.580 これで、 この安いT4ボックスのGPUのメモリに余裕で収まるようになった。 03:01.580 --> 03:04.940 ベースモデルを見れば、 そのアーキテクチャがわかるだろう。 03:04.970 --> 03:07.580 もうあんな馬鹿げた冗談は言わないよ。 03:07.670 --> 03:15.920 もちろん、 80億リラマのオリジナルモデルのアーキテクチャと同一である。 03:16.280 --> 03:22.130 ただ、 この奥の奥では、 ウエイトの精度が低くなっている。 03:22.130 --> 03:23.150 4ビットだ。 03:23.960 --> 03:24.740 オーケー。 03:24.740 --> 03:28.160 次のビデオでは、 この時点でセッションを再開してはいけない。 03:28.160 --> 03:34.490 このセッションはこのままにしておいて、 次のビデオでは、 微調整されたモデルの例をロードして、 03:34.490 --> 03:40.160 ローラの適応がこのアーキテクチャにどのように適用されるかを見てみよう。 03:40.190 --> 03:41.030 そこで会おう