ホームページ >テクノロジー周辺機器 >AI >大規模な言語モデル(LLMS)の量子化:AIモデルサイズを効率的に削減する
ラップトップで独自のchatgptを実行する:LLM量子化のガイド
ラップトップで直接自分のchatgptを実行することを夢見たことがありますか? 大規模な言語モデル(LLMS)の進歩のおかげで、これは現実になりつつあります。 キーは量子化です。これは、パフォーマンスの損失を最小限に抑えて消費者ハードウェアに適合するようにこれらの大規模なモデルを縮小する手法です(正しく行われた場合!)。このガイドでは、量子化とその方法を説明し、2つの簡単なステップでFaceのQuantoライブラリを抱きしめてモデルをQuantizeする方法を示します。 DataCamp Datalabを使用してフォローしてください
llmsの増え続けているサイズllmsは複雑さで爆発しました。 GPT-1(2018)には010億パラメーターがありました。 GPT-2(2019)、15億; GPT-3(2020)、なんと1750億。そして、GPT-4は1兆以上を誇っています。この大成長は、メモリボトルネックを作成し、トレーニングと推論の両方を妨げ、アクセシビリティを制限します。 量子化は、パフォーマンスを維持しながらモデルのサイズを縮小することでこれを解決します。
量子化の理解
量子化は、モデルの重みと活性化の精度を低下させるモデル圧縮技術です。 これには、データを高精度のタイプ(32ビットの浮動小数点など)から低精度タイプ(8ビット整数など)に変換することが含まれます。 ビットが少ないということは、モデルが小さいことを意味し、メモリ、ストレージ、エネルギーが少なくなります。
画像圧縮について考えてください:高解像度の画像は、Web使用のために圧縮され、サイズと読み込み時間をいくつかの詳細を犠牲にします。 同様に、LLMを量子化すると計算需要が減少し、強力なハードウェアで実行できます。
より高速なWeb読み込みのための画像圧縮
量子化はノイズ(量子化エラー)を導入しますが、研究ではパフォーマンスを維持するためにこれを最小化することに焦点を当てています。量子化の背後にある理論
例:重量マトリックス(左)とその量子化バージョン(右)。
元のマトリックスと量子化されたマトリックスの違いは、量子化誤差です。
量子化エラーマトリックス
実際には、量子化にはデータ型(ダウンキャスティング)の変更が含まれます。 たとえば、Float32(パラメーターあたり4バイト)からINT8(パラメーターごとに1バイト)に変換すると、メモリ使用量が大幅に削減されます。
脳浮動小数点(BF16)およびダウンキャスティングGoogleが開発した
BF16は、Float32のダイナミックレンジとFloat16の効率のバランスを提供します。ダウンキャスティング - 高精度から低精度データ型への変換 - 特にデータ型が小さい場合、データの損失とエラーの伝播につながる可能性があります。 量子化のタイプいくつかの量子化タイプが存在します:
線形量子化:
線形量子化方程式
例:重量マトリックスの線形量子化
脱来誤差と量子化誤差
ブロックワイズの量子化:小さなブロックの重みを量子化し、不均一な分布をより効果的に処理します。
重量対活性化量子化:
トレーニング後の量子化(PTQ)対量子化対応トレーニング(QAT):
PTQは、事前に訓練されたモデルを定量化します。 QATは、量子化効果をシミュレートするトレーニングを変更し、精度が向上しますが、トレーニング時間の増加につながります。キャリブレーション 一部の方法では、キャリブレーションが必要です。量子化パラメーターを最適化するためにデータセットの推論を実行します。 手法には、パーセンタイルキャリブレーションと平均/標準偏差キャリブレーションが含まれます。 Qloraのような方法は、キャリブレーションを避けています 量子化のためのツール
を抱きしめてモデルを量子化します Pythia 410Mモデルを使用した段階的なガイド:を使用してください
from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "EleutherAI/pythia-410m" model = AutoModelForCausalLM.from_pretrained(model_name, low_cpu_mem_usage=True) tokenizer = AutoTokenizer.from_pretrained(model_name)
quantize()
from quanto import quantize, freeze quantize(model, weights=torch.int8, activations=None)
freeze()
freeze(model)
compute_module_sizes()
結論
llm量子化FAQ
quantize()
メソッドが利用できます
calibration()
model_name
以上が大規模な言語モデル(LLMS)の量子化:AIモデルサイズを効率的に削減するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。