見出し画像

ローカルLLMが動く理由、ちゃんとわかってる?「AI量子化」の仕組みを紐解く

僕がローカルLLMを初めて動かしたとき、ひとつ引っかかったことがあった。

「え、Llama 3の70Bって70億パラメータでしょ。それがなんで普通のノートPCで動くの?」

あのとき、なんとなく「量子化っていうやつが圧縮してくれてるらしい」と聞いた気がして、まあそうか、と思って流した。でも正直、仕組みはフワッとしたままだった。

量子化とは、AIモデルのデータを荒削りに変換して軽くする技術なんだよね。

で、最近あらためてちゃんと調べたら、これが思った以上に面白かった。ただの「圧縮」じゃなくて、もっとちゃんとした戦略がある。今日はそれを一緒に見ていきたい。


🔢 そもそも「数値の精度」って何の話?

AIモデルの中身は、ざっくり言うと膨大な数値の塊だ。ニューラルネットワークの「重み(weight)」と呼ばれるパラメータが、数十億個から数百億個、ずらーっと並んでいる。

普通、これらの数値はFP32(32ビット浮動小数点数)やFP16(16ビット)という形式で保存されている。要は、「小数点以下何桁まで細かく表現するか」の話で、桁数が多いほど正確だけど、その分メモリをたくさん食う。

たとえばLlama 3の70B(700億パラメータ)モデルをFP16で保存すると、計算上は約140GB。一般的なGPUのVRAMをはるかに超えてしまうよね。

そこで「量子化」の出番だ。


⚖️ 量子化の基本:精度を削って軽くする

量子化というのは、FP16(16ビット)の数値を、INT8(8ビット整数)やINT4(4ビット整数)に変換することで、モデルのサイズを劇的に減らす技術だ。

ざっくりこんなイメージ。

  • FP16(16ビット)→ 表現できる数値の種類:65,536通り

  • INT8(8ビット)→ 256通り

  • INT4(4ビット)→ 16通り

「え、16通りしかないの?それで大丈夫?」ってなるよね。ぼくもなった。

でも実際には、モデルの重みのほとんどは特定の範囲に集中していて、そこを効率よく整数にマッピングしてやれば、精度の劣化は思ったほど大きくないらしい。8ビットならほぼ劣化なし、4ビットでも多くのタスクで実用範囲内というのが、ここ数年の実験で明らかになってきた感じだ。


🛠️ 主な量子化フォーマット:GGUF、GPTQ、AWQ

ローカルLLMを試したことある人なら、こういうファイル名を見たことがあるんじゃないかな。

Llama-3-8B-Instruct.Q4_K_M.gguf

この「GGUF」や「Q4_K_M」というのが、量子化のフォーマットと方式を表している。主要なものを整理すると、こんな感じ。

GGUF(CPU向けの万能フォーマット)

llama.cppというオープンソースプロジェクトが使っている形式で、GPUがなくてもCPUだけでLLMを動かせるのが最大の特徴だ。OllamaやLM Studioで使われているのがこれ。

Q4_K_Mの「Q4」は4ビット量子化、「K」は重要な層とそうでない層でビット数を変える混合精度戦略(K-quants)、「M」はMedium(中間)という意味。層ごとに重要度を変えて丁寧に量子化してくれてるわけだ。

初めてローカルLLMを試すなら、まずQ4_K_Mから入るのがバランス的に一番無難じゃないかな。

GPTQ(GPU向けの定番)

勾配情報を使って量子化誤差を最小化する手法で、GPU上での推論に最適化されている。GGUFよりエコシステムの歴史が長い。ただし量子化の処理に時間がかかることと、GPU専用というのがネックで、最近は後述のAWQに押されている面もある。

AWQ(GPUでの新定番になりつつある)

AWQはGPTQの発展形に近い位置づけで、「重みの中でも精度に大きく影響するものと、そうでないものを区別する」という発想が特徴的だ。重要度の高いパラメータだけ高精度で保護しながら、残りを大胆に量子化する。同じビット数でもGPTQより精度が高い傾向があり、量子化の処理速度も速い。2024年以降、GPU向けの実用的な選択肢として急速に広まってきた印象がある。


🎯 「どれを選ぶか」は環境次第

量子化の選び方は、自分のPCの環境によってかなり変わってくる。

  • GPUがない、またはCPUだけで試したい → GGUFのQ4_K_M

  • GPUが乗っていてVRAMに余裕がある → AWQかGPTQを検討

  • 量子化なし(最高精度)が必要 → BF16かFP16のフルモデル(ただしVRAMが大量に必要)

大事なのは「精度を犠牲にしてる」という感覚を過度に持たないこと。8ビットくらいなら、日常的な質問応答や文章生成では、フルモデルとの差はほぼ体感できないことが多い。4ビットでも、多くのタスクで「まあ使えるじゃん」になる。

ぼくが最初に量子化モデルを試したとき、「あ、普通に答えるじゃん」ってなった記憶がある。それがローカルLLMの面白さでもあるんだよね。


🤔 Miccellの視点:量子化は「AIの民主化」そのものだと思う

量子化がなければ、LLMはクラウドだけの存在だったはずだ。高価なGPUサーバーを持つ一部の会社だけが使えるもの、という世界線がありえた。

でも量子化の技術が進んだことで、手元のノートPCでも70Bクラスのモデルが動くようになった。ネットにつながなくても、データをどこかのサーバーに送らなくても、手元でAIを動かせる。

これって、単純に「すごい」じゃなくて、プライバシーの観点でも、コストの観点でも、アクセスできる人が増えるという意味でも、かなり大きい話だと思う。

技術的な詳細を追いかけると、量子化の世界は今も急速に進化中で、たとえば1ビット量子化(BitNet)なんていう研究もあって、極端に精度を落とした重みでもちゃんと動かせる方向性を探っている。どこまで削れるか、という挑戦は続いている。


📝 まとめ:量子化を知ると、ローカルLLMの見え方が変わる

今日の話をざっとまとめると、こんな感じだ。

  • 量子化とは、AIモデルの数値の精度(ビット数)を落としてファイルサイズを小さくする技術

  • 精度は少し落ちるが、実用上は8ビットでほぼ問題なし、4ビットでも多くのケースで使える

  • GGUFはCPUでも動く万能フォーマット、AWQとGPTQはGPU向け

  • 量子化がなければ、ローカルLLMという選択肢はなかった

OllamaでLlama 3を動かしたことある人、あの快適さは量子化があってこそなんだよね。改めてそう思うと、なんか「仕組みがわかれば、ちょっと愛着が増す」感じがしない?

ぼくはある(笑)。

量子化モデルを実際に試したことある人、どの形式が一番使いやすかったか、ぜひコメントで教えてほしい。


🛠️ 製作ノート

この記事、量子化の話って「どこから入るか」がけっこう難しかった。

FP32、INT8って言葉を出した瞬間に「難しそう」ってなりそうなんだけど、「70BモデルがノートPCで動く理由がわからなかった」というぼくの実体験から入ることで、ちょっと読みやすくなったかな……と思っている。

あと、GGUF・GPTQ・AWQの三つの話は、下手したら比較表を作りたくなるところなんだけど、noteはテーブル非対応なのと、この記事のノリ的にも「流れで理解できる」方向を選んだ。読み返してみてどうだろうか?


Miccell - 仕組みがわかれば、世界はもっと面白くなる。

いいなと思ったら応援しよう!