この記事のゴール
Qwen3-8B-AWQ の実践ガイドで「AWQ なら 24GB GPU 1枚に載る」と書きました。では AWQ・GPTQ・FP8・GGUF のどれを選べばいいのか——案件で必ず聞かれるこの問いに、本稿はハードウェア・VRAM・スループット・公式サポート状況で答えます。
量子化は「とりあえず4bit」で選ぶものではありません。どのGPU(あるいはCPU/Mac)で、何を優先するかで正解が変わります。読み終えたとき、「うちの環境なら○○、理由は△△」と式で言い切れる状態を目指します。
信頼性の開示:本稿の方式特性・コマンド・公式サポート状況は、Qwen 公式ドキュメント(量子化)・各モデルカード(AWQ / FP8 / GGUF)に基づきます。VRAM とスループットは環境依存・要ベンチです。本稿の数値は目安であり、実装前に自社環境で必ず計測してください。GPU 本番運用は動画AIローカライズ基盤で実際に向き合った領域です。
30秒の結論:早見表
| 方式 | ビット | 対応HW | 重みVRAM(8.2B) | 主用途 | Qwen3公式 |
|---|---|---|---|---|---|
| FP8 | 8bit float | FP8対応GPU(H100/H200・Ada・Blackwell) | ≈8GB | GPUサーバ・速度最優先・ほぼ無劣化 | Qwen3-8B-FP8 |
| AWQ | 4bit weight | 一般的なGPU(24GB級でも可) | ≈6GB | GPUサーバ・最大圧縮・1枚運用 | Qwen3-8B-AWQ |
| GPTQ | 4/8bit | GPU(vLLMはMarlin) | ≈6GB(Int4) | 既存GPTQ資産がある場合 | ⚠️ 「To be updated」 |
| GGUF | 2〜8bit可変 | CPU / Apple Metal / GPU | ≈5GB(Q4_K_M) | ローカル・Mac・エッジ・単機 | Qwen3-8B-GGUF |
3行で言うと:
- GPUで本番サーブ → FP8(対応GPUがあれば速くて綺麗)か AWQ(汎用GPUで最大圧縮)。
- Mac/CPUでローカル → GGUF(Ollama / LM Studio / llama.cpp)。
- GPTQ は Qwen3 で公式が「更新待ち」かつ既知の不具合報告があり、Qwen では基本 AWQ を選ぶのが無難。
まず「量子化で何が起きるか」を1分で
LLM の重みは通常 FP16(1パラメータ2バイト)。量子化は、この重みをより少ないビットで表すことで、VRAM とメモリ帯域を削り、載る・速い・安いを実現します。代償はわずかな品質劣化——どれだけ賢く削るかが各方式の腕の見せどころです。
VRAM の概算式はシンプルです。
重みVRAM ≈ パラメータ数 × (ビット数 / 8) [byte]
FP16 : 8.2e9 × 2 ≈ 16.4 GB
FP8 : 8.2e9 × 1 ≈ 8.2 GB
4bit : 8.2e9 × 0.5 ≈ 4.1 GB(+スケール/ゼロ点で実測 5〜6GB)
💡 重みが軽い=同時実行が増える:空いた VRAM は KVキャッシュ(=同時リクエスト数と文脈長を決める)に回せます。だから「重みを削る」ことは、単に載るだけでなくセルフホストの実効スループット(原価を決める分母)を直接押し上げます。
AWQ:GPUサーバの“本命”
AWQ(Activation-aware Weight Quantization) は、「出力に効く重みほど壊さない」活性化を考慮した4bit重み量子化です。公式は AutoAWQ 実装で FP16比 約3倍のメモリ削減・約3倍の高速化を示しています。
- 強み:4bit で品質劣化が小さい。vLLM の連続バッチと相性が良く、24GB級GPU 1枚で実用的に回る。Qwen 公式が
Qwen3-8B-AWQを配布。 - 向く:L4 / A10 / RTX 4090 などの汎用GPUで、最大圧縮しつつ本番サーブしたい。
# AWQ:そのままOpenAI互換でサーブ(詳細は実践ガイドへ)
vllm serve Qwen/Qwen3-8B-AWQ --reasoning-parser qwen3 --max-model-len 32768
サーブと本番運用の作法はQwen3-8B-AWQ 実践ガイドに集約しています。
FP8:対応GPUがあるなら最有力
FP8 は 8bit の浮動小数点量子化。Qwen3 の FP8 は **fine-grained(ブロックサイズ128)**で、ほぼ無劣化に近いのが特徴です。
- 強み:精度劣化が極小。FP8対応GPUでは演算が速い(Tensor Core が FP8 を直接処理)。
- 前提:FP8対応GPU が必須——Hopper(H100/H200)、Ada(L4/L40S/RTX 40系)、Blackwell。非対応GPU(例:A100/V100)では遅くなるか起動に失敗します。
- VRAM:≈8GB と AWQ より重いが、24GBに十分収まる。
# FP8:対応GPUなら速くて綺麗。重みは≈8GB
vllm serve Qwen/Qwen3-8B-FP8 --reasoning-parser qwen3 --max-model-len 32768
🔧 AWQ と FP8、どちらか:H100/Ada を持っていて速度最優先なら FP8。汎用24GB GPUで“とにかく載せて安く”なら AWQ。VRAM が逼迫して同時実行を稼ぎたいなら 4bit の AWQ が有利、品質を1ミリも落としたくないなら FP8——という住み分けです。
GPTQ:Qwen3では「更新待ち」、基本は避けて良い
GPTQ は近似2次情報を使うワンショット重み量子化で、Int4/Int8 が一般的。vLLM では Marlin カーネルで高速化されます。
ただし Qwen のGPTQ 公式ドキュメントは冒頭に 「Attention: To be updated for Qwen3」 と明記されており、Qwen3 向けの公式 GPTQ は更新待ちの状態です。加えて Qwen2.5 系で **「72B-GPTQ-Int4 が生成を止められない」「32B-GPTQ-Int4 が vLLM 複数GPUで文字化け」**といった既知の不具合が報告され、回避策として AWQ が案内されています。
⚠️ 結論:Qwen で量子化を選ぶなら、まず AWQ。GPTQ は「既存の GPTQ パイプラインがある」等の明確な理由がない限り、Qwen3 では積極的に選ぶ理由が薄いです。選ぶ場合も単機・単GPUで挙動を必ず検証してください。
GGUF:Mac・CPU・ローカルの“もう一つの世界”
GGUF は llama.cpp 系のフォーマット。AWQ/FP8/GPTQ が「GPUサーバ向け」なのに対し、GGUF は土俵が違います。
- 強み:CPU でも Apple Silicon(Metal)でも動く。Ollama / LM Studio / llama.cpp がそのまま読む。ローカル開発・Mac・エッジ・単機の決定版。
- ビット:可変。Q4_K_M がサイズと品質の定番スイートスポット(実効約4.5bit)、Q8_0 はほぼ無劣化(≈8bit)。極端な Q2/Q3 は劣化が見える。
- 不得手:多数同時リクエストの高スループットサーブ。それは vLLM × AWQ/FP8 の領分です。
# Mac/ローカルで最短:Ollama で Qwen3-8B(GGUF)を動かす
ollama run qwen3:8b
# llama.cpp で特定の量子化を選ぶ場合(例:Q4_K_M)
llama-cli -hf Qwen/Qwen3-8B-GGUF:Q4_K_M -p "RAGの再ランキングを2行で"
💡 使い分けの本質:GGUF は「自分のMacで、外部に出さず、すぐ試す」。AWQ/FP8 は「サーバで、多数同時に、速く捌く」。開発はGGUF、本番はvLLM、とOllama と vLLM の住み分けに揃えてください。
VRAM とハードウェアの対応表
| 環境 | 推奨方式 | 理由 |
|---|---|---|
| H100 / H200 / L40S(FP8対応) + 速度最優先 | FP8 | Tensor Core で高速・ほぼ無劣化 |
| L4 / A10 / RTX 4090(24GB級)+ 最大圧縮 | AWQ 4bit | 6GBに圧縮し同時実行を稼ぐ |
| A100 / V100(FP8非対応) | AWQ 4bit | FP8は不可。4bitで載せる |
| Apple Silicon Mac | GGUF(Metal) | Ollama/LM Studioで即動く |
| GPUなし・CPUのみ | GGUF(Q4_K_M) | CPU推論はllama.cpp一択 |
| 既存GPTQ資産あり | GPTQ(要検証) | Marlinで動くが Qwen3 は更新待ち |
迷わないための「選定関数」(型安全・テスト可能)
“世界最高峰”は派手さではなく、入力だけで決まる小さな純粋関数です。環境と優先軸を入れれば量子化方式が決定的に返り、そのまま単体テストに載ります(型安全の規律)。
// lib/pick-quantization.ts — 環境×優先軸 → 量子化方式を決定的に返す純粋関数
export type Hardware = "fp8-gpu" | "ampere-24gb" | "older-gpu" | "apple-silicon" | "cpu-only";
export type Priority = "throughput" | "max-compression" | "no-quality-loss" | "local-dev";
export interface QuantChoice {
readonly method: "FP8" | "AWQ" | "GGUF";
readonly model: `Qwen/Qwen3-8B${"-FP8" | "-AWQ" | "-GGUF"}`;
readonly runtime: "vLLM" | "Ollama/llama.cpp";
readonly reason: string;
}
/** ハードウェアと優先軸から、Qwen3-8B の量子化方式を一意に決める。 */
export function pickQuantization(hw: Hardware, priority: Priority): QuantChoice {
// ローカル/CPU/Macは土俵が違う:GGUF一択(GPUサーバ系の議論に巻き込まない)
if (hw === "cpu-only" || hw === "apple-silicon" || priority === "local-dev") {
return { method: "GGUF", model: "Qwen/Qwen3-8B-GGUF", runtime: "Ollama/llama.cpp",
reason: "CPU/Apple Metal/ローカル単機。Ollama・LM Studio・llama.cpp が直接読む。" };
}
// FP8対応GPUで「劣化させたくない or 速度最優先」なら FP8
if (hw === "fp8-gpu" && (priority === "no-quality-loss" || priority === "throughput")) {
return { method: "FP8", model: "Qwen/Qwen3-8B-FP8", runtime: "vLLM",
reason: "FP8対応GPUではTensor Coreが速く、fine-grained FP8はほぼ無劣化。" };
}
// それ以外のGPU(FP8非対応含む)/ 最大圧縮 → AWQ 4bit
return { method: "AWQ", model: "Qwen/Qwen3-8B-AWQ", runtime: "vLLM",
reason: "汎用GPUで最大圧縮(重み≈6GB)。activation-awareで品質劣化が小さく、vLLM連続バッチと好相性。" };
}
// pick-quantization.test.ts — 仕様を表で固定(退行を止める)
import { describe, it, expect } from "vitest";
import { pickQuantization } from "./pick-quantization";
describe("pickQuantization", () => {
it("Mac はランタイムに関わらず GGUF", () => {
expect(pickQuantization("apple-silicon", "throughput").method).toBe("GGUF");
});
it("FP8対応GPUで無劣化優先なら FP8", () => {
expect(pickQuantization("fp8-gpu", "no-quality-loss").method).toBe("FP8");
});
it("FP8非対応GPUは AWQ にフォールバック", () => {
expect(pickQuantization("older-gpu", "throughput").method).toBe("AWQ");
});
it("24GB級で最大圧縮なら AWQ", () => {
expect(pickQuantization("ampere-24gb", "max-compression").model).toBe("Qwen/Qwen3-8B-AWQ");
});
});
選定をコードとテストに落とすと、チームの誰が判断しても同じ結論になり、環境が増えても分岐を1か所で保守できます(DRY・SRP)。
ハマりどころ & ベストプラクティス
- 🔴 FP8 は対応GPU必須。非対応GPU(A100/V100等)に FP8 を載せると遅化・起動失敗。
nvidia-smiで世代を、起動ログで実 dtype を確認。 - 🟠 GPTQ は Qwen3 で更新待ち+既知の不具合。選ぶなら単GPUで挙動検証。Qwen では基本 AWQ。
- 🟠 GGUF を高スループットサーバに使わない。多数同時は vLLM×AWQ/FP8。GGUF は単機・ローカルの強み。
- 🟠 二重量子化しない。配布済みの量子化済みモデルを更に量子化しない。公式の量子化版をそのまま使う。
- 🟢 どの方式でも思考モードのサンプリングは守る。量子化に関わらず greedy decoding 禁止・
presence_penalty≈1.5は実践ガイドどおり。 - 🟢 品質は自社タスクで評価。一般ベンチではなく、あなたのプロンプトで AWQ と FP8 を比べる。差が無ければ軽い方(AWQ)が得。
よくある質問(FAQ)
Q. 結局おすすめは? A. GPU本番なら AWQ(汎用GPU)か FP8(対応GPU)、Mac/CPUローカルなら GGUF。Qwen で GPTQ は基本選ばなくて良い。迷ったら本文の選定関数に環境を入れてください。
Q. 4bit にすると賢さはどれくらい落ちる? A. AWQ は activation-aware で実用上わずか。ただしタスク依存です。一般ベンチではなく、自社の評価セットで AWQ と FP8/FP16 を比べて差を確かめてください。
Q. FP8 と AWQ、品質はどっちが上? A. 一般に FP8 の方が劣化が小さい(8bit・fine-grained)。一方 AWQ は **より軽い(4bit)**ので同時実行を稼げます。「品質1ミリも落とさない」FP8、「載せて安く」AWQ。
Q. GGUF の Q4_K_M と Q8_0、どっち? A. サイズ優先なら Q4_K_M(定番スイートスポット)、品質優先なら Q8_0(ほぼ無劣化だが約2倍の容量)。Mac のメモリと相談して選びます。
Q. 量子化でコストはどれくらい変わる? A. 重みが軽い=同じGPUにより多く同時に載る=実効スループットが上がり、出力1Mトークンあたり原価が下がります。効果は必ずベンチで確認を。
まとめ
Qwen3-8B の量子化選びは、流行りではなく環境と優先軸の関数です。
- GPUサーバ × 速度/無劣化 → FP8(対応GPUが前提)。
- GPUサーバ × 最大圧縮(24GB級) → AWQ 4bit(Qwenの本命)。
- Mac / CPU / ローカル単機 → GGUF(Ollama・llama.cpp)。
- GPTQ は Qwen3 で更新待ち+既知の不具合——基本は AWQ。
- 最終判断は自社タスクの評価と VRAM/スループットの実測で。選定はコードとテストに落として再現性を持たせる。
モデル量子化の選定・ベンチ設計から、vLLM 本番サーブ・原価試算までまとめて伴走します。GPU 推論基盤の実績をご覧のうえご相談ください。一人 × 生成AIで、速く・安く・安全に。
出典・公式リソース
- Qwen 公式ドキュメント(AWQ) / (GPTQ)
- モデルカード:Qwen3-8B-AWQ / Qwen3-8B-FP8 / Qwen3-8B-GGUF
- vLLM 公式ドキュメント / llama.cpp / Ollama
※ 方式特性・公式サポート状況・VRAM/スループットは更新・環境依存です。実装前に一次情報と自社ベンチで必ず確認してください。