Qwen3 32B FP8 Dynamic
モデル概要
モデル特徴
モデル能力
使用事例
🚀 Qwen3-32B-FP8-dynamic
このモデルは、Qwen3-32Bの重みと活性化関数をFP8データ型に量子化することで得られたものです。この最適化により、GPUメモリの使用量を削減し、行列乗算の計算スループットを向上させることができます。
🚀 クイックスタート
このモデルは、vLLMバックエンドを使用して効率的にデプロイできます。以下のコード例を参照してください。
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
model_id = "RedHatAI/Qwen3-32B-FP8-dynamic"
number_gpus = 1
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互換のサービングもサポートしています。詳細についてはドキュメントを参照してください。
✨ 主な機能
モデル概要
- モデルアーキテクチャ:Qwen3ForCausalLM
- 入力:テキスト
- 出力:テキスト
- モデル最適化:
- 活性化関数の量子化:FP8
- 重みの量子化:FP8
- 想定使用ケース:
- 推論
- 関数呼び出し
- 微調整による専門家知識の注入
- 多言語命令追従
- 翻訳
- 適用範囲外:適用される法律や規制(貿易コンプライアンス法律を含む)に違反する方法での使用
- リリース日:2025年5月2日
- バージョン:1.0
- モデル開発者:RedHat (Neural Magic)
モデル最適化
このモデルは、Qwen3-32Bの活性化関数と重みをFP8データ型に量子化することで得られました。この最適化により、重みと活性化関数を表すビット数が16ビットから8ビットに減少し、GPUメモリの使用量が約50%削減され、行列乗算の計算スループットが約2倍に増加します。重みの量子化により、ディスクサイズの要件も約50%削減されます。
トランスフォーマーブロック内の線形演算子の重みと活性化関数のみが量子化されます。重みは対称的な静的チャネルごとのスキームで量子化され、活性化関数は対称的な動的トークンごとのスキームで量子化されます。量子化にはllm-compressorライブラリが使用されています。
📦 インストール
このモデルを使用するには、必要なライブラリをインストールする必要があります。以下のコマンドを使用してインストールしてください。
pip install transformers vllm llmcompressor
💻 使用例
基本的な使用法
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
model_id = "RedHatAI/Qwen3-32B-FP8-dynamic"
number_gpus = 1
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)
高度な使用法
from llmcompressor.modifiers.quantization import QuantizationModifier
from llmcompressor.transformers import oneshot
from transformers import AutoModelForCausalLM, AutoTokenizer
# モデルの読み込み
model_stub = "Qwen/Qwen3-32B"
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}")
📚 ドキュメント
作成
このモデルは、llm-compressorを使用して作成されました。以下のコードスニペットを実行することで作成できます。
from llmcompressor.modifiers.quantization import QuantizationModifier
from llmcompressor.transformers import oneshot
from transformers import AutoModelForCausalLM, AutoTokenizer
# モデルの読み込み
model_stub = "Qwen/Qwen3-32B"
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と2)で、lm-evaluation-harnessを使用して評価され、推論タスクではlightevalを使用して評価されました。すべての評価にはvLLMが使用されました。
評価詳細
評価詳細を表示
lm-evaluation-harness
lm_eval \
--model vllm \
--model_args pretrained="RedHatAI/Qwen3-32B-FP8-dynamic",dtype=auto,gpu_memory_utilization=0.5,max_model_len=8192,enable_chunk_prefill=True,tensor_parallel_size=2 \
--tasks openllm \
--apply_chat_template\
--fewshot_as_multiturn \
--batch_size auto
lm_eval \
--model vllm \
--model_args pretrained="RedHatAI/Qwen3-32B-FP8-dynamic",dtype=auto,gpu_memory_utilization=0.5,max_model_len=8192,enable_chunk_prefill=True,tensor_parallel_size=2 \
--tasks mgsm \
--apply_chat_template\
--batch_size auto
lm_eval \
--model vllm \
--model_args pretrained="RedHatAI/Qwen3-32B-FP8-dynamic",dtype=auto,gpu_memory_utilization=0.5,max_model_len=16384,enable_chunk_prefill=True,tensor_parallel_size=2 \
--tasks leaderboard \
--apply_chat_template\
--fewshot_as_multiturn \
--batch_size auto
lighteval
lighteval_model_arguments.yaml
model_parameters:
model_name: RedHatAI/Qwen3-32B-FP8-dynamic
dtype: auto
gpu_memory_utilization: 0.9
tensor_parallel_size: 2
max_model_length: 40960
generation_parameters:
temperature: 0.6
top_k: 20
min_p: 0.0
top_p: 0.95
max_new_tokens: 32768
lighteval vllm \
--model_args lighteval_model_arguments.yaml \
--tasks lighteval|aime24|0|0 \
--use_chat_template = true
lighteval vllm \
--model_args lighteval_model_arguments.yaml \
--tasks lighteval|aime25|0|0 \
--use_chat_template = true
lighteval vllm \
--model_args lighteval_model_arguments.yaml \
--tasks lighteval|math_500|0|0 \
--use_chat_template = true
lighteval vllm \
--model_args lighteval_model_arguments.yaml \
--tasks lighteval|gpqa:diamond|0|0 \
--use_chat_template = true
lighteval vllm \
--model_args lighteval_model_arguments.yaml \
--tasks extended|lcb:codegeneration \
--use_chat_template = true
精度
カテゴリ | ベンチマーク | Qwen3-32B | Qwen3-32B-FP8-dynamic (このモデル) | 回復率 |
---|---|---|---|---|
OpenLLM v1 | MMLU (5-shot) | 80.96 | 80.89 | 99.9% |
OpenLLM v1 | ARC Challenge (25-shot) | 69.03 | 68.00 | 98.5% |
OpenLLM v1 | GSM-8K (5-shot, strict-match) | 87.64 | 88.32 | 100.8% |
OpenLLM v1 | Hellaswag (10-shot) | 71.10 | 71.44 | 100.5% |
OpenLLM v1 | Winogrande (5-shot) | 69.77 | 69.85 | 100.1% |
OpenLLM v1 | TruthfulQA (0-shot, mc2) | 58.63 | 59.13 | 100.9% |
OpenLLM v1 | Average | 72.86 | 72.94 | 100.1% |
OpenLLM v2 | MMLU-Pro (5-shot) | 54.24 | 54.78 | 101.0% |
OpenLLM v2 | IFEval (0-shot) | 86.23 | 86.23 | 100.0% |
OpenLLM v2 | BBH (3-shot) | 44.29 | 43.70 | 98.7% |
OpenLLM v2 | Math-lvl-5 (4-shot) | 54.61 | 57.26 | 104.9% |
OpenLLM v2 | GPQA (0-shot) | 5.53 | 5.46 | --- |
OpenLLM v2 | MuSR (0-shot) | 7.85 | 8.81 | --- |
OpenLLM v2 | Average | 42.13 | 42.71 | 101.4% |
Multilingual | MGSM (0-shot) | 32.57 | ||
Reasoning (generation) | AIME 2024 | 79.37 | 79.37 | 100.0% |
Reasoning (generation) | AIME 2025 | 71.77 | 70.42 | 98.1% |
Reasoning (generation) | GPQA diamond | 66.67 | 68.69 | 103.0% |
Reasoning (generation) | Math-lvl-5 | 96.20 | 96.40 | 100.2% |
Reasoning (generation) | LiveCodeBench | 62.45 | 63.32 | 101.4% |
📄 ライセンス
このモデルはApache 2.0ライセンスの下で提供されています。



