モデル概要
モデル特徴
モデル能力
使用事例
🚀 Qwen2.5-7B-Instruct-1M GGUFモデル
このモデルは、テキスト生成に特化したチャットモデルです。最新の量子化方法を用いて、超低ビットモデルでの性能向上を実現しています。また、様々なモデル形式を提供し、ハードウェア能力やメモリ制約に合わせた最適な選択が可能です。
🚀 クイックスタート
ここでは、apply_chat_template
を使用して、トークナイザーとモデルをロードし、内容を生成する方法を示すコードスニペットを提供します。
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2.5-7B-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]
超長文の処理
長いシーケンスの処理精度と効率を向上させるために、vLLMベースの高度な推論フレームワークを開発しました。これには疎アテンションと長文外挿法が組み込まれており、25.6万トークンを超えるシーケンスのモデル生成性能が大幅に向上し、最大100万トークンのシーケンスで3から7倍の高速化を達成します。
ここでは、当社のフレームワークでQwen2.5-1Mモデルをデプロイする手順を提供します。
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-7B-Instruct-1M")
# Qwen2.5-7B-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-7B-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-7B-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のメモリが不足しています」というエラーが発生した場合。
アクティベーション重みに予約されたVRAMが不十分です。
gpu_memory_utilization
を0.85またはそれ以下に設定してみることができますが、これによりKVキャッシュに利用可能なVRAMが減少することに注意してください。 - 「入力プロンプト(xxxxxトークン) + 先読みスロット(0)が長すぎて、ブロックマネージャーの容量を超えています」というエラーが発生した場合。
入力が長すぎます。短いシーケンスを使用するか、
max_model_len
を増やすことを検討してください。
✨ 主な機能
- IQ-DynamicGateによる超低ビット量子化(1 - 2ビット):最新の量子化方法で、超低ビットモデルでの性能向上を実現。
- 様々なモデル形式の選択:BF16、F16、量子化モデルなど、ハードウェア能力やメモリ制約に合わせた最適な選択が可能。
- 超長文の処理能力:vLLMベースの高度な推論フレームワークを用いて、最大100万トークンのシーケンスを高速かつ高精度に処理。
📦 インストール
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%未満)
これらのモデルを使用するタイミング
📌 モデルを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が少なく、フル精度モデルをロードできない場合。 ✔ メモリ使用量を削減しながら、妥当な精度を維持したい場合。
📌 量子化モデルを避ける場合 ❌ 最高の精度が必要な場合(フル精度モデルの方が適しています)。 ❌ ハードウェアに十分なVRAMがあり、より高精度の形式(BF16/F16)が使用できる場合。
超低ビット量子化(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-7B-Instruct-1M-bf16.gguf
- モデルの重みは BF16 で保存されています。
- モデルを別の形式に 再量子化 したい場合に使用します。
- デバイスが BF16アクセラレーションをサポートしている場合に最適 です。
Qwen2.5-7B-Instruct-1M-f16.gguf
- モデルの重みは F16 で保存されています。
- デバイスが FP16をサポートしている場合、特にBF16が利用できない場合に使用します。
Qwen2.5-7B-Instruct-1M-bf16-q8_0.gguf
- 出力層と埋め込み層 は BF16 のまま。
- その他のすべての層は Q8_0 に量子化されています。
- デバイスが BF16をサポートし、量子化バージョンが必要な場合に使用します。
Qwen2.5-7B-Instruct-1M-f16-q8_0.gguf
- 出力層と埋め込み層 は F16 のまま。
- その他のすべての層は Q8_0 に量子化されています。
Qwen2.5-7B-Instruct-1M-q4_k.gguf
- 出力層と埋め込み層 は Q8_0 に量子化されています。
- その他のすべての層は Q4_K に量子化されています。
- メモリが限られたCPU推論に適しています。
Qwen2.5-7B-Instruct-1M-q4_k_s.gguf
- 最も小さい Q4_K バリアントで、精度を犠牲にしてメモリ使用量を削減しています。
- 非常に低メモリの設定に最適 です。
Qwen2.5-7B-Instruct-1M-q6_k.gguf
- 出力層と埋め込み層 は Q8_0 に量子化されています。
- その他のすべての層は Q6_K に量子化されています。
Qwen2.5-7B-Instruct-1M-q8_0.gguf
- 完全に Q8 量子化されたモデルで、精度が向上します。
- より多くのメモリが必要 ですが、より高い精度を提供します。
Qwen2.5-7B-Instruct-1M-iq3_xs.gguf
- IQ3_XS 量子化で、極限のメモリ効率 を追求するように最適化されています。
- 超低メモリデバイスに最適 です。
Qwen2.5-7B-Instruct-1M-iq3_m.gguf
- IQ3_M 量子化で、中程度のブロックサイズ で精度が向上します。
- 低メモリデバイスに適しています。
Qwen2.5-7B-Instruct-1M-q4_0.gguf
- ARMデバイス用に最適化された純粋な Q4_0 量子化。
- 低メモリ環境に最適 です。
- 精度を向上させるにはIQ4_NLを選択することをおすすめします。
🔧 技術詳細
モデルの概要
Qwen2.5-1MはQwen2.5シリーズモデルの長文対応バージョンで、最大100万トークンのコンテキスト長をサポートしています。Qwen2.5の12.8万トークンバージョンと比較して、Qwen2.5-1Mは長文対応タスクで大幅な性能向上を示しながら、短文タスクでの能力も維持しています。
このモデルには以下の特徴があります。
- 種類: 因果言語モデル
- トレーニング段階: 事前学習と事後学習
- アーキテクチャ: RoPE、SwiGLU、RMSNorm、およびAttention QKVバイアスを備えたトランスフォーマー
- パラメータ数: 76.1億
- パラメータ数(非埋め込み): 65.3億
- レイヤー数: 28
- アテンションヘッド数(GQA): Qは28、KVは4
- コンテキスト長: 最大1,010,000トークン、生成は8192トークン
- 独自のカスタムvLLMでデプロイすることをおすすめします。これには疎アテンションと長文外挿法が導入されており、長文タスクの効率と精度が保証されます。具体的なガイダンスについては、このセクション を参照してください。
- Qwen2.5をサポートする以前のフレームワークを使用して推論を行うこともできますが、262,144トークンを超えるシーケンスでは精度が低下する可能性があります。
詳細については、ブログ、GitHub、技術レポート、およびドキュメント を参照してください。
📄 ライセンス
このモデルは Apache-2.0 ライセンスの下で提供されています。
🚀 これらのモデルが役に立った場合
❤ これが役に立った場合は「いいね」をクリックしてください! 量子対応のセキュリティチェックを備えたAIパワードのネットワークモニターアシスタント のテストに協力してください。 👉 無料ネットワークモニター
💬 テスト方法:
- チャットアイコン をクリックします(任意のページの右下にあります)。
- AIアシスタントのタイプ を選択します。
TurboLLM
(GPT-4-mini)FreeLLM
(オープンソース)TestLLM
(実験的なCPU専用)
テスト内容
私は、AIネットワーク監視用の小さなオープンソースモデルの限界を追求しています。具体的には、
- ライブネットワークサービスに対する 関数呼び出し
- モデルがどれだけ小さくできるか を調査しています。
- 自動化された Nmapスキャン
- 量子対応チェック
- Metasploit統合
🟡 TestLLM – 現在の実験的モデル(llama.cppを6つのCPUスレッドで実行):
- ✅ ゼロ設定ですぐに使えます
- ⏳ 30秒のロード時間(推論は遅いですが API料金はかかりません)
- 🔧 協力者を募集しています! エッジデバイスAI に興味がある方は、一緒に協力しましょう!
その他のアシスタント
🟢 TurboLLM – gpt-4-mini を使用して以下の機能を提供します。
- リアルタイムのネットワーク診断
- 自動化されたペネトレーションテスト (Nmap/Metasploit)
- 🔑 無料ネットワークモニターエージェントをダウンロード することで、より多くのトークンを取得できます。
🔵 HugLLM – オープンソースモデル(約8Bパラメータ):
- TurboLLMの2倍のトークン数
- AIパワードのログ分析
- 🌐 Hugging Face推論API上で実行されます。
💡 テストするAIコマンドの例:
"自分のウェブサイトのSSL証明書に関する情報を教えて"
"自分のサーバーが通信に量子安全暗号化を使用しているか確認して"
"迅速なNmap脆弱性テストを実行して"
評価とパフォーマンス
詳細な評価結果は、この 📑 ブログ と 技術レポート で報告されています。
引用
この研究が役に立った場合は、以下のように引用していただけると幸いです。
@misc{qwen2.5-1m,
title = {Qwen2.5-1M: コンテキスト長が最大100万トークンのQwenを独自にデプロイする},
url = {https://qwenlm.github.io/blog/qwen2.5-1m/},
author = {Qwenチーム},
month = {1月},
year = {2025}
}
@article{qwen2.5,
title={Qwen2.5-1M技術レポート},
author={An Yang、Bowen Yu、Chengyuan Li、Dayiheng Liu、Fei Huang、Haoyan Huang、Jiandong Jiang、Jianhong Tu、Jianwei Zhang、Jingren Zhou、Junyang Lin、Kai Dang、Kexin Yang、Le Yu、Mei Li、Minmin Sun、Qin Zhu、Rui Men、Tao He、Weijia Xu、Wenbiao Yin、Wenyuan Yu、Xiafei Qiu、Xingzhang Ren、Xinlong Yang、Yong Li、Zhiying Xu、Zipeng Zhang},
journal={arXiv preprint arXiv:2501.15383},
year={2025}
}



