Qwen2.5-1M リリース:1MトークンコンテキストとvLLMベースの推論フレームワークを備えたオープンソースの7Bおよび14Bモデル
Overview
Qwenは、最大100万トークンのコンテキストを処理できるオープンソースのインストラクションチューニング済みモデルであるQwen2.5‑7B‑Instruct‑1MとQwen2.5‑14B‑Instruct‑1Mの2つをリリースし、vLLM上に構築された完全にオープンソースの推論フレームワークとともに提供します。このフレームワークは長コンテキストのプリフィルを高速化します。
Model Releases
このリリースでは、2つの新しいチェックポイントが提供されます:Qwen2.5‑7B‑Instruct‑1MおよびQwen2.5‑14B‑Instruct‑1M。これらは、100万トークンのコンテキスト長を持つ初めて公開されたQwenモデルです。
Long‑Context Performance
Qwen2.5‑1Mシリーズのモデルは、Passkey Retrievalタスクにおいて、100万トークンまでのドキュメントから隠れた情報を正確に取得し、7Bバリアントではわずかな誤差のみが観測されました。RULER、LV‑Eval、LongbenchChatなどのより複雑な長コンテキストベンチマークでは、64Kトークンを超えるシーケンスにおいて、これらのモデルは128Kバージョンを大きく上回ります。Qwen2.5‑14B‑Instruct‑1MモデルはQwen2.5‑Turboを上回るだけでなく、複数のデータセットにおいてGPT‑4o‑miniを一貫して上回り、長コンテキストタスクのための堅牢なオープンソースの代替手段を提供します。
Short‑Context Performance
Qwen2.5‑7B‑Instruct‑1MおよびQwen2.5‑14B‑Instruct‑1Mの両方は、128Kバージョンと同様のショートテキスタスク性能を維持し、長シーケンス処理の追加によって基本的な機能が損なわれないことを保証します。GPT‑4o‑miniと比較すると、Qwen2.5‑14B‑Instruct‑1MおよびQwen2.5‑Turboはショートテキスタスクにおいて同様の性能を達成しながら、コンテキスト長を8倍に延長しています。
Key Techniques
Long‑Context Training
トレーニングは段階的なスケジュールに従います:4Kトークンのチェックポイントから始まり、プリトレーニング中に調整されたRoPEベースを10,000から10,000,000に引き上げることでコンテキスト長を256Kトークンまで増やします。教師ありファインチューニングは2段階に分かれます-まず32Kトークンまでの短い指示で、次に短い指示と長い指示の混合を256Kトークンまでで行い-一方、強化学習は8Kトークンまでの短いテキストで実施されます。その結果得られたインストラクションチューニング済みモデルは256Kトークンを処理し、Dual Chunk Attention(DCA)による長さの外挿により、追加のトレーニングなしで1Mトークンまで拡張されます。
Dual Chunk Attention
DCAは相対位置を小さな値に再マッピングし、注意メカニズムにおいてモデルが未見の状態になることを防ぎます。これにより、小さな値で訓練されたモデルは、RoPEベースの劣化を引き起こす大きな未見の距離を回避できます。アブレーション研究によると、DCAを適用することで、わずか32Kトークンのみで訓練されたモデルでも、1MトークンにおけるPasskey Retrievalの精度をほぼ完璧に達成できることが示されています。
Sparse Attention
推論フレームワークは、いくつかの改良を加えたMInferenceベースのスパースアテンションメカニズムを統合しています:チャンク済みプリフィル(チャンクサイズ32,768トークン)により活性化VRAM使用量が96.7%削減されます;DCAはMInferenceと組み合わされ、効率と精度が向上します;スパース性の改良手法により、1Mトークンまでのシーケンスに対してスパース化設定が調整され、精度の損失が制限されます;さらにカーネルとパイプラインの最適化が適用されます。これらの改良により、モデルサイズとGPUデバイス全体で1Mトークンシーケンスのプリフィル速度が3.2×〜6.7×向上し、報告された3×〜7×の速度向上と一致します。
Deploy Qwen2.5‑1M Models Locally
System Preparation
最適なパフォーマンスを得るため、AmpereまたはHopperアーキテクチャのGPUを使用してください。必要なソフトウェア:CUDA 12.1または12.3、Python 3.9~3.12。1Mトークン処理に必要なVRAM:7Bモデルについては合計で少なくとも120 GB、14Bモデルについては合計で少なくとも320 GB(GPU間で)必要です。VRAMが少ないと、モデルは短いタスクに制限されます。
Install Dependencies
Clone the custom vLLM branch and install it:
git clone -b dev/dual-chunk-attn git@github.com:QwenLM/vllm.git
cd vllm
pip install -e . -v
Launch OpenAI‑Compatible API Service
以下のようなコマンドでサービスを起動します:
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
パラメータの意味:--tensor-parallel-sizeはGPUの数に等しい(7Bでは最大4、14Bでは最大8);--max-model-lenは最大入力長を設定します;--max-num-batched-tokensはチャンクドプリフィルのチャンクサイズを定義します(推奨値131,072);--max-num-seqsは同時シーケンス数を制限します。
Interact with the Model
curlを使用した例:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-7B-Instruct-1M",
"messages": [{"role": "user", "content": "Tell me something about large language models." }],
"temperature": 0.7,
"top_p": 0.8,
"repetition_penalty": 1.05,
"max_tokens": 512
}'
OpenAIクライアントを使用したPythonの例:
from openai import OpenAI
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(api_key=openai_api_key, base_url=openai_api_base)
prompt = ("There is an important info hidden inside a lot of irrelevant text. " +
"Find it and memorize it. I will quiz you about the important information there.\n\n" +
"The pass key is 28884. Remember it. 28884 is the pass key.\n" +
"+
"The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. " * 800 +
"\nWhat is the pass key?
)
chat_response = client.chat.completions.create(
model="Qwen/Qwen2.5-7B-Instruct-1M",
messages=[{"role": "user", "content": prompt}],
temperature=0,
)
print("Chat response:" + chat_response.choices[0].message.content)
その他のオプションには、PDF読み込みと専門タスク向けのQwen‑Agentフレームワークがあります。
What’s Next
Qwenは、より効率的なトレーニング方法、モデルアーキテクチャ、推論技術を研究することで、リソース制約のある環境でも展開可能でありながら、短いタスクと長いタスクの両方で高い性能を維持できる長コンテキストモデルのさらなる改善を目指しています。