跳到主要内容

文本大模型 · 稀疏混合专家(MoE)

把 Mixtral 跑在自己的卡上:显存按 46.7B 算,不是 12.9B

Mixtral 是稀疏混合专家模型,每个 token 只激活 8 个专家里的 2 个,算力开销像一个 12.9B 的小模型,但全部权重必须整份驻留显存。这一页把 8x7B 与 8x22B 每一档的显存账算清楚,并对上具体卡型。

Mixtral 8x7B 由 Mistral AI 在 2023 年 12 月放出,是第一个真正意义上被社区大规模自建的开源 MoE 模型。它的结构是 32 层、每层 8 个专家、路由器为每个 token 选 top-2 专家,总参数 46.7B、单 token 激活 12.9B,上下文 32K,Apache 2.0 许可。Mistral 当时给出的说法是「在多数基准上超过 Llama 2 70B,推理快 6 倍」,指令版 MT-Bench 拿到 8.30 分,与 GPT-3.5 同档。半年后的 Mixtral 8x22B 把规模拉到总参数 141B、激活 39B、上下文 64K,56 层结构,原生支持 function calling。

有一件事必须先说清楚:Mistral 官方托管的两个 API 端点 open-mixtral-8x7b 与 open-mixtral-8x22b 已经在 2025 年 3 月 30 日退役,官方文档现在把新集成一律指向 Mistral Small 4。但权重是 Apache 2.0 的,至今仍完整挂在 Hugging Face 上,可以下载、商用、二次分发、蒸馏。换句话说,今天想用 Mixtral,自建是唯一路径 —— 而这恰恰是不少团队仍然选它的理由:一个不会被服务商单方面下线、可完全离线、权重可审计的 MoE 底座,配合成熟到烂熟的 vLLM 与 llama.cpp 生态。

自建 Mixtral 踩的第一个坑几乎总是同一个:拿 12.9B 去估显存。MoE 的路由是逐 token、逐层动态决定的,你无法预知下一个 token 会命中哪两个专家,所以 8 个专家的权重必须全部常驻。46.7B 的 bf16 权重就是 46.7 × 2 ≈ 93.4GB,8x22B 更是 281GB 起步。激活参数只决定 FLOPs 和吞吐,一分显存都省不下来。把这笔账算对,选卡就不会翻车。

01 —

Mixtral 家族现存版本与各档显存占用

总参数决定显存,激活参数只决定速度 —— 两者不能混着算。

版本参数量显存上下文说明
Mixtral-8x7B-Instruct-v0.146.7B 总参 / 12.9B 激活bf16 ≈93.4GB / GGUF Q5_K_M 32.23GB / Q4_K_M 26.44GB / AWQ 4bit 24.65GB32K(32768)被部署得最多的一档,Hugging Face 月下载仍在四十万量级。注意官方 chat template 不接受 system role。
Mixtral-8x7B-v0.1(base)46.7B 总参 / 12.9B 激活bf16 ≈93.4GB / Q6_K 38.38GB / Q3_K_M 20.36GB / Q2_K 15.64GB32K(32768)未做指令对齐的底座,适合继续预训练或自建 SFT 数据集。Q3_K_M 是唯一能塞进 24GB 单卡的实用档。
Mixtral-8x22B-Instruct-v0.1141B 总参 / 39B 激活bf16 ≈281GB / GGUF Q5_K_M 99.96GB / Q4_K_M 85.58GB / Q3_K_M 67.78GB64K(65536)56 层、48 个注意力头、8 个 KV 头,用 v3 tokenizer,原生 function calling。多语言与数学推理明显强于 8x7B。
Mixtral-8x22B-v0.1 / v0.3(base)141B 总参 / 39B 激活bf16 ≈281GB / IQ3_XS 58.22GB / Q2_K 52.10GB64K(65536)v0.3 与 v0.1 结构完全一致,唯一区别是词表从 32000 扩到 32768。Q2_K 能进单张 80GB 卡,但质量损失肉眼可见。
open-mixtral-8x7b / open-mixtral-8x22b(官方托管 API)同上,托管服务不适用32K / 64K两个端点均于 2025 年 3 月 30 日退役,Mistral 建议新集成改用 Mistral Small 4。要继续用 Mixtral 只能自建 —— 权重仍是 Apache 2.0。

02 —

按配置选卡:NexGPU 上跑 Mixtral 的四种打法

