base_model: LGAI-EXAONE/EXAONE-3.5-32B-Instruct
base_model_relation: finetune
license: other
license_name: exaone
license_link: LICENSE
language:
- en
- ko
tags:
- lg-ai
- exaone
- exaone-deep
pipeline_tag: text-generation
library_name: transformers
EXAONE-Deep-32B GGUFモデル
IQ-DynamicGateによる超低ビット量子化(1-2ビット)
最新の量子化手法では、精度適応型量子化を導入し、Llama-3-8Bでベンチマーク実証済みの改善を達成しました。このアプローチでは、レイヤーごとの戦略を用いて精度を維持しながら、極めてメモリ効率の高いモデルを実現しています。
ベンチマーク条件
すべてのテストはLlama-3-8B-Instructを使用し、以下の条件で実施:
- 標準的なパープレキシティ評価パイプライン
- 2048トークンのコンテキストウィンドウ
- すべての量子化で同一のプロンプトセットを使用
主な改善点
- 動的精度割り当て:
- 最初と最後の25%のレイヤー → IQ4_XS(選択されたレイヤー)
- 中間の50% → IQ2_XXS/IQ3_S(効率性向上)
- 重要コンポーネント保護:
- 埋め込み層と出力層はQ5_Kを使用
- 標準的な1-2ビット量子化と比べ、誤差伝播を38%低減
量子化性能比較(Llama-3-8B)
量子化 |
標準PPL |
DynamicGate PPL |
Δ PPL |
標準サイズ |
DGサイズ |
Δサイズ |
標準速度 |
DG速度 |
IQ2_XXS |
11.30 |
9.84 |
-12.9% |
2.5G |
2.6G |
+0.1G |
234s |
246s |
IQ2_XS |
11.72 |
11.63 |
-0.8% |
2.7G |
2.8G |
+0.1G |
242s |
246s |
IQ2_S |
14.31 |
9.02 |
-36.9% |
2.7G |
2.9G |
+0.2G |
238s |
244s |
IQ1_M |
27.46 |
15.41 |
-43.9% |
2.2G |
2.5G |
+0.3G |
206s |
212s |
IQ1_S |
53.07 |
32.00 |
-39.7% |
2.1G |
2.4G |
+0.3G |
184s |
209s |
凡例:
- PPL = パープレキシティ(低いほど良い)
- Δ PPL = 標準からDynamicGateへの変化率
- 速度 = 推論時間(CPU avx2、2048トークンコンテキスト)
- サイズ差は混合量子化のオーバーヘッドを反映
主な改善点:
- 🔥 IQ1_Mは43.9%のパープレキシティ低減(27.46 → 15.41)
- 🚀 IQ2_Sは36.9%のパープレキシティ改善を達成し、サイズ増加は僅か0.2GB
- ⚡ IQ1_Sは1ビット量子化にも関わらず39.7%の精度向上を維持
トレードオフ:
- すべてのバリアントでサイズが若干増加(0.1-0.3GB)
- 推論速度はほぼ同等(<5%の差)
これらのモデルの使用場面
📌 GPU VRAMにモデルを収める場合
✔ メモリ制約のある環境
✔ 1-2ビットの誤差が許容されるCPUおよびエッジデバイス
✔ 超低ビット量子化の研究
適切なモデルフォーマットの選択
適切なモデルフォーマットは、ハードウェアの能力とメモリ制約に依存します。
BF16(Brain Float 16)– BF16アクセラレーションが利用可能な場合に使用
- 高速な計算を可能にしつつ、良好な精度を維持する16ビット浮動小数点フォーマット。
- FP32と同様のダイナミックレンジを提供しつつ、メモリ使用量を低減。
- ハードウェアがBF16アクセラレーションをサポートしている場合に推奨(デバイスの仕様を確認)。
- FP32と比べてメモリフットプリントを削減しつつ、高性能な推論に最適。
📌 BF16を使用する場合:
✔ ハードウェアがBF16をネイティブサポート(例: 新しいGPU、TPU)。
✔ より高い精度が必要で、メモリも節約したい場合。
✔ モデルを別のフォーマットに再量子化する予定がある場合。
📌 BF16を避ける場合:
❌ ハードウェアがBF16をサポートしていない(FP32にフォールバックし、遅くなる可能性)。
❌ BF16最適化がない古いデバイスとの互換性が必要な場合。
F16(Float 16)– BF16より広くサポート
- 16ビット浮動小数点で高精度だが、BF16より値の範囲が狭い。
- FP16アクセラレーションをサポートするほとんどのデバイスで動作(多くのGPUや一部のCPUを含む)。
- BF16より若干精度が低いが、推論には一般的に十分。
📌 F16を使用する場合:
✔ ハードウェアがFP16をサポートしているが、BF16はサポートしていない場合。
✔ 速度、メモリ使用量、精度のバランスが必要な場合。
✔ GPUなど、FP16計算に最適化されたデバイスで実行する場合。
📌 F16を避ける場合:
❌ デバイスがネイティブFP16をサポートしていない(期待より遅くなる可能性)。
❌ メモリ制約がある場合。
量子化モデル(Q4_K、Q6_K、Q8など)– CPUおよび低VRAM推論用
量子化により、モデルサイズとメモリ使用量を削減しつつ、可能な限り精度を維持。
- 低ビットモデル(Q4_K) → メモリ使用量最小化に最適だが、精度は低め。
- 高ビットモデル(Q6_K、Q8_0) → 精度向上するが、より多くのメモリを必要。
📌 量子化モデルを使用する場合:
✔ CPUで推論を実行し、最適化されたモデルが必要な場合。
✔ デバイスのVRAMが少なく、フル精度モデルをロードできない場合。
✔ メモリフットプリントを削減しつつ、合理的な精度を維持したい場合。
📌 量子化モデルを避ける場合:
❌ 最高精度が必要な場合(フル精度モデルが適している)。
❌ ハードウェアがより高精度なフォーマット(BF16/F16)に対応する十分なVRAMを持っている場合。
超低ビット量子化(IQ3_XS、IQ3_S、IQ3_M、Q4_K、Q4_0)
これらのモデルは極めてメモリ効率が高く、低電力デバイスやメモリが深刻な制約となる大規模展開に最適。
-
IQ3_XS: 超低ビット量子化(3ビット)で極めてメモリ効率が高い。
- 使用例: Q4_Kでも大きすぎる超低メモリデバイスに最適。
- トレードオフ: 高ビット量子化と比べ精度が低い。
-
IQ3_S: 小さなブロックサイズで最大のメモリ効率を実現。
- 使用例: IQ3_XSが過剰な低メモリデバイスに最適。
-
IQ3_M: 中ブロックサイズでIQ3_Sより精度向上。
- 使用例: IQ3_Sが制限となる低メモリデバイスに適している。
-
Q4_K: 4ビット量子化でブロック単位最適化により精度向上。
- 使用例: Q6_Kが大きすぎる低メモリデバイスに最適。
-
Q4_0: 純粋な4ビット量子化で、ARMデバイスに最適化。
- 使用例: ARMベースデバイスまたは低メモリ環境に最適。
モデルフォーマット選択のまとめ
モデルフォーマット |
精度 |
メモリ使用量 |
デバイス要件 |
最適な使用例 |
BF16 |
最高 |
高 |
BF16対応GPU/CPU |
メモリ削減しつつ高速推論 |
F16 |
高 |
高 |
FP16対応デバイス |
BF16が利用できない場合のGPU推論 |
Q4_K |
中~低 |
低 |
CPUまたは低VRAMデバイス |
メモリ制約環境に最適 |
Q6_K |
中 |
中 |
メモリ豊富なCPU |
量子化されつつ精度向上 |
Q8_0 |
高 |
中 |
VRAM十分なCPU/GPU |
量子化モデル中最も高精度 |
IQ3_XS |
非常に低い |
非常に低い |
超低メモリデバイス |
極端なメモリ効率と低精度 |
Q4_0 |
低 |
低 |
ARMまたは低メモリデバイス |
llama.cppがARMデバイスに最適化 |
含まれるファイルと詳細
EXAONE-Deep-32B-bf16.gguf
- モデル重みをBF16で保持。
- 別のフォーマットに再量子化する場合に使用。
- デバイスがBF16アクセラレーションをサポートしている場合に最適。
EXAONE-Deep-32B-f16.gguf
- モデル重みをF16で保持。
- FP16をサポートするデバイスで、BF16が利用できない場合に使用。
EXAONE-Deep-32B-bf16-q8_0.gguf
- 出力層と埋め込み層はBF16のまま。
- その他のレイヤーはQ8_0で量子化。
- デバイスがBF16をサポートし、量子化版が必要な場合に使用。
EXAONE-Deep-32B-f16-q8_0.gguf
- 出力層と埋め込み層はF16のまま。
- その他のレイヤーはQ8_0で量子化。
EXAONE-Deep-32B-q4_k.gguf
- 出力層と埋め込み層はQ8_0で量子化。
- その他のレイヤーはQ4_Kで量子化。
- メモリ制約のあるCPU推論に適している。
EXAONE-Deep-32B-q4_k_s.gguf
- 最小のQ4_Kバリアントで、精度を犠牲にメモリ使用量を削減。
- 非常に低メモリ環境に最適。
EXAONE-Deep-32B-q6_k.gguf
- 出力層と埋め込み層はQ8_0で量子化。
- その他のレイヤーはQ6_Kで量子化。
EXAONE-Deep-32B-q8_0.gguf
- 完全なQ8量子化モデルで、より高精度。
- より多くのメモリを必要とするが、高精度を提供。
EXAONE-Deep-32B-iq3_xs.gguf
- IQ3_XS量子化で、極めてメモリ効率が高い。
- 超低メモリデバイスに最適。
EXAONE-Deep-32B-iq3_m.gguf
- IQ3_M量子化で、中ブロックサイズにより精度向上。
- 低メモリデバイスに適している。
EXAONE-Deep-32B-q4_0.gguf
- 純粋なQ4_0量子化で、ARMデバイスに最適化。
- 低メモリ環境に最適。
- より高い精度が必要な場合はIQ4_NLを推奨。
🚀 これらのモデルが役立った場合
「いいね」❤をクリックしてください。また、Network Monitor Assistantで私のネットワークモニターアシスタントをテストしていただけると非常に嬉しいです。
💬 チャットアイコン(メインページとダッシュボードページの右下)をクリックし、LLMを選択してください。TurboLLM -> FreeLLM -> TestLLMの間で切り替えられます。
テスト中の内容
ネットワーク監視サービスに対する関数呼び出しを実験中です。小さなオープンソースモデルを使用しています。「どれだけ小さくても機能するか」という疑問に取り組んでいます。
🟡 TestLLM – 現在のテストモデルをllama.cppで実行(CPU VMの6スレッドを使用。約15秒でロードされます。推論速度はかなり遅く、一度に1つのユーザープロンプトしか処理しません—スケーリングはまだ作業中です!)。興味があれば、その仕組みを共有できます!
その他の利用可能なAIアシスタント
🟢 TurboLLM – gpt-4o-miniを使用。高速!注意: OpenAIモデルは高価なためトークンに制限がありますが、ログインまたは無料のNetwork Monitorエージェントをダウンロードすることでより多くのトークンを取得できます。またはTestLLMを使用してください。
🔵 HugLLM – オープンソースのHugging Faceモデルを実行。高速ですが、小さいモデル(≈8B)のため品質は低め。Hugging Face APIの利用状況に応じて2倍のトークンを取得可能。