モデル概要
モデル特徴
モデル能力
使用事例
🚀 Mistral-Small-3.1-24B-Instruct-2503モデルカード
Mistral-Small-3.1-24B-Instruct-2503モデルは、Mistral Small 3(2501)をベースに構築されています。Mistral Small 3.1(2503)は、高度な視覚理解能力を追加し、テキスト性能に影響を与えることなく、コンテキストの長文処理能力を128kトークンまで向上させています。このモデルは240億個のパラメータを持ち、テキストと視覚タスクの両方でトップクラスの能力を備えています。このモデルはMistral-Small-3.1-24B-Base-2503の命令微調整版です。
Mistral Small 3.1はローカルでデプロイでき、非常に高い「知識密度」を持ち、量子化後は単一のRTX 4090または32GBメモリのMacBookで実行できます。
以下のシナリオに適しています:
- 迅速な応答を必要とする対話型エージェント。
- 低遅延の関数呼び出し。
- 特定の分野の専門家向けに微調整する。
- 愛好家や機密データを扱う組織によるローカル推論。
- プログラミングと数学的推論。
- 長文書の理解。
- 視覚理解。
特殊機能(コンテキスト長の増加、特定のモダリティ、特定の分野の知識など)を必要とする企業には、Mistral AIコミュニティの貢献範囲を超えた商用モデルをリリースします。
ブログ記事でMistral Small 3.1についてもっと詳しく知ることができます。
✨ 主な機能
- 視覚能力:モデルは視覚能力を備えており、テキスト処理に加えて、画像を分析し、視覚コンテンツに基づいて洞察を提供することができます。
- 多言語対応:英語、フランス語、ドイツ語、ギリシャ語、ヒンディー語、インドネシア語、イタリア語、日本語、韓国語、マレー語、ネパール語、ポーランド語、ポルトガル語、ルーマニア語、ロシア語、セルビア語、スペイン語、スウェーデン語、トルコ語、ウクライナ語、ベトナム語、アラビア語、ベンガル語、中国語、ペルシャ語など数十種類の言語をサポートしています。
- エージェント中心:一流のエージェント能力を備え、ネイティブ関数呼び出しとJSON出力をサポートしています。
- 高度な推論能力:高度な対話と推論能力を持っています。
- Apache 2.0ライセンス:オープンライセンスで、商用および非商用の使用と修正が許可されています。
- コンテキストウィンドウ:128kのコンテキストウィンドウを持っています。
- システムプロンプト:システムプロンプトに対する強力な従順性とサポート能力を備えています。
- トークナイザー:Tekkenトークナイザーを使用し、語彙数は13.1万です。
🔍 ベンチマークテスト結果
利用可能なデータがある場合は、他のモデルプロバイダーが以前に公開した数値を報告します。そうでない場合は、独自の評価ツールを使用して再評価します。
事前学習評価
モデル | MMLU (5-shot) | MMLU Pro (5-shot CoT) | TriviaQA | GPQA Main (5-shot CoT) | MMMU |
---|---|---|---|---|---|
Small 3.1 24B Base | 81.01% | 56.03% | 80.50% | 37.50% | 59.27% |
Gemma 3 27B PT | 78.60% | 52.20% | 81.30% | 24.30% | 56.10% |
命令評価
テキスト評価
モデル | MMLU | MMLU Pro (5-shot CoT) | MATH | GPQA Main (5-shot CoT) | GPQA Diamond (5-shot CoT ) | MBPP | HumanEval | SimpleQA (TotalAcc) |
---|---|---|---|---|---|---|---|---|
Small 3.1 24B Instruct | 80.62% | 66.76% | 69.30% | 44.42% | 45.96% | 74.71% | 88.41% | 10.43% |
Gemma 3 27B IT | 76.90% | 67.50% | 89.00% | 36.83% | 42.40% | 74.40% | 87.80% | 10.00% |
GPT4o Mini | 82.00% | 61.70% | 70.20% | 40.20% | 39.39% | 84.82% | 87.20% | 9.50% |
Claude 3.5 Haiku | 77.60% | 65.00% | 69.20% | 37.05% | 41.60% | 85.60% | 88.10% | 8.02% |
Cohere Aya-Vision 32B | 72.14% | 47.16% | 41.98% | 34.38% | 33.84% | 70.43% | 62.20% | 7.65% |
視覚評価
モデル | MMMU | MMMU PRO | Mathvista | ChartQA | DocVQA | AI2D | MM MT Bench |
---|---|---|---|---|---|---|---|
Small 3.1 24B Instruct | 64.00% | 49.25% | 68.91% | 86.24% | 94.08% | 93.72% | 7.3 |
Gemma 3 27B IT | 64.90% | 48.38% | 67.60% | 76.00% | 86.60% | 84.50% | 7 |
GPT4o Mini | 59.40% | 37.60% | 56.70% | 76.80% | 86.70% | 88.10% | 6.6 |
Claude 3.5 Haiku | 60.50% | 45.03% | 61.60% | 87.20% | 90.00% | 92.10% | 6.5 |
Cohere Aya-Vision 32B | 48.20% | 31.50% | 50.10% | 63.04% | 72.40% | 82.57% | 4.1 |
多言語評価
モデル | 平均スコア | ヨーロッパ言語スコア | 東アジア言語スコア | 中東言語スコア |
---|---|---|---|---|
Small 3.1 24B Instruct | 71.18% | 75.30% | 69.17% | 69.08% |
Gemma 3 27B IT | 70.19% | 74.14% | 65.65% | 70.76% |
GPT4o Mini | 70.36% | 74.21% | 65.96% | 70.90% |
Claude 3.5 Haiku | 70.16% | 73.45% | 67.05% | 70.00% |
Cohere Aya-Vision 32B | 62.15% | 64.70% | 57.61% | 64.12% |
長文コンテキスト評価
モデル | LongBench v2 | RULER 32K | RULER 128K |
---|---|---|---|
Small 3.1 24B Instruct | 37.18% | 93.96% | 81.20% |
Gemma 3 27B IT | 34.59% | 91.10% | 66.00% |
GPT4o Mini | 29.30% | 90.20% | 65.8% |
Claude 3.5 Haiku | 35.19% | 92.60% | 91.90% |
💻 基本命令テンプレート(V7-Tekken)
<s>[SYSTEM_PROMPT]<system prompt>[/SYSTEM_PROMPT][INST]<user message>[/INST]<assistant response></s>[INST]<user message>[/INST]
<system_prompt>
、<user message>
、<assistant response>
はプレースホルダーです。
⚠️ 重要な注意事項
mistral-common を参照標準として使用することを確認してください。
📦 インストールガイドと💻 使用例
インストールと使用フレームワーク
このモデルは以下のフレームワークと一緒に使用できます:
⚠️ 重要な注意事項
比較的低い温度(例:
temperature=0.15
)を使用することをお勧めします。
💡 使用上のヒント
モデルにシステムプロンプトを追加して、あなたのニーズにより適合させることを確認してください。モデルを汎用アシスタントとして使用する場合は、以下のシステムプロンプトを使用することをお勧めします。
system_prompt = """あなたはMistral Small 3.1で、パリに本社を置くフランスのスタートアップ企業であるMistral AIによって作成された大規模言語モデル(LLM)です。
あなたはLe ChatというAIアシスタントをサポートしています。
あなたの知識ベースは2023年10月1日に最後に更新されました。
現在の日付は{today}です。
あなたが特定の情報を確信できない場合は、その情報がないことを表明し、内容を捏造しないでください。
ユーザーの質問が不明確、曖昧、または質問に正確に答えるのに十分なコンテキストが提供されていない場合は、すぐに答えようとせず、ユーザーに彼らの要求を明確にするように依頼してください(例:「私の周りに良いレストランはありますか?」 => 「あなたはどこにいますか?」 または 「次の東京行きの便はいつですか?」 => 「あなたはどこから出発しますか?」)。
あなたは常に日付に非常に注意を払い、特に日付を解析しようとし(例:「昨日」 は {yesterday})、特定の日付の情報を求められた場合、他の日付の情報を除外する必要があります。
あなたはすべての言語でこれらの指示に従い、常にユーザーが使用または要求した言語で返信する必要があります。
次の部分はあなたが備えている能力を説明しています。
# ウェブ閲覧に関する説明
あなたはウェブ検索やインターネットを介したURL、リンクなどのアクセスを行うことはできません。ユーザーがそのようなことを期待しているような場合は、状況を説明し、ユーザーにテキストを直接チャットにコピー&ペーストするように依頼してください。
# マルチモーダルに関する説明
あなたは画像を読み取る能力がありますが、画像を生成することはできません。また、オーディオファイルやビデオを文字起こしすることもできません。
あなたはオーディオファイルやビデオを読み取ったり文字起こししたりすることはできません。"""
vLLM(推奨)
vLLMライブラリ を使用して、本番環境で使用可能な推論パイプラインを実装することをお勧めします。
インストール手順
vLLM >= 0.8.1
のインストールを確認してください:
pip install vllm --upgrade
これにより、自動的に mistral_common >= 1.5.4
がインストールされるはずです。
確認するには:
python -c "import mistral_common; print(mistral_common.__version__)"
また、既成の dockerイメージ または Docker Hub のイメージを使用することもできます。
サーバーデプロイと使用例
Mistral-Small-3.1-24B-Instruct-2503をサーバー/クライアント環境で使用することをお勧めします。
- サーバーを起動します:
vllm serve mistralai/Mistral-Small-3.1-24B-Instruct-2503 --tokenizer_mode mistral --config_format mistral --load_format mistral --tool-call-parser mistral --enable-auto-tool-choice --limit_mm_per_prompt 'image=10' --tensor-parallel-size 2
⚠️ 重要な注意事項
GPU上でMistral-Small-3.1-24B-Instruct-2503を実行するには、約55GBのGPUメモリ(bf16またはfp16)が必要です。
- 以下の簡単なPythonコードスニペットを使用してクライアントをテストできます:
import requests
import json
from huggingface_hub import hf_hub_download
from datetime import datetime, timedelta
url = "http://<your-server-url>:8000/v1/chat/completions"
headers = {"Content-Type": "application/json", "Authorization": "Bearer token"}
model = "mistralai/Mistral-Small-3.1-24B-Instruct-2503"
def load_system_prompt(repo_id: str, filename: str) -> str:
file_path = hf_hub_download(repo_id=repo_id, filename=filename)
with open(file_path, "r") as file:
system_prompt = file.read()
today = datetime.today().strftime("%Y-%m-%d")
yesterday = (datetime.today() - timedelta(days=1)).strftime("%Y-%m-%d")
model_name = repo_id.split("/")[-1]
return system_prompt.format(name=model_name, today=today, yesterday=yesterday)
SYSTEM_PROMPT = load_system_prompt(model, "SYSTEM_PROMPT.txt")
image_url = "https://huggingface.co/datasets/patrickvonplaten/random_img/resolve/main/europe.png"
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{
"role": "user",
"content": [
{
"type": "text",
"text": "図に描かれている国の中で、最も美食が美味しいのはどの国ですか?2番目、3番目、4番目に美味しい国はそれぞれどれですか?国名、地図上の色、および地図上に表示されているが首都ではない都市の1つを挙げてください。地図上に見える都市のみを挙げるようにしてください。",
},
{"type": "image_url", "image_url": {"url": image_url}},
],
},
]
data = {"model": model, "messages": messages, "temperature": 0.15}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json()["choices"][0]["message"]["content"])
# 「最も美味しい」美食を決定することは非常に主観的で、個人の好みによって異なります。しかし、一般的な人気と評判に基づくと、以下は美食で知られるいくつかの国です:
# 1. **イタリア** - 色:薄緑色 - 都市:ミラノ
# - イタリア料理は、パスタ、ピザ、および様々な郷土料理で世界的に知られています。
# 2. **フランス** - 色:茶色 - 都市:リヨン
# - フランス料理は、その洗練された料理で知られており、ブーフ・ブルギニョン、ボディバン、クロワッサンやエクレアなどのパティスリーが含まれます。
# 3. **スペイン** - 色:黄色 - 都市:ビルバオ
# - スペイン料理は、パエリアやタペスからイベリアハムやチュロスまで、様々な味を提供します。
# 4. **ギリシャ** - 地図上に表示されていません
# - ギリシャ料理は、ムサカ、ケバプ、バクラバなどの料理で知られています。残念ながら、ギリシャは提供された地図上に表示されていないため、都市名を挙げることができません。
# ギリシャが地図上に表示されていないため、別の美食で知られる国を代わりに挙げます:
# 4. **トルコ** - 色:薄緑色(地図の東部) - 都市:イスタンブール
# - トルコ料理は多様で、ケバプ、メゼ、バクラバなどの料理が含まれます。
関数呼び出し例
Mistral-Small-3.1-24B-Instruct-2503は、vLLMを介した関数/ツール呼び出しタスクで優れた性能を発揮します。例えば:
コード例
import requests
import json
from huggingface_hub import hf_hub_download
from datetime import datetime, timedelta
url = "http://<your-url>:8000/v1/chat/completions"
headers = {"Content-Type": "application/json", "Authorization": "Bearer token"}
model = "mistralai/Mistral-Small-3.1-24B-Instruct-2503"
def load_system_prompt(repo_id: str, filename: str) -> str:
file_path = hf_hub_download(repo_id=repo_id, filename=filename)
with open(file_path, "r") as file:
system_prompt = file.read()
today = datetime.today().strftime("%Y-%m-%d")
yesterday = (datetime.today() - timedelta(days=1)).strftime("%Y-%m-%d")
model_name = repo_id.split("/")[-1]
return system_prompt.format(name=model_name, today=today, yesterday=yesterday)
SYSTEM_PROMPT = load_system_prompt(model, "SYSTEM_PROMPT.txt")
tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "指定された場所の現在の天気を取得する",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "天気を調べる都市名、例:'サンフランシスコ'",
},
"state": {
"type": "string",
"description": "州の略称、例:カリフォルニア州の場合は 'CA'",
},
"unit": {
"type": "string",
"description": "温度の単位",
"enum": ["摂氏", "華氏"],
},
},
"required": ["city", "state", "unit"],
},
},
},
{
"type": "function",
"function": {
"name": "rewrite",
"description": "与えられたテキストを書き直して明瞭さを向上させる",
"parameters": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "書き直す入力テキスト",
}
},
},
},
},
]
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{
"role": "user",
"content": "次の文章をもっと簡潔に書き直してくれますか?\n\nOpenAIは、非営利組織であるOpenAI Incorporatedとその営利子会社であるOpenAI Limited Partnershipによって構成される人工知能研究ラボです。",
},
{
"role": "assistant",
"content": "",
"tool_calls": [
{
"id": "bbc5b7ede",
"type": "function",
"function": {
"name": "rewrite",
"arguments": '{"text": "OpenAIは、非営利組織であるOpenAI Incorporatedとその営利子会社であるOpenAI Limited Partnershipによって構成される人工知能研究ラボです。"}',
},
}
],
},
{
"role": "tool",
"content": '{"action":"rewrite","outcome":"OpenAIは営利企業です。"}',
"tool_call_id": "bbc5b7ede",
"name": "rewrite",
},
{
"role": "assistant",
"content": "---\n\nOpenAIは営利企業です。",
},
{
"role": "user",
"content": "ダラスの華氏温度を教えてくれますか?",
},
]
data = {"model": model, "messages": messages, "tools": tools, "temperature": 0.15}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json()["choices"][0]["message"]["tool_calls"])
# [{'id': '8PdihwL6d', 'type': 'function', 'function': {'name': 'get_current_weather', 'arguments': '{"city": "ダラス", "state": "TX", "unit": "華氏"}'}}]
オフライン使用例
from vllm import LLM
from vllm.sampling_params import SamplingParams
from datetime import datetime, timedelta
SYSTEM_PROMPT = "あなたは対話型エージェントで、いつもはっきりと答え、正確に答えた後はいつも猫のASCIIアートで終わります。"
user_prompt = "フランス語で 'さようなら' の非公式な表現を5つ教えてください。"
messages = [
{
"role": "system",
"content": SYSTEM_PROMPT
},
{
"role": "user",
"content": user_prompt
},
]
model_name = "mistralai/Mistral-Small-3.1-24B-Instruct-2503"
# 注意:このモデルをGPU上で実行するには、60GBを超えるGPUメモリが必要です
llm = LLM(model=model_name, tokenizer_mode="mistral")
sampling_params = SamplingParams(max_tokens=512, temperature=0.15)
outputs = llm.chat(messages, sampling_params=sampling_params)
print(outputs[0].outputs[0].text)
# フランス語で 'さようなら' の非公式な表現は以下の5つです:
# 1. **À plus tard** - また会おう
# 2. **À toute** - また会おう(非公式)
# 3. **Salut** - さようなら(こんにちはの意味もあります)
# 4. **À plus** - また会おう(非公式)
# 5. **Ciao** - さようなら(非公式、イタリア語からの借用語)
# ```
# /\_/\
# ( o.o )
# > ^ <
# ```
Transformers(十分にテストされていません)
Transformersと互換性のあるモデルウェイトもアップロードされています(@cyrilvallezに感謝します)。ただし、Transformersの実装は十分にテストされておらず、「初期チェック」のみが行われています。したがって、元のウェイト形式とvllmを使用する場合(上記を参照)にのみ、モデルの動作が100%正しいことを保証できます。
📄 ライセンス
このプロジェクトはApache 2.0ライセンスの下で提供されています。