显存要同时装下全量权重和 KV Cache,我们按实测文件大小对齐卡型,不做乐观估算。

  • 单卡跑 8x7B Q4_K_M 量化,吃满 32K 上下文

    RTX 5090 32GB$0.723/卡·时

    Q4_K_M 权重 26.44GB,8x7B 的 KV Cache 是 128 KiB/token、32K 满上下文正好 4GB,两者相加 30.4GB 卡在 32GB 里刚好,24GB 卡则必须降到 Q3_K_M 并砍上下文。

  • 单卡起 vLLM OpenAI 兼容服务,AWQ 4-bit 带并发

    RTX A6000 48GB$0.817/卡·时

    AWQ 权重只占 24.65GB,剩下的 20GB 全给 KV Cache 池,按 128 KiB/token 折算约 16 万 token,够五路 32K 长上下文并发而不必开张量并行。

  • 8x7B bf16 全精度生产部署,TP=2

    A100 PCIE 80GB × 2$0.824/卡·时(双卡 $1.648/时)

    93.4GB 权重按 tensor-parallel-size 2 切开是每卡 46.7GB,各留约 30GB 给 KV 与激活值,是不做任何量化损失的最省配置。

  • 8x22B Q4_K_M,64K 长上下文推理

    A100 SXM4 80GB × 2$1.088/卡·时(双卡 $2.176/时)

    85.58GB 权重加 64K 满上下文 14GB 的 KV,双卡 160GB 从容;若坚持单卡不切分,只有 H200 141GB($6.660/卡·时)装得下。

03 —

从开机到第一个 token:四步跑通 Mixtral

命令可直接复制。mistralai 的仓库是 gated 的,先登录再拉权重。

  1. 01

    开实例并拉权重

    选一台带 PyTorch 或 vLLM 预置镜像的实例,SSH 进去先登录 Hugging Face —— mistralai 名下所有仓库都需要先在网页上点同意条款、再用 token 认证,否则会直接报 Cannot access gated repo。8x7B 的 bf16 权重约 93.4GB,走 NexGPU 节点带宽通常几十分钟到手。

    huggingface-cli login && huggingface-cli download mistralai/Mixtral-8x7B-Instruct-v0.1 --local-dir /workspace/mixtral-8x7b
  2. 02

    用 vLLM 起 OpenAI 兼容端点

    双卡 A100 80GB 上开张量并行。vLLM 对 Mixtral 的 MoE 层做的是把每个专家切到所有 rank 上、再用融合 MoE kernel 前向;如果你换成多卡多副本部署,可以加 --enable-expert-parallel 让专家层改走专家并行。跑量化版就把路径换成 AWQ 仓库并加 --quantization awq。

    vllm serve /workspace/mixtral-8x7b --tensor-parallel-size 2 --dtype bfloat16 --max-model-len 32768 --gpu-memory-utilization 0.90
  3. 03

    单卡走 llama.cpp / Ollama 量化路线

    只有一张 32GB 或 48GB 卡时用 GGUF。8x7B 是 32 层,-ngl 33 表示连输出层一起全部搬上 GPU,一旦有层留在 CPU,MoE 的专家权重换入换出会让吞吐断崖式下跌。想省事就直接 ollama run mixtral:8x7b-instruct-v0.1-q4_K_M。注意 RTX 5090 是 Blackwell 架构,PyTorch 侧需要 CUDA 12.8 以上的构建,llama.cpp 则没有这个限制。

    ./llama-server -m mixtral-8x7b-instruct-v0.1.Q4_K_M.gguf -ngl 33 -c 32768 --host 0.0.0.0 --port 8080
  4. 04

    绕开 system role 的模板坑

    Mixtral v0.1 的官方 chat template 只认 user 与 assistant,[INST] ... [/INST] 结构里没有独立的 system 位置。你一传 system 消息就会抛 TemplateError: Conversation roles must alternate user/assistant。最稳的做法是把系统提示拼到第一条 user 消息前面;也可以改用 mistral-common,它默认把 system 内容并入最后一条 user 消息;或给 vLLM 传 --chat-template 换成支持 system 的模板。

    messages = [{'role': 'user', 'content': system_prompt + '\n\n' + user_query}]

一次真实的账:微调加推理,Mixtral 到底花多少钱

先算 QLoRA 微调 Mixtral 8x7B。4-bit 量化后训练态大约需要 32GB 显存,一张 A100 PCIE 80GB 绰绰有余,$0.824/卡·时。拉完 93.4GB 权重按 40 分钟计:0.67 × $0.824 ≈ $0.55;跑 3 个 epoch 共 22 小时:22 × $0.824 = $18.13;权重加检查点占 120GB 存储、只留两天:120 × $0.414 ÷ 30 × 2 ≈ $3.31;导出 1.2GB 的 LoRA adapter:1.2 × $0.0081 ≈ $0.01。合计约 $22.00。训练一结束停掉实例,计算立刻停止计费,存储则要等你销毁卷之后才停。再看推理:8x7B 的 Q4_K_M 是 26.44GB,RTX 5090 32GB 跑 4 小时评测是 4 × $0.723 = $2.89;换成 8x22B 的 Q4_K_M(85.58GB),两张 A100 SXM4 80GB 合 $1.088 × 2 = $2.176/时,同样 4 小时是 $8.70。最后提一个容易被忽略的定价细节:RTX A6000 48GB 是 $0.817/卡·时,A100 PCIE 80GB 是 $0.824/卡·时 —— 每小时只差 $0.007,却多出 32GB 显存和高得多的带宽,做 Mixtral 微调基本没有理由选前者。全程按秒计量、按小时计价,没有起租门槛、没有开通费、不需要提配额工单。

