マガジン

量子化とは何か:Q4・Q8などの表記を読み、PCに合うファイルを選ぶ

AIを使いこなす

Claudeで執筆し、GPTで自動校閲・修正しています。

ノートPCの横で、粒を小さな容器へ移し替える手元。
記事の内容をもとに制作したAI生成イメージです。実際の製品画面や検証結果の写真ではありません。

量子化とは、モデルの重み(数値の集まり)を少ないビット数で持ち直して、ファイルサイズとメモリ使用量を減らす処理です。「Q4_K_M」は、おおまかに「4ビット系で、K-quantという方式の中間的な配合」と読みます。軽くなる代わりに、元のモデルとの誤差が増えます。 迷ったら、まず Q4_K_M を試し、メモリに余裕があれば Q5_K_M → Q6_K → Q8_0 と上げるのが入口として無難です。LM Studioの公式ドキュメントも、マシンに余力があれば4ビット以上を選ぶよう案内しています(LM Studio: Download an LLM)。以下では表記の読み方、メモリ別の最初の候補、品質の見比べ方を順に示します。

この記事の目次
  1. 表記の読み方早見表
  2. 軽くなる代わりに何が落ちるか
  3. 搭載メモリ別:最初に試す候補の判断表
  4. 実際に取得して見比べる手順
  5. つまずきやすい点

表記の読み方早見表

量子化タイプの名前は、おおむね「Q+ビット数+方式+配合」の並びです。Hugging FaceのGGUFの説明には、各タイプの方式とbits per weight(1つの重みあたりの平均ビット数)が載っています。

  • Q8_0、読み方:8ビット系。末尾の0は旧来のブロック方式、補足:元のF16に近い品質を狙う側。サイズは大きい
  • Q6_K、読み方:6ビット系のK-quant、補足:約6.6bit/重み
  • Q5_K_M、読み方:5ビット系のK-quant、M配合、補足:約5.7bit/重み
  • Q4_K_M、読み方:4ビット系のK-quant、M配合、補足:約4.9bit/重み。入口の標準候補
  • Q3_K_M / Q2_K、読み方:3・2ビット系、補足:小さいが、劣化を確かめる前提で使う
  • IQ4_XS、IQ3_Mなど、読み方:IQはimportance matrix(重要度行列)を使う系統、補足:低ビットで品質を保つ工夫。数が多く、最初は後回しでよい
  • F16 / BF16、読み方:16ビット浮動小数点、補足:量子化していない元に近い形

読み方のポイントは3つです。

  • 数字は名目のビット数です。 Q4_K_Mの実際の平均は約4.9ビットなので、「4ビットだから元の4分の1」ではありません。llama.cppの量子化READMEでは、Llama-3.1-8Bで F16が14.96 GiB、Q8_0が7.95 GiB、Q4_K_Mが4.58 GiB、Q2_Kが2.95 GiBです。Q4_K_MはF16の約3割になります。
  • 「K」付きが現在の主流です。 Hugging Faceの表では、Q4_0・Q5_0・Q8_0などの方式が「legacy(旧来)」に分類されています。
  • 末尾のS/M/Lは同系統の別配合です。 迷う段階ではMを基準にして構いません。

軽くなる代わりに何が落ちるか

llama.cppのREADMEは、量子化で精度が下がること、その差をperplexityやKLダイバージェンスで測ることを説明しています。適切なimatrixを使うと劣化を抑えられるとも書かれています。また、画像などを扱うマルチモーダル部分は、速度やメモリへの影響が小さい割に品質への影響が大きいため、bf16やQ8のまま残すことが推奨されています。

公式資料は、「どのタスクでどれだけ落ちるか」までは一律に示していません。そのため、数字の大小ではなく自分の用途で見比べるのが確実です。見るべき観点は次のとおりです。

  • 日本語の言い回しが不自然になっていないか
  • 指定した形式(箇条書き、JSONなど)を守れているか
  • 数値や固有名詞を取り違えていないか
  • 長い入力で、前半の指示を忘れていないか

搭載メモリ別:最初に試す候補の判断表

ファイルサイズの概算は「パラメータ数(B)×bits per weight÷8」で出せます。8Bの場合、Q4_K_Mは約4.9GBで、Ollamaのライブラリ(llama3.1)に載っているq4_K_Mの4.9GBと一致します。同ページの70B q4_K_Mは43GBです。

