模型概述
模型特點
模型能力
使用案例
🚀 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": "圖中描繪的國家中,哪個國家的美食最好?第二、第三和第四好的分別是哪個?請說出國家名稱、它在地圖上的顏色以及地圖上可見但不是首都的一個城市。請確保只說出地圖上能看到的城市。",
},
{"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-24-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許可證。