04 —

常见问题

Mixtral 8x7B 本地部署到底需要多大显存?

看你跑哪一档。bf16 全精度是 46.7 × 2 ≈ 93.4GB 权重,加上 32K 满上下文约 4GB 的 KV Cache,必须两张 80GB 卡做 TP=2。量化档位是实测文件大小:GGUF Q5_K_M 32.23GB、Q4_K_M 26.44GB、Q3_K_M 20.36GB、Q2_K 15.64GB,AWQ 4-bit 24.65GB。想单卡跑满 32K 上下文,32GB 是最低的舒适线。NexGPU 的 RTX 5090 32GB 是 $0.723/卡·时、A100 PCIE 80GB 是 $0.824/卡·时,按秒计费,开一小时把你那一档实测一遍再决定长期方案,成本不到一杯咖啡。

只激活 12.9B 参数,为什么还要 93GB 显存?

因为路由是动态的。Mixtral 每层有 8 个专家,路由器为每个 token 挑 top-2,而挑中哪两个是逐 token、逐层变化的 —— 32 层各选各的,你无法预知下一个 token 的路径,所以 8 个专家的权重必须全部常驻显存。12.9B 这个数字决定的是每 token 的 FLOPs 和吞吐(所以 Mixtral 的推理速度像一个 13B 模型),跟显存占用无关。这是自建 MoE 最常见的误判,也是很多人租错卡的原因。在 NexGPU 上按总参数选卡、按秒付费,选错了停掉换一张就是,不会被包月套牢。

Mixtral 已经退役了吗?现在自建还有意义吗?

退役的是 Mistral 官方托管的 API 端点 —— open-mixtral-8x7b 和 open-mixtral-8x22b 均于 2025 年 3 月 30 日下线,官方文档现在把新集成指向 Mistral Small 4。但权重是 Apache 2.0,仍然完整挂在 Hugging Face 上,可下载、可商用、可再分发。也就是说今天要用 Mixtral,自建就是唯一路径,而这正是它现在的价值:一个不会被服务商单方面下线、可完全离线、权重可审计的 MoE 底座。在 NexGPU 上挑一台带 vLLM 预置镜像的实例,十几分钟就能把它变成你自己的 OpenAI 兼容端点。

Mixtral 8x22B 能单卡跑吗?

bf16 的 281GB 不可能单卡。量化后:Q4_K_M 是 85.58GB,加上 64K 满上下文 14GB 的 KV Cache 约 100GB,市面上只有 H200 141GB 能单卡装下,NexGPU 上是 $6.660/卡·时。Q2_K 的 52.10GB 确实能塞进单张 80GB A100,但 2-bit 对 MoE 的质量损失很明显,社区普遍不推荐。更划算的是两张 A100 SXM4 80GB 做 TP=2,$1.088 × 2 = $2.176/时。NexGPU 单节点最多支持 14 张卡、最大节点显存 2,152GB,跑 8x22B 的 bf16 全精度也排得下。

Mixtral 的中文能力怎么样?能直接做中文业务吗?

说实话:Mistral 官方标注的语言只有英语、法语、意大利语、德语、西班牙语,中文不在列。实际用下来 Mixtral 读中文没问题,但生成的地道程度、中文指令跟随和长文中文一致性,明显弱于同期的中文原生底座。要做中文业务,通常得在 Mixtral 上再补一轮中文 SFT,或者干脆换底座。这种事别听转述 —— NexGPU 按秒计费,$0.723 开一小时 RTX 5090 32GB,用你自己的中文测试集把 Q4_K_M 跑一遍,一小时内就有答案。

部署时报 TemplateError: Conversation roles must alternate user/assistant 怎么办?

这是 Mixtral 最高频的部署报错。v0.1 的官方 chat template 只认 user 和 assistant 两个角色,[INST] ... [/INST] 结构里没有独立的 system 位置,你一旦传 system role 就会抛这个异常。三种解法:把系统提示拼到第一条 user 消息前面(最简单,改一行);改用 mistral-common,它默认把 system 内容并入最后一条 user 消息;或者给 vLLM 传 --chat-template 指定一个支持 system 的自定义模板。这类环境坑在预置镜像里最容易一次趟平 —— NexGPU 提供 2,000+ 预置镜像,含 PyTorch、vLLM、Jupyter,支持 SSH、Web 终端、REST API 与 CLI,技术支持在 Telegram 上中英双语实时响应,不用排工单。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。