ローカル LLM のためのオープンソース 2-bit 圧縮

LLM を 85% 圧縮しました。 llama.cpp の 2-bit と同じサイズで、はるかに賢い。

Pingala-8 は Qwen3-4B を 8.05 GB ではなく 1.24 GB で保存します。これは llama.cpp でよく使われる最小の 2-bit 形式 IQ2_XXS と同じファイルサイズで、しかも 5 つの標準的なクイズでスコアが 21% 高くなります。再学習は不要で、手元にあるモデルをそのまま圧縮します。コード、ログ、Windows 向けワンクリック版はすべて公開しています。

実時間で再生しており、早送りはしていません。テキストとタイミングは、RTX 5070 Ti Laptop GPU で Pingala-8 Qwen3-4B(1.24 GB)を実際に動かしたときのものです。チャット画面は再現したものです。

結果

より小さく、同じサイズならより賢く、文章の生成は速い

特に断りのない限り Qwen3-4B の結果です。1 台の GPU(RTX 5070 Ti Laptop)で測定しました。すべての数値は論文とリポジトリ内のログにあります。

85%
元のモデルより小さい

Qwen3-4B は 8.05 GB(fp16)から 1.24 GB へ、6.5 分の 1 になります。Llama-3.1-8B は 16.08 GB から 2.39 GB へ。

+21%
同じサイズの llama.cpp の 2-bit と比べたクイズのスコア

5 つのタスクの平均:50.8、IQ2_XXS は 41.9。8-bit モデルの 56.3 の 90% を保っています。

39%
Q4_K_M より速く、サイズは半分

返答を生成するときは毎秒約 216 トークン(batch 1)で、IQ2_XXS の 1.10x。長いプロンプトの読み込みは遅く、0.74x です。

同じサイズでの品質

同じバイト数で、より低いパープレキシティ

パープレキシティは、モデルが実際の文章をどれだけうまく予測できるかを測る指標で、低いほど良い値です。WikiText-2 では、元の Qwen3-4B は 12.46 です。IQ2_XXS と同じファイルサイズで、Pingala-8 は 16.64 です。これに対し IQ2_XXS は 28.61(Pingala-8 の方が 42% 低い)、私たちが作ったこのサイズで最も強い IQ2_KT ファイルは 18.15 でした。

WikiText-2 のパープレキシティとファイルサイズの関係を示す 2 つの散布図。Qwen3-4B、約 1.24 GB:Pingala-8 B4 が 16.64、複数の IQ2_KT ファイル(最良 18.15)、IQ2_XXS が 28.61、fp16 が 12.46。Llama-3.1-8B、約 2.39 GB:Pingala-8 B4 が 9.14、IQ2_KT が 10.04、IQ2_XXS が 12.35。
グラフを横にスワイプすると、両方のパネルを見られます。
WikiText-2 のパープレキシティとファイルサイズ、コンテキスト長 4096(B4 は公開している Pingala-8 ファイル)。(a) Qwen3-4B、73 ウィンドウ。この B4 ファイルは一連のビルドの最後のものなので、調整済み(事後的な選択)として扱ってください。(b) Llama-3.1-8B base、70 のストライドウィンドウ。予測は実行前に書き留めてあります:9.14、IQ2_KT は 10.04、IQ2_XXS は 12.35。すべてのウィンドウの先頭に開始トークンを付けた場合、Llama の結果は 8.44、IQ2_KT は 9.36 です。

クイズのスコア(Qwen3-4B)

ゼロショットの正解率(%)。3 つの 2-bit ファイルはどれも約 1.24 GB です。元のモデルは 8-bit の Q8_0 ファイルです。

タスク元のモデル(8-bit)IQ2_XXSIQ2_KTPingala-8IQ2_XXS 比
ARC-Easy66.143.953.360.9+39%
ARC-Challenge45.229.135.137.8+30%
HellaSwag65.847.853.357.7+21%
WinoGrande65.557.557.963.8+11%
MMLU38.731.132.934.0+9%
平均56.341.946.550.8+21%
比較

Pingala-8 が勝つところ、ほかが勝つところ

Qwen3-4B、コンテキスト長 4096 での WikiText-2 パープレキシティ。すべてのファイルで同じテストです。低いほど良い値です。

形式サイズパープレキシティ正直なコメント
Pingala-8 (B4)Genrius AI 1.24 GB 16.64 元のモデルを圧縮するだけで、再学習は不要です。パッチを当てた llama.cpp と NVIDIA GPU(CUDA)が必要です。
IQ2_XXSllama.cpp 1.25 GB 28.61 同じサイズ。公式版の llama.cpp、Ollama、LM Studio で動き、CPU や Mac でも使えます。プロンプトの読み込みはこちらが速い(私たちは 0.74x)。クイズのスコアは私たちが 21% 高く、生成速度は 1.10x です。
IQ2_KTik_llama.cpp 1.25 GB 18.15 同じサイズで、私たちが作った同サイズの対抗馬の中で最も強いものです。プロンプトの読み込みは私たちより約 1.3x 速い。Qwen3-14B では私たちに勝ちます(9.40、私たちは 9.57)。
Q4_K_Mllama.cpp 私たちの約 2 倍 比較せず より大きな 4-bit ファイルです。メモリが制約でないならこちらを選んでください。比較したのは速度だけで、batch 1 では半分のサイズで 39% 速く生成します。
GSQ Q2_KISTA-DASLab 1.67 GB 14.37 パープレキシティは私たちより良いですが、ファイルは 34% 大きくなります。
Ternary Bonsai 4Bprism-ml 1.07 GB 11.59 より良く、より小さい。Qwen3-4B を圧縮したものではなく再学習したモデルで(元のモデルにさえ勝ちます)、学習の実行と彼らのフォークが必要です。
Qwen3-4B fp16元のモデル 8.05 GB 12.46 圧縮していないモデル。参考用です。

