モデル概要
モデル特徴
モデル能力
使用事例
🚀 Qwen2.5-14B-Instruct-1M GGUFモデル
Qwen2.5-14B-Instruct-1M GGUFモデルは、超低ビット量子化技術を用いて、メモリ使用量を大幅に削減しながら、高精度の推論を実現することができます。本モデルは、CPUや低VRAMデバイスでの推論に最適化されており、長コンテキストタスクの処理性能も大幅に向上しています。
🚀 クイックスタート
基本的な使用法
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2.5-14B-Instruct-1M"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "大規模言語モデルについて簡単な説明をしてください。"
messages = [
{"role": "system", "content": "あなたはAlibaba Cloudによって作成されたQwenです。役に立つアシスタントです。"},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
超長テキストの処理
1. システムの準備
最高のパフォーマンスを実現するには、最適化されたカーネルをサポートするAmpereまたはHopperアーキテクチャのGPUを使用することをお勧めします。
システムが以下の要件を満たしていることを確認してください:
- CUDAバージョン: 12.1または12.3
- Pythonバージョン: >=3.9および<=3.12
VRAM要件:
- 100万トークンのシーケンスを処理する場合:
- Qwen2.5-7B-Instruct-1M: 少なくとも120GBのVRAM (GPU全体で合計)
- Qwen2.5-14B-Instruct-1M: 少なくとも320GBのVRAM (GPU全体で合計)
GPUのVRAMが十分でない場合でも、Qwen2.5-1Mを短いタスクに使用することができます。
2. 依存関係のインストール
現時点では、カスタムブランチからvLLMリポジトリをクローンし、手動でインストールする必要があります。当社のブランチをメインのvLLMプロジェクトにマージする作業を行っています。
git clone -b dev/dual-chunk-attn git@github.com:QwenLM/vllm.git
cd vllm
pip install -e . -v
3. vLLMの起動
vLLMはオフライン推論またはOpenAIライクなサーバーの起動をサポートしています。
オフライン推論の例
from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
# トークナイザの初期化
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-14B-Instruct-1M")
# Qwen2.5-14B-Instructのデフォルトのデコードハイパーパラメータを渡す
# max_tokensは生成の最大長です。
sampling_params = SamplingParams(temperature=0.7, top_p=0.8, repetition_penalty=1.05, max_tokens=512)
# モデル名またはパスを入力します。(OpenAIライクなサーバーの例の後に)パラメータの説明を参照してください。
llm = LLM(model="Qwen/Qwen2.5-14B-Instruct-1M",
tensor_parallel_size=4,
max_model_len=1010000,
enable_chunked_prefill=True,
max_num_batched_tokens=131072,
enforce_eager=True,
# quantization="fp8", # モデルの重みにFP8量子化を有効にすると、メモリ使用量を削減できます。
)
# プロンプトを準備します
prompt = "大規模言語モデルについて教えてください。"
messages = [
{"role": "system", "content": "あなたはAlibaba Cloudによって作成されたQwenです。役に立つアシスタントです。"},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
# 出力を生成します
outputs = llm.generate([text], sampling_params)
# 出力を印刷します。
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"プロンプト: {prompt!r}, 生成されたテキスト: {generated_text!r}")
OpenAIライクなサーバーの例
vllm serve Qwen/Qwen2.5-14B-Instruct-1M \
--tensor-parallel-size 4 \
--max-model-len 1010000 \
--enable-chunked-prefill --max-num-batched-tokens 131072 \
--enforce-eager \
--max-num-seqs 1
# --quantization fp8 # モデルの重みにFP8量子化を有効にすると、メモリ使用量を削減できます。
その後、curlまたはPythonを使用してデプロイされたモデルと対話することができます。
パラメータの説明:
-
--tensor-parallel-size
- 使用するGPUの数に設定します。7Bモデルの場合は最大4つのGPU、14Bモデルの場合は最大8つのGPU。
-
--max-model-len
- 最大入力シーケンス長を定義します。メモリ不足の問題が発生した場合は、この値を小さくしてください。
-
--max-num-batched-tokens
- チャンクされた事前埋め込みのチャンクサイズを設定します。小さい値は、アクティベーションメモリの使用量を削減しますが、推論速度が低下する可能性があります。
- 最適なパフォーマンスのためには、131072を推奨します。
-
--max-num-seqs
- 同時に処理するシーケンスを制限します。
vLLMの使用方法については、ドキュメント も参照してください。
トラブルシューティング:
-
「モデルの最大シーケンス長 (xxxxx) がKVキャッシュに保存できる最大トークン数より大きい」というエラーが発生した場合
KVキャッシュに予約されたVRAMが不十分です。
max_model_len
を小さくするか、tensor_parallel_size
を大きくすることを検討してください。または、max_num_batched_tokens
を小さくすることもできますが、これにより推論速度が大幅に低下する可能性があります。 -
「torch.OutOfMemoryError: CUDA out of memory」というエラーが発生した場合
アクティベーションウェイトに予約されたVRAMが不十分です。
gpu_memory_utilization
を0.85以下に設定することができますが、これによりKVキャッシュに使用可能なVRAMが減少することに注意してください。 -
「入力プロンプト (xxxxxトークン) + 先読みスロット (0) が長すぎて、ブロックマネージャーの容量を超えています」というエラーが発生した場合
入力が長すぎます。短いシーケンスを使用するか、
max_model_len
を大きくすることを検討してください。
✨ 主な機能
- 超低ビット量子化技術: 本モデルは、IQ-DynamicGateによる超低ビット量子化 (1 - 2ビット) を採用しており、メモリ使用量を大幅に削減しながら、高精度の推論を実現することができます。
- 長コンテキストタスクの処理能力: Qwen2.5-1Mは、最大100万トークンのコンテキスト長をサポートしており、長コンテキストタスクの処理性能が大幅に向上しています。
- 多様なモデル形式のサポート: 本モデルは、BF16、F16、量子化モデル (Q4_K, Q6_K, Q8, など)、超低ビット量子化 (IQ3_XS, IQ3_S, IQ3_M, Q4_K, Q4_0) など、多様なモデル形式をサポートしており、ハードウェアの能力やメモリ制限に応じて最適なモデル形式を選択することができます。
📦 インストール
Qwen2.5のコードは最新のHugging face transformers
に含まれています。最新バージョンの transformers
を使用することをお勧めします。
transformers<4.37.0
を使用すると、以下のエラーが発生します:
KeyError: 'qwen2'
🔧 技術詳細
IQ-DynamicGateによる超低ビット量子化 (1 - 2ビット)
私たちの最新の量子化方法では、超低ビットモデル (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 は、わずか0.2GBの追加で、パープレキシティを36.9%削減します
- ⚡ IQ1_S は、1ビット量子化でありながら、39.7%の精度向上を維持します
トレードオフ:
- すべてのバリアントで、適度なサイズの増加 (0.1 - 0.3GB) があります
- 推論速度は同等のままです (<5%の差)
適切なモデル形式の選択
正しいモデル形式を選択するには、ハードウェアの能力とメモリ制限に応じます。
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: ARMデバイス向けに最適化された純粋な4ビット量子化です。
- 使用例: 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デバイスを最適化できる |
📚 ドキュメント
含まれるファイルと詳細
Qwen2.5-14B-Instruct-1M-bf16.gguf
- モデルの重みがBF16で保存されています。
- モデルを別の形式に再量子化したい場合に使用します。
- あなたのデバイスがBF16アクセラレーションをサポートしている場合に最適です。
Qwen2.5-14B-Instruct-1M-f16.gguf
- モデルの重みがF16で保存されています。
- あなたのデバイスがFP16をサポートしている場合、特にBF16が利用できない場合に使用します。
Qwen2.5-14B-Instruct-1M-bf16-q8_0.gguf
- 出力と埋め込みはBF16のままです。
- 他のすべての層はQ8_0に量子化されています。
- あなたのデバイスがBF16をサポートしており、量子化バージョンが必要な場合に使用します。
Qwen2.5-14B-Instruct-1M-f16-q8_0.gguf
- 出力と埋め込みはF16のままです。
- 他のすべての層はQ8_0に量子化されています。
Qwen2.5-14B-Instruct-1M-q4_k.gguf
- 出力と埋め込みはQ8_0に量子化されています。
- 他のすべての層はQ4_Kに量子化されています。
- メモリが限られたCPU推論に適しています。
Qwen2.5-14B-Instruct-1M-q4_k_s.gguf
- 最も小さなQ4_Kバリアントで、精度を犠牲にしてメモリ使用量を減らします。
- 非常に低いメモリのセットアップに最適です。
Qwen2.5-14B-Instruct-1M-q6_k.gguf
- 出力と埋め込みはQ8_0に量子化されています。
- 他のすべての層はQ6_Kに量子化されています。
Qwen2.5-14B-Instruct-1M-q8_0.gguf
- 完全にQ8に量子化されたモデルで、精度が高くなります。
- より多くのメモリが必要ですが、より高い精度を提供します。
Qwen2.5-14B-Instruct-1M-iq3_xs.gguf
- IQ3_XS 量子化で、極端なメモリ効率を実現するように最適化されています。
- 超低メモリデバイスに最適です。
Qwen2.5-14B-Instruct-1M-iq3_m.gguf
- IQ3_M 量子化で、精度を向上させるための中ブロックサイズを提供します。
- 低メモリデバイスに適しています。
Qwen2.5-14B-Instruct-1M-q4_0.gguf
- 純粋なQ4_0量子化で、ARMデバイス向けに最適化されています。
- 低メモリ環境に最適です。
- より高い精度が必要な場合は、IQ4_NLを選択してください。
モデルのテスト
❤ 役に立ったと思ったら、「いいね」をクリックしてください!
私のAI搭載ネットワークモニターアシスタントの量子対応セキュリティチェックをテストしてください:
👉 無料ネットワークモニター
💬 テスト方法:
- ページの右下にあるチャットアイコンをクリックします。
- AIアシスタントのタイプを選択します:
TurboLLM
(GPT - 4 - mini)FreeLLM
(オープンソース)TestLLM
(実験的なCPU専用)
私がテストしている内容
私は、AIネットワークモニタリング用の小さなオープンソースモデルの限界を追求しています。具体的には:
- ライブネットワークサービスに対する関数呼び出し
- モデルをどれだけ小さくできるかを検討しながら、以下を処理することができます:
- 自動化されたNmapスキャン
- 量子対応チェック
- Metasploitの統合
🟡 TestLLM – 現在の実験的なモデル (6つのCPUスレッドでのllama.cpp):
- ✅ ゼロコンフィギュレーションセットアップ
- ⏳ 30秒のロード時間 (低速な推論ですが、APIコストがかからない)
- 🔧 協力者を募集しています! エッジデバイスAIに興味がある方、一緒に協力しましょう!
他のアシスタント
🟢 TurboLLM – gpt - 4 - mini を使用して:
- リアルタイムのネットワーク診断
- 自動化された侵入テスト (Nmap/Metasploit)
- 🔑 無料ネットワークモニターエージェントをダウンロード することで、より多くのトークンを取得できます。
🔵 HugLLM – オープンソースモデル (約80億パラメータ):
- TurboLLMの2倍のトークン
- AI搭載のログ分析
- 🌐 Hugging Face推論API上で動作します。
💡 テストするためのAIコマンドの例:
"私のウェブサイトのSSL証明書に関する情報を教えて"
"私のサーバーが通信に量子安全暗号化を使用しているか確認して"
"迅速なNmap脆弱性テストを実行して"
📄 ライセンス
本モデルは、Apache-2.0ライセンス の下で公開されています。



