モデル概要
モデル特徴
モデル能力
使用事例
🚀 Mistral-Small-24B-Instruct-2501
Mistral Small 3 ( 2501 ) は、70B未満の「小型」大規模言語モデルのカテゴリで新たなベンチマークを設定しました。240億のパラメータを持ち、より大きなモデルに匹敵する最先端の機能を備えています!
このモデルは、ベースモデル Mistral-Small-24B-Base-2501 を命令に基づいて微調整したバージョンです。
Mistral Small はローカルでデプロイ可能で、非常に「知識密度が高く」、量子化すると、単一のRTX 4090または32GB RAMのMacBookに収まります。
以下の用途に最適です:
- 高速応答の会話エージェント。
- 低レイテンシの関数呼び出し。
- 微調整による専門家。
- 嗜好家や機密データを扱う組織のためのローカル推論。
特殊な機能(拡張されたコンテキスト、特定のモダリティ、ドメイン固有の知識など)を必要とする企業向けに、Mistral AIがコミュニティに提供するものを超えた商用モデルをリリース予定です。
このリリースは、私たちのオープンソースへのコミットメントを示し、強力なベースモデルとして機能します。
ブログ記事 でMistral Smallについてもっと詳しく学ぶことができます。
モデル開発者: Mistral AIチーム
✨ 主な機能
- 多言語対応:英語、フランス語、ドイツ語、スペイン語、イタリア語、中国語、日本語、韓国語、ポルトガル語、オランダ語、ポーランド語など、数十の言語をサポートします。
- エージェント中心:ネイティブの関数呼び出しとJSON出力を備えた最高水準のエージェント機能を提供します。
- 高度な推論能力:最先端の会話と推論能力を備えています。
- Apache 2.0ライセンス:商用および非商用目的での使用と変更を許可するオープンなライセンスです。
- コンテキストウィンドウ:32kのコンテキストウィンドウを持っています。
- システムプロンプト:システムプロンプトに対する強力な遵守とサポートを維持します。
- トークナイザー:語彙サイズが131kのTekkenトークナイザーを使用しています。
📚 詳細ドキュメント
ベンチマーク結果
人間による評価ベンチマーク
カテゴリ | Gemma-2-27B | Qwen-2.5-32B | Llama-3.3-70B | Gpt4o-mini |
---|---|---|---|---|
Mistralが優れている | 0.536 | 0.496 | 0.192 | 0.200 |
Mistralがやや優れている | 0.196 | 0.184 | 0.164 | 0.204 |
引き分け | 0.052 | 0.060 | 0.236 | 0.160 |
他のモデルがやや優れている | 0.060 | 0.088 | 0.112 | 0.124 |
他のモデルが優れている | 0.156 | 0.172 | 0.296 | 0.312 |
注意:
- 外部の第三者ベンダーと協力して、1000以上の独自のコーディングおよび一般的なプロンプトのセットで並行評価を行いました。
- 評価者は、Mistral Small 3と他のモデルによって生成された匿名化された応答の中から、好ましいモデルの応答を選択するように依頼されました。
- 人間の判断に基づくベンチマークは、公開されているベンチマークと大きく異なる場合があることを承知していますが、公正な評価を検証するために特別な注意を払っています。上記のベンチマークは有効であると確信しています。
公開されているベンチマーク
推論と知識
評価 | mistral-small-24B-instruct-2501 | gemma-2b-27b | llama-3.3-70b | qwen2.5-32b | gpt-4o-mini-2024-07-18 |
---|---|---|---|---|---|
mmlu_pro_5shot_cot_instruct | 0.663 | 0.536 | 0.666 | 0.683 | 0.617 |
gpqa_main_cot_5shot_instruct | 0.453 | 0.344 | 0.531 | 0.404 | 0.377 |
数学とコーディング
評価 | mistral-small-24B-instruct-2501 | gemma-2b-27b | llama-3.3-70b | qwen2.5-32b | gpt-4o-mini-2024-07-18 |
---|---|---|---|---|---|
humaneval_instruct_pass@1 | 0.848 | 0.732 | 0.854 | 0.909 | 0.890 |
math_instruct | 0.706 | 0.535 | 0.743 | 0.819 | 0.761 |
命令の遵守
評価 | mistral-small-24B-instruct-2501 | gemma-2b-27b | llama-3.3-70b | qwen2.5-32b | gpt-4o-mini-2024-07-18 |
---|---|---|---|---|---|
mtbench_dev | 8.35 | 7.86 | 7.96 | 8.26 | 8.33 |
wildbench | 52.27 | 48.21 | 50.04 | 52.73 | 56.13 |
arena_hard | 0.873 | 0.788 | 0.840 | 0.860 | 0.897 |
ifeval | 0.829 | 0.8065 | 0.8835 | 0.8401 | 0.8499 |
注意:
- すべてのベンチマークにおける性能精度は、同じ内部評価パイプラインを通じて取得されたものです。以前に報告された性能(Qwen2.5-32B-Instruct、Llama-3.3-70B-Instruct、Gemma-2-27B-IT)と若干異なる場合があります。
- Wildbench、Arena hard、MTBenchなどの判断ベースの評価は、gpt-4o-2024-05-13に基づいています。
基本的な命令テンプレート (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 を正確な情報源として使用してください
💻 使用例
このモデルは、以下のフレームワークで使用できます。
vllm
: こちら を参照transformers
: こちら を参照
vLLM
このモデルを本番環境で使用する推論パイプラインを実装する場合は、vLLMライブラリ の使用をおすすめします。
注意1: 比較的低い温度(例:temperature=0.15
)を使用することをおすすめします。
注意2: モデルを最適に使用するには、システムプロンプトを追加することを確認してください。モデルを一般的なアシスタントとして使用する場合は、以下のシステムプロンプトをおすすめします。
system_prompt = """あなたはMistral Small 3で、パリに本社を置くフランスのスタートアップであるMistral AIによって作成された大規模言語モデル(LLM)です。
あなたの知識ベースは2023年10月1日に最後に更新されました。現在の日付は2025年1月30日です。
何らかの情報がわからない場合は、その情報を持っていないことを伝え、勝手に情報を作り出さないでください。
ユーザーの質問が不明確、曖昧、または質問に正確に答えるのに十分なコンテキストが提供されていない場合は、すぐに答えようとせず、ユーザーに質問を明確にするように依頼してください(例:「近くの良いレストランを教えてください」 => 「あなたはどこにいますか?」または「東京への次の便はいつですか」 => 「あなたはどこから旅行しますか?」)"""
インストール
vLLM >= 0.6.4
をインストールしてください。
pip install --upgrade vllm
また、mistral_common >= 1.5.2
もインストールしてください。
pip install --upgrade mistral_common
準備ができた Dockerイメージ または Docker Hub を使用することもできます。
サーバー
Mistral-Small-24B-Instruct-2501をサーバー/クライアント環境で使用することをおすすめします。
- サーバーを起動します。
vllm serve mistralai/Mistral-Small-24B-Instruct-2501 --tokenizer_mode mistral --config_format mistral --load_format mistral --tool-call-parser mistral --enable-auto-tool-choice
注意: Mistral-Small-24B-Instruct-2501をGPUで実行するには、bf16またはfp16で約55GBのGPU RAMが必要です。
- クライアントをテストするには、簡単なPythonスニペットを使用できます。
import requests
import json
from datetime import datetime, timedelta
url = "http://<your-server>:8000/v1/chat/completions"
headers = {"Content-Type": "application/json", "Authorization": "Bearer token"}
model = "mistralai/Mistral-Small-24B-Instruct-2501"
messages = [
{
"role": "system",
"content": "あなたは常に要点を直截了当地に答える会話エージェントで、正確な応答の最後に常に猫のASCIIアートを付けてください。"
},
{
"role": "user",
"content": "フランス語で「また会おう」を非公式に言う5つの方法を教えてください。"
},
]
data = {"model": model, "messages": messages}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json()["choices"][0]["message"]["content"])
# Sure, here are five non-formal ways to say "See you later" in French:
#
# 1. À plus tard
# 2. À plus
# 3. Salut
# 4. À toute
# 5. Bisous
#
# ```
# /\_/\
# ( o.o )
# > ^ <
# ```
関数呼び出し
Mistral-Small-24-Instruct-2501は、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-24B-Instruct-2501"
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": "天気を調べる都市名(例:'San Francisco')",
},
"state": {
"type": "string",
"description": "州の略称(例:'CA' はカリフォルニア州)",
},
"unit": {
"type": "string",
"description": "温度の単位",
"enum": ["celsius", "fahrenheit"],
},
},
"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 is an artificial intelligence research laboratory consisting of the non-profit OpenAI Incorporated and its for-profit subsidiary corporation OpenAI Limited Partnership."}',
},
}
],
},
{
"role": "tool",
"content": '{"action":"rewrite","outcome":"OpenAI is a FOR-profit company."}',
"tool_call_id": "bbc5b7ede",
"name": "rewrite",
},
{
"role": "assistant",
"content": "---\n\nOpenAI is a FOR-profit company.",
},
{
"role": "user",
"content": "ダラスの華氏温度を教えてくれますか?",
},
]
data = {"model": model, "messages": messages, "tools": tools}
response = requests.post(url, headers=headers, data=json.dumps(data))
import ipdb; ipdb.set_trace()
print(response.json()["choices"][0]["message"]["tool_calls"])
# [{'id': '8PdihwL6d', 'type': 'function', 'function': {'name': 'get_current_weather', 'arguments': '{"city": "Dallas", "state": "TX", "unit": "fahrenheit"}'}}]
オフライン
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
},
]
# このモデルをGPUで実行するには、60GB以上のGPU RAMが必要です
llm = LLM(model=model_name, tokenizer_mode="mistral", tensor_parallel_size=8)
sampling_params = SamplingParams(max_tokens=512, temperature=0.15)
outputs = llm.chat(messages, sampling_params=sampling_params)
print(outputs[0].outputs[0].text)
# Sure, here are five non-formal ways to say "See you later" in French:
#
# 1. À plus tard
# 2. À plus
# 3. Salut
# 4. À toute
# 5. Bisous
#
# ```
# /\_/\
# ( o.o )
# > ^ <
# ```
Transformers
Hugging Faceのtransformersを使用してテキストを生成する場合は、次のようなことができます。
from transformers import pipeline
import torch
messages = [
{"role": "user", "content": "フランス語で「また会おう」を非公式に言う5つの方法を教えてください。"},
]
chatbot = pipeline("text-generation", model="mistralai/Mistral-Small-24B-Instruct-2501", max_new_tokens=256, torch_dtype=torch.bfloat16)
chatbot(messages)
Ollama
Ollama を使用すると、このモデルをMacOS、Windows、Linuxでローカルで実行できます。
ollama run mistral-small
4ビット量子化(デフォルトのエイリアス):
ollama run mistral-small:24b-instruct-2501-q4_K_M
8ビット量子化:
ollama run mistral-small:24b-instruct-2501-q8_0
FP16:
ollama run mistral-small:24b-instruct-2501-fp16
📄 ライセンス
このモデルはApache 2.0ライセンスの下で提供されています。商用および非商用目的での使用と変更が許可されています。
⚠️ 重要提示
個人情報の処理方法について詳しく知りたい場合は、プライバシーポリシー をご覧ください。



