基礎から学ぶ量子化

Simon Willison's Blog / 2026/3/27

💬 オピニオンIdeas & Deep AnalysisTools & Practical UsageModels & Research

要点

  • この記事は、Sam Roseのインタラクティブなエッセイ「量子化が大規模言語モデルでどのように機能するか」をまとめており、実装面の実用的な詳細に重点を置いています。
  • float32などの浮動小数点数が二進数で表現される仕組みを、視覚的かつ段階的に説明し、インタラクティブなツールでビットパターンと値を結び付けます。
  • 量子化における「外れ値(outlier)」となる浮動小数点値の役割を説明し、まれに出現する高い影響力を持つ重みを1つでも保持することが、モデルがめちゃくちゃな文章(gibberish)を生成するのを防ぐうえで重要になり得ると指摘しています。
  • 量子化がモデル品質に与える影響について、パープレキシティ(perplexity)とKLダイバージェンス(KL divergence)を導入して説明し、llama.cppのパープレキシティツールや、Qwen 3.5 9Bに対するGPQAベンチマークを用いて、量子化レベルごとの効果を示します。
スポンサー: WorkOS — エンタープライズ向けに販売するために、急成長するB2B企業が使うインフラ。

2026年3月26日 - リンクブログ

Quantization from the ground up。Sam Roseは、情報量の多い見事なインタラクティブ・エッセイを公開し続けており、今回も彼の連載が続きます。大規模言語モデルの量子化がどのように機能するのかを説明しています(彼は「私がこれまで作った中で最良の投稿かもしれない」と言っています)。

加えて、浮動小数点数が二進数を使ってどのように表現されるのかを、私がこれまで見た中で最も優れたビジュアルで説明しているのも含まれています。

インタラクティブな float32 の二進表現ツールのスクリーンショット。値 -48.92364502 が表示され、色分けされたビットフィールド S(符号)、EXPONENT(青)、SIGNIFICAND(ピンク)にラベルが付いている。さらに 32-bit パターン 11000010010000111101100001110100000 が表示され、下部にスライダーとマイナス・プラス・リセットの各ボタンがある。

量子化における外れ値(outlier values)のことは知りませんでした。これは通常のごく小さい値の分布の外側に存在する、まれな float の値ですが、どうやら非常に重要です:

なぜこれらの外れ値が存在するのですか?[...] tl;dr: 誰も決定的には分かっていませんが、これらの外れ値のごく一部は(非常に)重要で、モデル品質のための重要な要素になっています。「Appleがそう呼んでいる」たとえ1つの「スーパー・ウェイト」を取り除くだけでも、モデルが完全に支離滅裂な出力をしてしまうことがあります。

その重要性ゆえに、現実世界の量子化方式では、外れ値を保持するために追加の作業をすることがあります。たとえば、外れ値をそもそも量子化しない、あるいは、それらの位置と値を別のテーブルに保存し、その後それらを取り除いて、ブロックが壊れないようにする、などです。

さらに、量子化はモデル精度にどれほど影響するのか? というセクションもあります。Samは困惑度(perplexity)と** KLダイバージェンス **の概念を説明し、そのうえでllama.cpp の困惑度ツールとGPQAベンチマークの実行結果を使って、量子化レベルがQwen 3.5 9Bにどう影響するかを示しています。

彼の結論:

16-bitから8-bitへの変換は、ほとんど品質のペナルティがないように見えます。16-bitから4-bitだとより目立ちますが、それでも元のものの4分の1ほど良くない、というわけでは確実にありません。測り方によりますが、90%に近いところです。

2026年3月26日 午後4:21 に投稿

これは、Simon Willisonによるリンク投稿で、2026年3月26日に掲載されました。

computer-science 15 ai 1932 explorables 30 generative-ai 1713 llms 1679 sam-rose 5 qwen 53

月次ブリーフィング

$10/月でスポンサーになって、今月の最も重要なLLMの動向を厳選したメールダイジェストを受け取ってください。

少ない送信で済むように、私にお金を払ってください!

スポンサーになって購読する