メインコンテンツへスキップ
友田 陽大
量子化LLM・セルフホスト
Qwen
AWQ
量子化
vLLM
GGUF
FP8
セルフホスト

Qwen3-8B 量子化方式の選び方:AWQ・GPTQ・FP8・GGUF を用途で決める

Qwen3-8B をどの量子化で動かすべきか——AWQ・GPTQ・FP8・GGUF を、対応ハードウェア・VRAM・スループット・公式サポート状況で比較。GPU本番はAWQ/FP8、Mac/CPUローカルはGGUF、という判断軸を、VRAM計算と型安全な選定関数(テスト付き)で迷わず決められるようにします。

公開日
読了時間
11分
著者
友田 陽大
シェア

この記事のゴール

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公式
FP88bit floatFP8対応GPU(H100/H200・Ada・Blackwell)≈8GBGPUサーバ・速度最優先・ほぼ無劣化Qwen3-8B-FP8
AWQ4bit weight一般的なGPU(24GB級でも可)≈6GBGPUサーバ・最大圧縮・1枚運用Qwen3-8B-AWQ
GPTQ4/8bitGPU(vLLMはMarlin)≈6GB(Int4)既存GPTQ資産がある場合⚠️ 「To be updated」
GGUF2〜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・ローカルの“もう一つの世界”

GGUFllama.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対応) + 速度最優先FP8Tensor Core で高速・ほぼ無劣化
L4 / A10 / RTX 4090(24GB級)+ 最大圧縮AWQ 4bit6GBに圧縮し同時実行を稼ぐ
A100 / V100(FP8非対応)AWQ 4bitFP8は不可。4bitで載せる
Apple Silicon MacGGUF(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 の量子化選びは、流行りではなく環境と優先軸の関数です。

  1. GPUサーバ × 速度/無劣化FP8(対応GPUが前提)。
  2. GPUサーバ × 最大圧縮(24GB級)AWQ 4bit(Qwenの本命)。
  3. Mac / CPU / ローカル単機GGUF(Ollama・llama.cpp)。
  4. GPTQ は Qwen3 で更新待ち+既知の不具合——基本は AWQ
  5. 最終判断は自社タスクの評価と VRAM/スループットの実測で。選定はコードとテストに落として再現性を持たせる。

モデル量子化の選定・ベンチ設計から、vLLM 本番サーブ・原価試算までまとめて伴走します。GPU 推論基盤の実績をご覧のうえご相談ください。一人 × 生成AIで、速く・安く・安全に。

出典・公式リソース

※ 方式特性・公式サポート状況・VRAM/スループットは更新・環境依存です。実装前に一次情報と自社ベンチで必ず確認してください。

友田

友田 陽大

経済産業大臣賞 受賞プロダクト開発者。TypeScript + Python + AWS で、SaaS・業界DX・ 実用レベルの生成AI(RAG)を、要件定義からインフラ・運用まで一人で完遂します。

この記事で解説した技術の適用事例

AI動画ローカライズ・リップシンク基盤

ケーススタディを見る