模型简介
模型特点
模型能力
使用案例
语言:
- 英语
- 法语
- 德语
- 西班牙语
- 意大利语
- 葡萄牙语
- 中文
- 日语
- 俄语
- 韩语
许可证: Apache-2.0
库名称: vllm
推理: 不支持
基础模型:
- mistralai/Mistral-Small-24B-Base-2501
额外授权说明: 如果您想了解更多关于我们如何处理您的个人数据的信息,请阅读我们的隐私政策。
标签:
- transformers
Mistral-Small-24B-Instruct-2501 模型卡
Mistral Small 3 (2501) 在70B以下的“小型”大语言模型类别中树立了新标杆,拥有240亿参数,并实现了与更大模型相媲美的先进能力!
该模型是基础模型的指令微调版本:Mistral-Small-24B-Base-2501。
Mistral Small 可以在本地部署,并且具有极高的“知识密度”,量化后可以轻松适配单张RTX 4090或32GB内存的MacBook。
非常适合以下场景:
- 快速响应的对话代理。
- 低延迟的函数调用。
- 通过微调成为特定领域的专家。
- 处理敏感数据的个人爱好者和组织的本地推理。
对于需要特殊能力(如更大的上下文、特定模态、领域专业知识等)的企业,我们将发布超出Mistral AI社区贡献的商业模型。
此次发布展示了我们对开源的承诺,作为一个强大的基础模型。
了解更多关于Mistral Small的信息,请阅读我们的博客文章。
模型开发者: Mistral AI团队
主要特点
- 多语言支持: 支持数十种语言,包括英语、法语、德语、西班牙语、意大利语、中文、日语、韩语、葡萄牙语、荷兰语和波兰语。
- 以代理为中心: 提供一流的代理能力,支持原生函数调用和JSON输出。
- 高级推理: 具备先进的对话和推理能力。
- Apache 2.0许可证: 开放许可证,允许商业和非商业用途的修改和使用。
- 上下文窗口: 32k的上下文窗口。
- 系统提示: 对系统提示有很强的遵循和支持。
- 分词器: 使用Tekken分词器,词汇量为131k。
基准测试结果
人工评估基准
类别 | 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][INST]<用户消息>[/INST]<助手响应></s>[INST]<用户消息>[/INST]
<系统提示>
、<用户消息>
和<助手响应>
为占位符。
请确保使用mistral-common作为参考标准
使用方法
该模型可与以下框架配合使用:
vllm
: 参见此处transformers
: 参见此处
vLLM
我们推荐使用vLLM库实现生产级推理流程。
注意1: 建议使用相对较低的温度值,如temperature=0.15
。
注意2: 确保为模型添加系统提示,以更好地满足您的需求。如果您希望将模型用作通用助手,我们推荐以下系统提示:
system_prompt = """您是Mistral Small 3,由法国巴黎初创公司Mistral AI开发的大语言模型(LLM)。
您的知识库最后更新于2023-10-01。当前日期为2025-01-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
注意: 在GPU上运行Mistral-Small-24B-Instruct-2501需要约55GB的GPU内存(bf16或fp16)。
- 您可以使用简单的Python代码片段与客户端通信。
import requests
import json
from datetime import datetime, timedelta
url = "http://<您的服务器>: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"])
# 当然,以下是五种非正式的法语表达“稍后见”的方式:
#
# 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://<您的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": "要查询天气的城市,例如“旧金山”",
},
"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是一个人工智能研究实验室,由非营利组织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}
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内存
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)
# 当然,以下是五种非正式的法语表达“稍后见”的方式:
#
# 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