私たちの見方:テストした形式の中では、再学習せずに元の Qwen3-4B を約 1.24 GB に圧縮する場合、Pingala-8 のパープレキシティが最も低くなりました。このクラスの強い小型モデルが欲しいだけなら、Ternary Bonsai のような再学習済みのモデルの方が良い選択です。Pingala-8 は、誰も再学習してくれないモデルを圧縮するためのものです。Llama-3.1-8B(2.39 GB)でも、同じサイズの 2 つの形式の両方に勝っています:8.44、IQ2_KT は 9.36。

試す

3 ステップで試す

Windows または Linux と、NVIDIA RTX GPU(30、40、50 シリーズ)、新しいドライバーが必要です。Python もビルドも不要です。

注意:公式版の llama.cpp、Ollama、LM Studio では、このファイルはまだ読み込めません。ワンクリック版に入っているパッチ済みの llama.cpp を使ってください。

  1. ダウンロード

    v2.4-oneclick リリースから pingala8-windows-cuda12.zip(1.6 GB)を入手します。

    Linux:同じページにある pingala8-linux-cuda13.tar.gz。

  2. 解凍してダブルクリック

    run_qwen3_4b.bat(または run_llama31_8b.bat)を実行します。モデルは初回に一度だけ Hugging Face からダウンロードされます。

    Linux:./run.sh qwen または ./run.sh llama。

  3. チャット

    Windows では、ブラウザで http://127.0.0.1:8080 のチャットページが開きます(Linux ではこのアドレスを自分で開いてください)。すべてあなたのマシンの上で動きます。

    黒いウィンドウを閉じると停止します。

ソースからのビルド、論文のパープレキシティテストの実行、CPU パッチの利用については、README のクイックスタート(英語)を見てください。モデル:Qwen3-4B と Llama-3.1-8B。

仕組み

4 つの重みのグループにかけるトレリス符号

多くの 2-bit 形式は、重みの小さなグループをそれぞれ独立に丸めます。Pingala-8 は Ungerboeck の 8 状態トレリス符号で、グループを順番に符号化します。小さな状態が 4 つの重みのグループから次のグループへ引き継がれ、次のグループが使える値の集合を決めるので、同じビット数でも本来の重みにより近づきます。

符号化の前に、ランダムな Hadamard 回転でごく少数の非常に大きな重みを分散させ、LDLQ 丸めで各列の誤差をまだ符号化していない列へ渡します。これらのアイデアは QuIP、QuIP#、QTIP から来ており、この形式は ikawrakow の IQ2_KT に近いものです。llama.cpp への CUDA パッチ(commit 7ac59a6)がこのファイルを読み込みます。

やさしい解説と技術的な詳しい話は、記事の全文(英語)をどうぞ。

名前の由来

Pingala の Chandahsutra は、詩の韻律を扱った古代サンスクリットの書物で、長音節または短音節 3 つからなる 8 つのパターン、gana を挙げています。私たちの符号も短いパターンの上に 8 つの状態を持つので、彼の名前をいただきました。名前は敬意を表したもので、トレリスのラベルは Ungerboeck によるものです。

制限事項

失うもの

Pingala-8 を選ぶ前に、ここを読んでください。

  • Qwen3-14B では負けます。実行前に勝つと予測しましたが、勝てませんでした。WikiText-2 で 9.57、IQ2_KT は 9.40。C4 では引き分けです。
  • プロンプトの処理が遅い。プロンプトの読み込みは IQ2_XXS の 0.74x です。長い文書では、最初の単語が出るまでに時間がかかります。
  • バッチでのデコードが遅い。2 件から 8 件のチャットを同時に処理すると、IQ2_XXS の 0.18x から 0.34x になります。1 台の GPU を 1 人で使う用途向けで、サーバー向けではありません。
  • 専用のランタイムが必要。CUDA 対応のパッチ済み llama.cpp だけで動きます。公式版の llama.cpp、Ollama、LM Studio はまだ読み込めません。Metal と Vulkan には対応していません。CPU での生成は IQ2_XXS の 0.56x から 0.62x です。
  • Qwen3-4B の数値は調整済みです。このファイルは、WikiText-2 でテストした多数のビルドの最後のものです。C4 はテスト用に取っておきました。Llama-3.1-8B と Qwen3-14B の実行は事前登録しています。
  • GPU は 1 台だけ、安全性の評価はなし。速度は RTX 5070 Ti Laptop GPU 1 台で測定しました。圧縮したモデルの安全面の振る舞いは評価していません。
論文

論文を読む、引用する

Small-State Coset Trellis Coding at IQ2_XXS Size: An Equal-Bytes Study in llama.cpp

Harshit Goyal、Genrius AI。プレプリント、バージョン 2.4、2026 年 10 月。DOI:10.5281/zenodo.23481757

@misc{goyal2026pingala8,
  title     = {Small-State Coset Trellis Coding at {IQ2\_XXS} Size:
               An Equal-Bytes Study in {llama.cpp}},
  author    = {Goyal, Harshit},
  year      = {2026},
  month     = oct,
  publisher = {Zenodo},
  doi       = {10.5281/zenodo.23481757},
  url       = {https://doi.org/10.5281/zenodo.23481757},
  note      = {Preprint, version 2.4.
               Code: https://github.com/Genrius-AI/pingala8-llm}
}