実行には、ファイルに加えて設定した文脈の長さ(コンテキスト長)に応じた作業領域とOSの分が必要です。Ollamaの公式資料も、コンテキスト長を増やすと必要メモリが増えると説明しています。ここでは編集上の目安として「ファイルサイズの約1.5倍が、モデルに回せるメモリに収まること」を基準にしました。実測ではなく概算による提案で、動作を保証する基準ではありません。

「メモリ」は、GPU実行ならVRAM、統合メモリのマシンならモデルに回せる分、CPU実行ならRAMのことです。

  • 8GB、最初に試す候補:7〜8B級のQ4_K_M(約4.6〜4.9GB)、余裕があれば次に試す候補:3〜4B級のQ6_K〜Q8_0
  • 16GB、最初に試す候補:8B級のQ6_K(約6.6GB)。または14B級のQ4_K_M(概算約8.6GB)、余裕があれば次に試す候補:8B級のQ8_0(約8〜8.5GB)
  • 32GB、最初に試す候補:14B級のQ6_K〜Q8_0(概算約11.5〜14.9GB)。または30B台のQ4_K_M、余裕があれば次に試す候補:32B級のQ4_K_M(概算約19.6GB)
  • 64GB、最初に試す候補:32B級のQ8_0(概算約34GB)、余裕があれば次に試す候補:70B級のQ4_K_M(約43GB)。1.5倍の目安には収まらないため、短い文脈で動作を確かめる

14B・32B級の値は上の計算式による概算で、モデルごとにずれます。実際のファイルサイズは、ダウンロード画面かモデルページで確認してください。

同じ容量なら「大きいモデルを低ビット」か「小さいモデルを高ビット」か

この比較は用途で変わります。表は「同じモデルを選んだとして、どの量子化から入るか」を決めるためのものです。大きいモデルの低ビット版と、小さいモデルの高ビット版のどちらが自分の用途に合うかは、次の節の手順で両方を見比べてください。

実際に取得して見比べる手順

Hugging Face上のGGUFは、Ollamaなら量子化名をタグとして付けて指定できます。量子化を指定しない場合は、リポジトリにQ4_K_Mがあればそれが選ばれ、なければリポジトリ内の妥当そうなタイプが選ばれます(Hugging FaceのOllama連携)。

sh
# 以下はドキュメントにある書式の例です(本記事では実行して検証していません)
ollama run hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF:Q8_0
ollama run hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF:IQ3_M

LM Studioなら、モデル検索で出てくる複数のファイルから、表のとおりQ4_K_Mなどを選んでダウンロードします。

見比べは次の手順で行います。

  1. 同じモデルで、Q4_K_Mと、メモリに収まる最も上のタイプ(Q6_KやQ8_0など)の2つを取得する。
  2. 下の依頼文を、同じ順番で両方に入力する。
  3. 前節の4観点で、人が目で比べる。違いがほとんどなければ軽い方を採用し、差が出たら一段上げる。

入力例(説明用の例。架空の社内メモです)

text
次のメモを、200字以内の要約と、決定事項の箇条書き(最大3つ)にしてください。
日付と金額は原文のまま残してください。

メモ:
10月3日の定例で、備品購入の予算を12万5千円から15万円に増やすことになった。
発注は10月10日までに総務の佐藤さんが行う。納品は月末を希望。
ただし、見積もりが再提出された場合は再度検討する。

この例なら「日付と金額が原文のままか」「決定事項が3つ以内か」を機械的にチェックできます。実際の仕事の文書を使う場合は、社名・個人名・金額を置き換えてから入力してください。結果は使うモデルとツールで変わるため、この記事では出力例を載せていません。

つまずきやすい点

  • Ollamaは、取り込み時にGGUFを量子化しません。 自分で量子化したい場合は、llama.cppのllama-quantizeなどで事前に済ませます。通常は、すでに量子化済みの配布ファイルを選べば足ります。
  • サイズが近くても同じ品質とは限りません。 同じビット数帯でも、配合やimatrixの有無、配布者によって差が出ます。
  • 実行時には、ファイル以外にもメモリを使います。 メモリ不足で動作が重いときは、一段下の量子化にするより先に、文脈の長さ(コンテキスト長)を短くして確認してください。

出典・参考資料