mistral-inference
mistral-inference 是 Mistral AI 官方推出的轻量级推理库,旨在帮助开发者高效运行各类 Mistral 系列大语言模型。它解决了在本地环境中部署和调用高性能开源模型时常见的配置复杂、依赖繁琐等痛点,提供了一套极简的代码实现,让用户能快速上手体验从 7B 到 8x22B 等不同规模的模型,包括专为代码生成的 Codestral 和擅长数学推理的 Mathstral 等垂直领域模型。
这款工具主要面向具备一定技术背景的开发者与研究人员,特别是那些希望在本地 GPU 环境中进行模型测试、原型开发或深度集成的用户。通过简单的 pip 安装或源码克隆,配合必要的 GPU 环境(需安装 xformers),即可轻松加载官方提供的多种模型权重。其核心亮点在于“最小化代码”设计理念,去除了冗余封装,直接暴露底层推理逻辑,既保证了运行效率,也方便用户根据需求进行定制化修改。此外,它还支持包括混合专家架构(MoE)在内的多种先进模型结构,为探索前沿大模型技术提供了灵活可靠的基础设施。无论是想快速验证算法思路的研究者,还是构建本地化 AI 应用的工程师,mistral-inference 都是一个值得尝试的实用选择。
使用场景
某初创公司的后端工程师需要在本地 GPU 服务器上快速部署 Mistral 7B 模型,以构建一个低延迟的内部代码审查助手。
没有 mistral-inference 时
- 环境配置繁琐:手动安装
xformers等底层依赖极易因 CUDA 版本不匹配而失败,耗费数小时排查兼容性问题。 - 推理代码冗余:需自行编写复杂的 Tokenizer 加载、注意力掩码生成及采样逻辑,导致核心业务代码被大量样板代码淹没。
- 模型加载缓慢:缺乏优化的权重读取机制,大模型启动时间长,难以满足开发过程中频繁重启测试的需求。
- 多模型切换困难:尝试切换至 Mixtral 或 Codestral 等不同架构模型时,需大幅重构推理管线,维护成本极高。
使用 mistral-inference 后
- 一键就绪环境:通过
pip install mistral-inference即可自动解决包括xformers在内的所有 GPU 依赖,几分钟内完成环境搭建。 - 极简推理接口:仅需几行代码即可加载官方提供的 7B 或 Codestral 模型权重,内置高效的生成循环,让工程师专注业务逻辑。
- 极速冷启动:利用库内优化的权重加载策略,显著缩短模型初始化时间,实现代码审查服务的秒级响应与迭代。
- 统一架构支持:同一套调用接口无缝兼容从 Mistral 7B 到 Mixtral 8x22B 等多种模型,轻松对比不同模型在代码场景的表现。
mistral-inference 通过提供官方优化的最小化推理路径,将开发者从繁琐的底层适配中解放出来,实现了高性能大模型在本地环境的即插即用。
运行环境要求
- 未说明
- 必需
- 安装过程需要 GPU(因为依赖 xformers)
- 运行大型模型(如 8x7B, 8x22B)需要多 GPU 设置
- 较小模型(如 12B)可在单 GPU 上运行
- 具体显存大小和 CUDA 版本未在文中明确列出
未说明

