language:
- en
- fr
- de
- es
- pt
- it
- ja
- ko
- ru
- zh
- ar
- fa
- id
- ms
- ne
- pl
- ro
- sr
- sv
- tr
- uk
- vi
- hi
- bn
license: apache-2.0
library_name: vllm
base_model:
- mistralai/Mistral-Small-3.1-24B-Instruct-2503
pipeline_tag: image-text-to-text
tags:
- neuralmagic
- redhat
- llmcompressor
- quantized
- FP8
Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic
モデル概要
- モデルアーキテクチャ: Mistral3ForConditionalGeneration
- モデル最適化:
- 想定用途: 以下の用途に最適です:
- 高速応答型の会話エージェント
- 低遅延の関数呼び出し
- 専門家向けのファインチューニング
- 機密データを扱う個人や組織のローカル推論
- プログラミングと数学的推論
- 長文ドキュメントの理解
- 視覚的理解
- 対象外: 適用可能な法律や規制(貿易コンプライアンス法を含む)に違反する使用。モデルが公式にサポートしていない言語での使用。
- リリース日: 2025年4月15日
- バージョン: 1.0
- モデル開発者: RedHat (Neural Magic)
モデル最適化
このモデルは、Mistral-Small-3.1-24B-Instruct-2503の活性化と重みをFP8データ型に量子化することで得られました。
この最適化により、重みと活性化を表すビット数が16から8に減少し、GPUメモリ要件が約50%削減され、行列乗算の計算スループットが約2倍向上します。
重みの量子化により、ディスクサイズ要件も約50%削減されます。
量子化されるのは、トランスフォーマーブロック内の線形演算子の重みと活性化のみです。
重みは対称的な静的チャネル単位のスキームで量子化され、活性化は対称的な動的トークン単位のスキームで量子化されます。
量子化にはllm-compressorライブラリが使用されています。
デプロイメント
このモデルは、以下の例のようにvLLMバックエンドを使用して効率的にデプロイできます。
from vllm import LLM, SamplingParams
from transformers import AutoProcessor
model_id = "RedHatAI/Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic"
number_gpus = 1
sampling_params = SamplingParams(temperature=0.7, top_p=0.8, max_tokens=256)
processor = AutoProcessor.from_pretrained(model_id)
messages = [{"role": "user", "content": "Give me a short introduction to large language model."}]
prompts = processor.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互換のサービスもサポートしています。詳細はドキュメントを参照してください。
作成
作成詳細
このモデルは、以下のコードスニペットを実行して[llm-compressor](https://github.com/vllm-project/llm-compressor)で作成されました。
from llmcompressor.modifiers.quantization import QuantizationModifier
from llmcompressor.transformers import oneshot
from transformers import AutoModelForImageTextToText, AutoProcessor
model_stub = "mistralai/Mistral-Small-3.1-24B-Instruct-2503"
model_name = model_stub.split("/")[-1]
model = AutoModelForImageTextToText.from_pretrained(model_stub)
processor = AutoProcessor.from_pretrained(model_stub)
recipe = QuantizationModifier(
ignore=["language_model.lm_head", "re:vision_tower.*", "re:multi_modal_projector.*"],
targets="Linear",
scheme="FP8_dynamic",
)
oneshot(
model=model,
recipe=recipe,
)
save_path = model_name + "-FP8-dynamic"
model.save_pretrained(save_path)
processor.save_pretrained(save_path)
print(f"Model and tokenizer saved to: {save_path}")
評価
このモデルは、OpenLLMリーダーボードタスク(バージョン1)、MMLU-pro、GPQA、HumanEval、MBPPで評価されました。
非コーディングタスクはlm-evaluation-harnessで評価され、コーディングタスクはevalplusのフォークで評価されました。
すべての評価にはvLLMがエンジンとして使用されました。
評価詳細
MMLU
lm_eval \
--model vllm \
--model_args pretrained="RedHatAI/Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic",dtype=auto,gpu_memory_utilization=0.5,max_model_len=8192,enable_chunk_prefill=True,tensor_parallel_size=2 \
--tasks mmlu \
--num_fewshot 5 \
--apply_chat_template\
--fewshot_as_multiturn \
--batch_size auto
ARC Challenge
lm_eval \
--model vllm \
--model_args pretrained="RedHatAI/Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic",dtype=auto,gpu_memory_utilization=0.5,max_model_len=8192,enable_chunk_prefill=True,tensor_parallel_size=2 \
--tasks arc_challenge \
--num_fewshot 25 \
--apply_chat_template\
--fewshot_as_multiturn \
--batch_size auto
GSM8k
lm_eval \
--model vllm \
--model_args pretrained="RedHatAI/Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic",dtype=auto,gpu_memory_utilization=0.9,max_model_len=8192,enable_chunk_prefill=True,tensor_parallel_size=2 \
--tasks gsm8k \
--num_fewshot 8 \
--apply_chat_template\
--fewshot_as_multiturn \
--batch_size auto
Hellaswag
lm_eval \
--model vllm \
--model_args pretrained="RedHatAI/Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic",dtype=auto,gpu_memory_utilization=0.5,max_model_len=8192,enable_chunk_prefill=True,tensor_parallel_size=2 \
--tasks hellaswag \
--num_fewshot 10 \
--apply_chat_template\
--fewshot_as_multiturn \
--batch_size auto
Winogrande
lm_eval \
--model vllm \
--model_args pretrained="RedHatAI/Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic",dtype=auto,gpu_memory_utilization=0.5,max_model_len=8192,enable_chunk_prefill=True,tensor_parallel_size=2 \
--tasks winogrande \
--num_fewshot 5 \
--apply_chat_template\
--fewshot_as_multiturn \
--batch_size auto
TruthfulQA
lm_eval \
--model vllm \
--model_args pretrained="RedHatAI/Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic",dtype=auto,gpu_memory_utilization=0.5,max_model_len=8192,enable_chunk_prefill=True,tensor_parallel_size=2 \
--tasks truthfulqa \
--num_fewshot 0 \
--apply_chat_template\
--batch_size auto
MMLU-pro
lm_eval \
--model vllm \
--model_args pretrained="RedHatAI/Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic",dtype=auto,gpu_memory_utilization=0.5,max_model_len=8192,enable_chunk_prefill=True,tensor_parallel_size=2 \
--tasks mmlu_pro \
--num_fewshot 5 \
--apply_chat_template\
--fewshot_as_multiturn \
--batch_size auto
コーディング
以下のコマンドは、データセット名をmbppに置き換えることでmbppにも使用できます。
生成
python3 codegen/generate.py \
--model RedHatAI/Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic \
--bs 16 \
--temperature 0.2 \
--n_samples 50 \
--root "." \
--dataset humaneval
サニタイズ
python3 evalplus/sanitize.py \
humaneval/RedHatAI--Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic_vllm_temp_0.2
評価
evalplus.evaluate \
--dataset humaneval \
--samples humaneval/RedHatAI--Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic_vllm_temp_0.2-sanitized
精度
カテゴリ
|
ベンチマーク
|
Mistral-Small-3.1-24B-Instruct-2503
|
Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic (このモデル)
|
回復率
|
OpenLLM v1
|
MMLU (5-shot)
|
80.67
|
80.71
|
100.1%
|
ARC Challenge (25-shot)
|
72.78
|
72.87
|
100.1%
|
GSM-8K (5-shot, strict-match)
|
58.68
|
49.96
|
85.1%
|
Hellaswag (10-shot)
|
83.70
|
83.67
|
100.0%
|
Winogrande (5-shot)
|
83.74
|
82.56
|
98.6%
|
TruthfulQA (0-shot, mc2)
|
70.62
|
70.88
|
100.4%
|
平均
|
75.03
|
73.49
|
97.9%
|
|
MMLU-Pro (5-shot)
|
67.25
|
66.86
|
99.4%
|
GPQA CoT main (5-shot)
|
42.63
|
41.07
|
99.4%
|
GPQA CoT diamond (5-shot)
|
45.96
|
45.45
|
98.9%
|
コーディング
|
HumanEval pass@1
|
84.70
|
84.70
|
100.0%
|
HumanEval+ pass@1
|
79.50
|
79.30
|
99.8%
|
MBPP pass@1
|
71.10
|
70.00
|
98.5%
|
MBPP+ pass@1
|
60.60
|
59.50
|
98.2%
|