🚀 Qwen3-235B-A22B-FP8-dynamic
このプロジェクトは、Qwen3-235B-A22BモデルをFP8量子化したバージョンです。GPUメモリの要件を効果的に削減し、計算スループットを向上させることができ、推論や関数呼び出しなどのさまざまな自然言語処理シーンで使用できます。
🚀 クイックスタート
このモデルは、vLLM バックエンドを使用して効率的にデプロイできます。サンプルコードは次の通りです。
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
model_id = "RedHatAI/Qwen3-235B-A22B-FP8-dynamic"
number_gpus = 4
sampling_params = SamplingParams(temperature=0.6, top_p=0.95, top_k=20, min_p=0, max_tokens=256)
messages = [
{"role": "user", "content": prompt}
]
tokenizer = AutoTokenizer.from_pretrained(model_id)
messages = [{"role": "user", "content": "Give me a short introduction to large language model."}]
prompts = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
llm = LLM(model=model_id, tensor_parallel_size=number_gpus)
outputs = llm.generate(prompts, sampling_params)
generated_text = outputs[0].outputs[0].text
print(generated_text)
vLLM は、OpenAI互換のサービスもサポートしています。詳細については、ドキュメント を参照してください。
✨ 主な機能
- モデルアーキテクチャ:Qwen3MoeForCausalLM。入力と出力はどちらもテキストです。
- モデル最適化:アクティベーションと重みをFP8量子化することで、GPUメモリの要件を約50%削減し、行列乗算の計算スループットを約2倍に向上させ、同時にディスクサイズの要件も約50%削減します。
- 想定されるユースケース:推論、関数呼び出し、微調整による専門家向けサービス、多言語命令追従、翻訳など。
- 適用範囲:適用される法律や規制(貿易コンプライアンス法律を含む)に違反する方法での使用は禁止されています。
- 公開日:2025年5月5日
- バージョン:1.0
- モデル開発者:RedHat (Neural Magic)
モデル最適化の詳細
このモデルは、Qwen3-235B-A22B のアクティベーションと重みをFP8データ型に量子化することで得られました。Transformerブロック内の線形演算子の重みとアクティベーションのみを量子化し、重みは対称的な静的なチャネルごとのスキームで量子化され、アクティベーションは対称的な動的なトークンごとのスキームで量子化されます。量子化には llm-compressor ライブラリが使用されています。
💻 使用例
基本的な使用法
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
model_id = "RedHatAI/Qwen3-235B-A22B-FP8-dynamic"
number_gpus = 4
sampling_params = SamplingParams(temperature=0.6, top_p=0.95, top_k=20, min_p=0, max_tokens=256)
messages = [
{"role": "user", "content": prompt}
]
tokenizer = AutoTokenizer.from_pretrained(model_id)
messages = [{"role": "user", "content": "Give me a short introduction to large language model."}]
prompts = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
llm = LLM(model=model_id, tensor_parallel_size=number_gpus)
outputs = llm.generate(prompts, sampling_params)
generated_text = outputs[0].outputs[0].text
print(generated_text)
📚 ドキュメント
モデルの作成
作成の詳細
このモデルは [llm-compressor](https://github.com/vllm-project/llm-compressor) を使用して作成されました。コードの断片は次の通りです。
from llmcompressor.modifiers.quantization import QuantizationModifier
from llmcompressor.transformers import oneshot
from transformers import AutoModelForCausalLM, AutoTokenizer
model_stub = "Qwen/Qwen3-235B-A22B"
model_name = model_stub.split("/")[-1]
model = AutoModelForCausalLM.from_pretrained(model_stub)
tokenizer = AutoTokenizer.from_pretrained(model_stub)
recipe = QuantizationModifier(
ignore=["lm_head"],
targets="Linear",
scheme="FP8_dynamic",
)
oneshot(
model=model,
recipe=recipe,
)
save_path = model_name + "-FP8-dynamic"
model.save_pretrained(save_path)
tokenizer.save_pretrained(save_path)
print(f"Model and tokenizer saved to: {save_path}")
モデルの評価
このモデルは、OpenLLMランキングタスク(バージョン1)で評価されました。lm-evaluation-harness と vLLM を使用しています。
評価の詳細
lm_eval \
--model vllm \
--model_args pretrained="RedHatAI/Qwen3-235B-A22B-FP8-dynamic",dtype=auto,gpu_memory_utilization=0.5,max_model_len=8192,enable_chunk_prefill=True,tensor_parallel_size=4 \
--tasks openllm \
--apply_chat_template\
--fewshot_as_multiturn \
--batch_size auto
正解率
カテゴリ |
ベンチマークテスト |
Qwen3-235B-A22B |
Qwen3-235B-A22B-FP8-dynamic(このモデル) |
回復率 |
OpenLLM v1 |
MMLU (5-shot) |
84.77 |
84.61 |
99.8% |
OpenLLM v1 |
ARC Challenge (25-shot) |
71.84 |
70.90 |
98.7% |
OpenLLM v1 |
GSM-8K (5-shot, strict-match) |
74.22 |
74.98 |
101.0% |
OpenLLM v1 |
Hellaswag (10-shot) |
76.56 |
76.10 |
99.4% |
OpenLLM v1 |
Winogrande (5-shot) |
73.95 |
75.06 |
101.5% |
OpenLLM v1 |
TruthfulQA (0-shot, mc2) |
61.18 |
60.93 |
99.6% |
OpenLLM v1 |
平均 |
73.75 |
73.76 |
100.0% |
📄 ライセンス
このプロジェクトは、Apache-2.0ライセンスの下で提供されています。