快速开始
Mistral 推理
此仓库包含运行 Mistral 模型所需的最简代码。
7B 博客:https://mistral.ai/news/announcing-mistral-7b/
8x7B 博客:https://mistral.ai/news/mixtral-of-experts/
8x22B 博客:https://mistral.ai/news/mixtral-8x22b/
Codestral 22B 博客:https://mistral.ai/news/codestral
Codestral Mamba 7B 博客:https://mistral.ai/news/codestral-mamba/
Mathstral 7B 博客:https://mistral.ai/news/mathstral/
Nemo 博客:https://mistral.ai/news/mistral-nemo/
Mistral Large 2 博客:https://mistral.ai/news/mistral-large-2407/
Pixtral 12B 博客:https://mistral.ai/news/pixtral-12b/
Mistral Small 3.1 博客:https://mistral.ai/news/mistral-small-3-1/
Discord:https://discord.com/invite/mistralai
文档:https://docs.mistral.ai/
护栏机制:https://docs.mistral.ai/usage/guardrailing
安装
注意:您需要使用 GPU 来安装 mistral-inference,因为目前它要求安装 xformers,而 xformers 本身也需要 GPU 才能完成安装。
PyPI
pip install mistral-inference
本地
cd $HOME && git clone https://github.com/mistralai/mistral-inference
cd $HOME/mistral-inference && poetry install .
模型下载
直接链接
注:
- 重要提示:
mixtral-8x22B-Instruct-v0.3.tar与 Mixtral-8x22B-Instruct-v0.1 完全相同,只是存储格式为.safetensors。mixtral-8x22B-v0.3.tar与 Mixtral-8x22B-v0.1 相同,但词汇表扩展到了 32768 个词。codestral-22B-v0.1.tar采用一种非商业用途的自定义许可协议,称为 Mistral AI 非生产许可 (MNPL)。mistral-large-instruct-2407.tar采用一种非商业用途的自定义许可协议,称为 Mistral AI 研究许可 (MRL)。
- 上述所有模型均支持函数调用功能。例如,Mistral 7B 基础版/指令版 v3 是对 7B 基础版/指令版 v2 的小幅更新,新增了函数调用能力。
- “即将发布”的模型也将包含函数调用功能。
- 您可以从我们的文档中下载旧版本的模型:[https://docs.mistral.ai/getting-started/open_weight_models/#downloading]。
从 Hugging Face Hub 下载
| 名称 | ID | URL |
|---|---|---|
| Pixtral Large 指令版 | mistralai/Pixtral-Large-Instruct-2411 | https://huggingface.co/mistralai/Pixtral-Large-Instruct-2411 |
| Pixtral 12B 基础版 | mistralai/Pixtral-12B-Base-2409 | https://huggingface.co/mistralai/Pixtral-12B-Base-2409 |
| Pixtral 12B | mistralai/Pixtral-12B-2409 | https://huggingface.co/mistralai/Pixtral-12B-2409 |
| Mistral Small 3.1 24B 基础版 | mistralai/Mistral-Small-3.1-24B-Base-2503 | https://huggingface.co/mistralai/Mistral-Small-3.1-24B-Base-2503 |
| Mistral Small 3.1 24B 指令版 | mistralai/Mistral-Small-3.1-24B-Instruct-2503 | https://huggingface.co/mistralai/Mistral-Small-3.1-24B-Instruct-2503 |
使用方法
最新消息!!!:Mistral Large 2 已发布。更多关于其功能的信息请参见 此处。
创建一个用于存储模型的本地文件夹
export MISTRAL_MODEL=$HOME/mistral_models
mkdir -p $MISTRAL_MODEL
下载上述任意链接并解压内容,例如:
export 12B_DIR=$MISTRAL_MODEL/12B_Nemo
wget https://models.mistralcdn.com/mistral-nemo-2407/mistral-nemo-instruct-2407.tar
mkdir -p $12B_DIR
tar -xf mistral-nemo-instruct-2407.tar -C $12B_DIR
或者
export M8x7B_DIR=$MISTRAL_MODEL/8x7b_instruct
wget https://models.mistralcdn.com/mixtral-8x7b-v0-1/Mixtral-8x7B-v0.1-Instruct.tar
mkdir -p $M8x7B_DIR
tar -xf Mixtral-8x7B-v0.1-Instruct.tar -C $M8x7B_DIR
对于 Hugging Face 模型的权重,以下是一个下载 Mistral Small 3.1 24B 指令版 的示例:
from pathlib import Path
from huggingface_hub import snapshot_download
mistral_models_path = Path.home().joinpath("mistral_models")
model_path = mistral_models_path / "mistral-small-3.1-instruct"
model_path.mkdir(parents=True, exist_ok=True)
repo_id = "mistralai/Mistral-Small-3.1-24B-Instruct-2503"
snapshot_download(
repo_id=repo_id,
allow_patterns=["params.json", "consolidated.safetensors", "tekken.json"],
local_dir=model_path,
)
使用方法
以下章节将概述如何通过命令行界面 (CLI) 或直接在 Python 中运行模型。
命令行界面
- 演示
要测试模型在您的环境中是否正常工作,可以运行 mistral-demo 命令。
例如,120亿参数的 Mistral-Nemo 模型可以在单个 GPU 上进行测试,命令如下:
mistral-demo $12B_DIR
对于大型模型,如 8x7B 和 8x22B,则需要在多 GPU 环境中运行。针对这些模型,可以使用以下命令:
torchrun --nproc-per-node 2 --no-python mistral-demo $M8x7B_DIR
注意:如果有多余的 GPU,可将 --nproc-per-node 的值调整为更大的数字。
- 聊天
要与模型进行交互式对话,可以使用 mistral-chat 命令。
mistral-chat $12B_DIR --instruct --max_tokens 1024 --temperature 0.35
对于大型模型,可以结合 torchrun 使用:
torchrun --nproc-per-node 2 --no-python mistral-chat $M8x7B_DIR --instruct
注意:如有必要,可调整 --nproc-per-node 的值以匹配更多的 GPU 数量(例如,针对 8x22B 模型)。
- 与 Codestral 对话
要将 Codestral 用作编程助手,可以使用 mistral-chat 命令。请确保 $M22B_CODESTRAL 已设置为下载的 Codestral 模型文件夹的有效路径,例如 $HOME/mistral_models/Codestral-22B-v0.1。
mistral-chat $M22B_CODESTRAL --instruct --max_tokens 256
如果您向模型提问:“请用 Rust 编写一个计算斐波那契数列的函数”,模型应会生成类似以下内容的回答:
当然,下面是一个用 Rust 编写的简单斐波那契数列计算函数。该函数接受一个整数 `n` 作为参数,并返回第 `n` 个斐波那契数。
fn fibonacci(n: u32) -> u32 {
match n {
0 => 0,
1 => 1,
_ => fibonacci(n - 1) + fibonacci(n - 2),
}
}
fn main() {
let n = 10;
println!("第 {} 个斐波那契数是:{}", n, fibonacci(n));
}
这个函数使用递归方式计算斐波那契数。不过,这种方法效率不高,因为它会重复计算许多中间结果。更高效的方案是使用循环来迭代计算斐波那契数。
之后您还可以继续对话,例如:“请将其翻译成 Python。”
- 与 Codestral-Mamba 对话
要将 Codestral-Mamba 用作编程助手,可以使用 mistral-chat 命令。请确保 $7B_CODESTRAL_MAMBA 已设置为下载的 Codestral-Mamba 模型文件夹的有效路径,例如 $HOME/mistral_models/mamba-codestral-7B-v0.1。
随后,您还需要安装以下 Python 包:
pip install packaging mamba-ssm causal-conv1d transformers
安装完成后即可开始对话:
mistral-chat $7B_CODESTRAL_MAMBA --instruct --max_tokens 256
- 与 Mathstral 对话
要将 Mathstral 用作助手,可以使用 mistral-chat 命令。请确保 $7B_MATHSTRAL 已设置为下载的 Mathstral 模型文件夹的有效路径,例如 $HOME/mistral_models/mathstral-7B-v0.1。
mistral-chat $7B_MATHSTRAL --instruct --max_tokens 256
如果您向模型提问:“Albert 每周都喜欢冲浪一次,每次冲浪持续 4 小时,每小时收费 20 美元。那么 Albert 在 5 周内总共会花费多少钱?”模型应给出正确的计算结果。
之后您可以继续对话,例如:“那他一年会花费多少钱?”
- 与 Mistral Small 3.1 24B Instruct 对话
要将 Mistral Small 3.1 24B Instruct 用作助手,可以使用 mistral-chat 命令。请确保 $MISTRAL_SMALL_3_1_INSTRUCT 已设置为下载的 Mistral Small 模型文件夹的有效路径,例如 $HOME/mistral_models/mistral-small-3.1-instruct。
mistral-chat $MISTRAL_SMALL_3_1_INSTRUCT --instruct --max_tokens 256
如果您向模型展示一张图片,并提问:“上图所示的是哪个公园?请提供识别该公园的线索。”同时附上图片 URL https://huggingface.co/datasets/patrickvonplaten/random_img/resolve/main/yosemite.png,模型应答为优胜美地国家公园,并给出相应的识别线索。
之后您还可以继续对话,例如:“图中的湖泊叫什么名字?”模型应回答说那不是湖泊,而是一条河流。
Python
- 指令遵循:
from mistral_inference.transformer import Transformer
from mistral_inference.generate import generate
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.protocol.instruct.messages import UserMessage
from mistral_common.protocol.instruct.request import ChatCompletionRequest
tokenizer = MistralTokenizer.from_file("./mistral-nemo-instruct-v0.1/tekken.json") # 更改为提取的分词器文件
model = Transformer.from_folder("./mistral-nemo-instruct-v0.1") # 更改为提取的模型目录
prompt = "请合理估算,请一位窗户清洁工清洗巴黎所有窗户的费用大概是多少美元。"
completion_request = ChatCompletionRequest(messages=[UserMessage(content=prompt)])
tokens = tokenizer.encode_chat_completion(completion_request).tokens
out_tokens, _ = generate([tokens], model, max_tokens=1024, temperature=0.35, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id)
result = tokenizer.instruct_tokenizer.tokenizer.decode(out_tokens[0])
print(result)
- 多模态指令遵循:
from pathlib import Path
from huggingface_hub import snapshot_download
from mistral_common.protocol.instruct.messages import ImageURLChunk, TextChunk
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_inference.generate import generate
from mistral_inference.transformer import Transformer
model_path = Path.home().joinpath("mistral_models") / "mistral-small-3.1-instruct" # 更改为提取的模型
tokenizer = MistralTokenizer.from_file(model_path / "tekken.json")
model = Transformer.from_folder(model_path)
url = "https://huggingface.co/datasets/patrickvonplaten/random_img/resolve/main/yosemite.png"
prompt = "上图展示的是哪个公园?请给出识别该公园的线索。"
user_content = [ImageURLChunk(image_url=url), TextChunk(text=prompt)]
tokens, images = tokenizer.instruct_tokenizer.encode_user_content(user_content, False)
out_tokens, _ = generate(
[tokens],
model,
images=[images],
max_tokens=256,
temperature=0.15,
eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id,
)
result = tokenizer.decode(out_tokens[0])
print("Prompt:", prompt)
print("Completion:", result)
- 函数调用:
from mistral_common.protocol.instruct.tool_calls import Function, Tool
completion_request = ChatCompletionRequest(
tools=[
Tool(
function=Function(
name="get_current_weather",
description="获取当前天气",
parameters={
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市和州,例如旧金山,加州",
},
"format": {
"type": "string",
"enum": ["摄氏度", "华氏度"],
"description": "要使用的温度单位。根据用户所在位置推断。",
},
},
"required": ["location", "format"],
},
)
)
],
messages=[
UserMessage(content="今天巴黎的天气怎么样?"),
],
)
tokens = tokenizer.encode_chat_completion(completion_request).tokens
out_tokens, _ = generate([tokens], model, max_tokens=64, temperature=0.0, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id)
result = tokenizer.instruct_tokenizer.tokenizer.decode(out_tokens[0])
print(result)
- 中间填空(FIM):
请确保已安装 mistral-common >= 1.2.0:
pip install --upgrade mistral-common
你可以按如下方式模拟代码补全的中间填空。
from mistral_inference.transformer import Transformer
from mistral_inference.generate import generate
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.tokens.instruct.request import FIMRequest
tokenizer = MistralTokenizer.from_model("codestral-22b")
model = Transformer.from_folder("./mistral_22b_codestral")
prefix = """def add("""
suffix = """ return sum"""
request = FIMRequest(prompt=prefix, suffix=suffix)
tokens = tokenizer.encode_fim(request).tokens
out_tokens, _ = generate([tokens], model, max_tokens=256, temperature=0.0, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id)
result = tokenizer.decode(out_tokens[0])
middle = result.split(suffix)[0].strip()
print(middle)
测试
运行 logits 等价性测试:
python -m pytest tests
部署
deploy 文件夹包含用于构建带有所需依赖项的 vLLM 镜像的代码,以便部署 Mistral AI 模型。在该镜像中,使用了 transformers 库,而非参考实现。构建命令如下:
docker build deploy --build-arg MAX_JOBS=8
运行该镜像的说明可在官方文档中找到。
模型平台
- 在 Mistral AI 官方 API(La Plateforme)上使用 Mistral 模型。
- 通过 云服务提供商 使用 Mistral 模型。
参考文献
[1]: LoRA:大型语言模型的低秩适应,Hu 等人,2021 年。
许可证
本库采用 Apache 2.0 许可证授权。更多信息请参阅 LICENCE 文件。
您不得以侵犯、盗用或以其他方式违反任何第三方权利(包括知识产权)的方式使用本库或我们的模型。
版本历史
v1.6.02025/03/20v1.4.02024/09/13v1.3.02024/07/18v1.2.02024/07/16v1.1.02024/05/24v1.0.42024/05/22常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
n8n
n8n 是一款面向技术团队的公平代码(fair-code)工作流自动化平台,旨在让用户在享受低代码快速构建便利的同时,保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点,帮助用户轻松连接 400 多种应用与服务,实现复杂业务流程的自动化。 n8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”:既可以通过直观的可视化界面拖拽节点搭建流程,也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外,n8n 原生集成了基于 LangChain 的 AI 能力,支持用户利用自有数据和模型构建智能体工作流。在部署方面,n8n 提供极高的自由度,支持完全自托管以保障数据隐私和控制权,也提供云端服务选项。凭借活跃的社区生态和数百个现成模板,n8n 让构建强大且可控的自动化系统变得简单高效。
AutoGPT
AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台,核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点,让用户只需设定目标,AI 即可自主规划步骤、调用工具并持续运行直至完成任务。 无论是开发者、研究人员,还是希望提升工作效率的普通用户,都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体;研究人员能基于开源架构探索多智能体协作机制;而非技术背景用户也可直接选用预置的智能体模板,立即投入实际工作场景。 AutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑,每个块负责单一动作,灵活且易于调试。同时,平台支持本地自托管与云端部署两种模式,兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本,即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛,让人人都能成为 AI 的创造者与受益者。
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。