powered by TechFeed
表示モード
Deep Dive

ローカルLLMの「Q4_K_M」「4.65bpw」は何を意味するのか — GGUF・GPTQ・AWQ・EXL2の違いと使い分け2026年版

9月19日、MarkTechPostが「GGUF vs GPTQ vs AWQ vs EXL2: LLM Model Formats Explained (2026)」と題した記事を公開した。ローカルでLLMを動かす際、Hugging FaceのモデルページにはQ4_K_M.ggufや4bit-128g、4.65bpwといった記法が並ぶ。これらは一見似ているが、コンテナ形式と量子化手法という異なるレイヤーが混在している。本記事はその整理から始まる。

9月19日、MarkTechPostが「GGUF vs GPTQ vs AWQ vs EXL2: LLM Model Formats Explained (2026)」と題した記事を公開した。ローカルでLLMを動かす際、Hugging FaceのモデルページにはQ4_K_M.gguf4bit-128g4.65bpwといった記法が並ぶ。これらは一見似ているが、コンテナ形式量子化手法という異なるレイヤーが混在している。本記事はその整理から始まる。


まず概念を分離する:コンテナ vs. 量子化手法

  • コンテナ(ディスク上の格納形式):safetensors、GGUF、PyTorch pickle(.bin / .pt
  • 量子化手法(重みを少ないビット数に圧縮する方法):GPTQ、AWQ、bitsandbytes NF4、llama.cpp K-quants / I-quants
  • 両方を兼ねるもの:EXL2・EXL3は手法と格納レイアウトが一体化しており、特定のInferenceライブラリに紐づく

メモリの概算式はシンプルだ:

重みのメモリ ≈ パラメータ数 × ビット数 ÷ 8

モデル 16-bit 約4.5 bits/weight
8B 約16 GB 約4.5 GB
70B 約140 GB 約39 GB

これはKVキャッシュやランタイムのオーバーヘッドを含まない、重みのみの数値だ。


GGUF(llama.cpp)— ローカル運用の事実上の標準

GGUFは2023年8月21日にllama.cppの作者Georgi Gerganovが旧GGML形式の後継として導入したバイナリ形式だ。旧GGML・GGMF・GGJTはアーキテクチャ情報を持てず、ハイパーパラメータを追加するたびに既存ファイルが壊れていた。GGUFは型付きキー・バリューのメタデータに切り替え、後方互換性を確保した。

トークナイザ、特殊トークン、Jinjaチャットテンプレートまで1ファイルに収められる点が特徴で、mmapによる部分ロードも可能だ。

Q4_K_Mなどの命名を読み解く

タイプ 仕組み bits/weight
Q4_K 8ブロック×32重み、6-bitスケールと最小値 4.5
Q5_K 同構成、5-bit量子化 5.5
Q6_K 16ブロック×16重み、8-bitスケール 6.5625
IQ4_XS 256重みスーパーブロック、重要度行列使用 4.25
IQ1_S I-quantファミリー最軽量 1.56

_S / _M / _Lサフィックスは新しいタイプではなく、テンソルごとに量子化レベルを混在させたミックスだ。たとえばQ4_K_Mはattention.wvfeed_forward.w2の半分にQ6_Kを使い、残りにQ4_Kを使う。そのため平均ビット数は4.5を超える。

実際の品質トレードオフ(Llama-2-7Bクラスでの参考値)

量子化 パープレキシティ FP16比 サイズ
FP16 5.9565 ベースライン 13.0 GB
Q8_0 5.9584 +0.03% 7.0 GB
Q4_K_M 6.0565 +1.68% 4.1 GB

Q8_0が「ほぼ無損失」の実用的な上限、Q4_K_Mが精度とサイズのバランス点という目安になる。

GGUFはllama.cpp・LM Studio・GPT4All・Ollamaで動作する。vLLMサポートは存在するが「実験的・最適化不足」と明記されており、vllm-gguf-pluginが別途必要だ。


GPTQ — Hessian情報を使った高精度量子化

GPTQは2022年10月にIST Austria・ETH Zurichの研究者らが発表し、ICLR 2023で採択された手法だ。重みの丸め誤差を二次(ヘッセ行列)情報で補正するのが核心で、175Bモデルを約4GPU時間で3〜4ビットに量子化できる。FP16比でNVIDIA A100上で約3.25倍、A6000上で約4.5倍の推論高速化が報告されている。

2026年時点の注意点:オリジナルのAutoGPTQはメンテナンス終了。現在はGPTQModelがTransformers・vLLM・SGLangに対応した後継として機能している。Hugging Faceによれば8BモデルのGPTQキャリブレーションはA100×1枚で約20分だ。

ファイル名の128gはグループサイズ(128重みにつき1スケール)、desc_actはカラムを重要度順に量子化するAct-orderオプションを指す。


AWQ — アクティベーションで「重要な重み」を見つける

AWQ(Activation-aware Weight Quantization)はMITのSong Hanグループが2023年6月に発表し、MLSys 2024 Best Paper Awardを受賞した手法だ。

全重みが等しく重要なわけではない、という観察が出発点だ。重みの約1%の「顕著なチャネル」を守るだけで量子化誤差が大幅に減る。AWQはその顕著なチャネルをアクティベーションの大きさから特定する点がGPTQと異なる。高精度で別保存するのではなく、数学的に等価な変換でスケールアップしてハードウェアフレンドリーな均一フォーマットを維持する。逆伝播・再構築を使わないためキャリブレーションデータへの過学習が起きにくい。

実装はAutoAWQが広く使われており、vLLM・SGLang・Transformersで推論できる。GPTQと比べてキャリブレーション時間が短く、ローカル環境での量子化コストを抑えたい場面に向く。すでに量子化済みのモデルをダウンロードして使う場合は体感差が出にくいが、自前でキャリブレーションを回す場合はAWQのほうが手軽という整理になる。


EXL2 / EXL3 — コンシューマGPUで限界を攻める

EXL2

ExLlamaV2のネイティブ形式。2〜8 bitsの任意の平均ビットレートを指定できるのが最大の特徴だ。レイヤー内のカラム単位でビット数を混在させ、キャリブレーションデータへの誤差を最小化しながら目標ビットレートを達成する。そのためファイル名は4-bitではなく4.65bpwのような表記になる。推奨サーバーはOpenAI互換APIを提供するTabbyAPIだ。ただしテンソルの内部的なリネームがあるため、他フレームワークへの移植性は低い。

EXL3

EXL3はCornell RelaxMLのQTIP(NeurIPS 2024)をベースにした後継だ。トレリス符号化量子化と非整合処理を使う。

注目すべき数字は:Llama-3.1-70Bが1.6 bits/weightで動作し、3-bit出力レイヤーと4,096トークンキャッシュ込みで16GB VRAMに収まる。変換コストはRTX 4090クラス1枚で70B以上でも数時間程度。比較対象としてREADMEに挙げられているAQLMは70Bモデルに約720 A100 GPU時間を要する。

EXL2と異なりEXL3は元のテンソル構造をほぼ維持するため移植性が高い。ただしCUDA 12.4以降が必須で、ROCmサポートはTODOのままだ。


その他のフォーマット早見表

フォーマット 特徴
bitsandbytes NF4 事前量子化不要。ロード時に動的量子化。QLoRAファインチューニングの標準パス。推論高速化は保証されない
MLX Apple Silicon向け。safetensors形式で保存。GGUF(llama.cpp経由)とともにMacの有力選択肢
compressed-tensors / FP8 vLLMのllm-compressorが出力する形式。FP8はH100/H200/B100・AMD MI300以降で真価を発揮
HQQ キャリブレーション不要、高速。4bit未満では精度劣化が顕著

結局どれを選ぶか

フォーマットの選択は環境と目的で決まる。大まかな判断軸を整理する。

  • 手軽にローカルで動かしたい(CPU混在可) → GGUF(Q4_K_M〜Q6_K)。Ollama・LM Studioで即座に動く
  • NVIDIA GPU + vLLM / SGLangで本番運用したい → GPTQ(GPTQModel)またはAWQ(AutoAWQ)。どちらもvLLM対応済み
  • 自前でキャリブレーションを回す時間・リソースを節約したい → AWQ。GPTQより短時間で済む
  • コンシューマGPU(16〜24GB VRAM)で可能な限り大きなモデルを動かしたい → EXL2(ExLlamaV2 + TabbyAPI)またはEXL3
  • 超低ビット(2bit前後)まで攻めたい → EXL3。1.6 bpwで70Bが16GBに収まる
  • Macで動かしたい → MLXまたはGGUF(llama.cpp / Ollama)
  • QLoRAでファインチューニングしたい → bitsandbytes NF4。量子化ベースのLoRAアダプタ訓練に最適化されている

safetensorsとPickleの違いは見落としやすい

フルプレシジョン(16-bit)モデルの配布形式としてpytorch_model.bin(Pickleベース)とsafetensorsが存在する。Pickleは任意コード実行が可能なため、信頼できないチェックポイントはセキュリティリスクになる。Hugging Faceが開発したsafetensorsは実行可能コードを持たず、現在はPyTorch Foundationプロジェクトとしてホストされている。

また、GPTQ・AWQ・EXL2・EXL3・MLXのほとんどは内部的にsafetensors形式で保存されており、量子化情報はテンソルの内容とconfigファイルに埋め込まれている点も押さえておきたい。


詳細はGGUF vs GPTQ vs AWQ vs EXL2: LLM Model Formats Explained (2026)を参照していただきたい。