GLM-5.2 与 DeepSeek-V4-Flash 的 A100 部署踩坑实录
这是一篇踩坑复盘。我们把 GLM-5.2-Int4-Int8Mix 或 DeepSeek-V4-Flash-0731 搬上 8 张 A100 时,原以为改改参数就行,结果发现这一代新模型在架构上就没打算支持 A100。这篇博客记录了完整的排查过程、原因分析,以及最终跑通的两套社区方案。文末还整理了一份「哪些常见模型在 A100 / 4090 这类显卡上有部署限制」的速查表。
一、背景:手上是 8 张 A100,要跑两个新模型
团队内网环境是 8×A100/A800-80GB(PCIe 或 SXM),这次要部署两个 2026 年的当红模型:
- GLM-5.2-Int4-Int8Mix:智谱 GLM-5.2 的社区 Int4/Int8 混合量化版
- DeepSeek-V4-Flash-0731:DeepSeek-V4-Flash 的正式版(0731)
先简单介绍下这两位主角。
GLM-5.2
| 项目 | 说明 |
|---|---|
| 发布方 | 智谱 AI(Z.ai),2026 年 6 月发布并开源 |
| 定位 | 面向长任务时代的旗舰模型,专注 Coding 与长程 Agent 任务 |
| 架构 | MoE,总参数约 744B,激活参数约 40B |
| 注意力 | DSA 稀疏注意力(sparse MLA + indexer 设计,与 DeepSeek-V3.2 同源) |
| 上下文 | 真正可用的 1M Token 上下文 |
| 开源协议 | MIT License |
DeepSeek-V4-Flash-0731
| 项目 | 说明 |
|---|---|
| 发布方 | DeepSeek(深度求索) |
| 定位 | DeepSeek-V4 系列的轻量级变体,面向高吞吐、低延迟服务场景 |
| 架构 | MoE,总参数 284B,激活参数仅 13B |
| 注意力 | 混合注意力:Token 级压缩 + DeepSeek Sparse Attention(DSA),mHC 结构共 43 层 |
| 精度 | FP4 + FP8 混合精度 |
| 上下文 | 1M Token 无损上下文 |
| 版本说明 | 0731 为正式版,架构与预览版相同,重点增强后训练质量与 agentic 能力 |
两个模型有几个共同点,这几个共同点恰好就是后面所有坑的伏笔:MoE 架构、DSA 稀疏注意力、原生 FP8/FP4 精度、1M 上下文。
二、常规操作:H200 上的部署参数(先看看“正常世界”长什么样)
在新架构显卡(H100/H200/B200 等 SM90+)上,两个模型都有官方支持的 vLLM 部署路径,参数大致如下。
DeepSeek-V4-Flash-0731
vllm serve deepseek-ai/DeepSeek-V4-Flash-0731 \
--trust-remote-code \
--kv-cache-dtype fp8 \
--block-size 256 \
--enable-expert-parallel \
--tensor-parallel-size 8 \
--tokenizer-mode deepseek_v4 \
--tool-call-parser deepseek_v4 \
--enable-auto-tool-choice \
--reasoning-parser deepseek_v4 \
--reasoning-config '{"reasoning_parser":"deepseek_v4","reasoning_start_str":"","reasoning_end_str":""}' \
--speculative-config '{"method":"dspark","num_speculative_tokens":7,"draft_sample_method":"probabilistic"}'
GLM-5.2-Int4-Int8Mix
vllm serve glm/GLM-5.2-Int4-Int8Mix \
--host 0.0.0.0 \
--port 8000 \
--served-model-name GLM-5.2 \
--trust-remote-code \
--dtype bfloat16 \
--quantization compressed-tensors \
--kv-cache-dtype fp8 \
--tensor-parallel-size 8 \
--enable-expert-parallel \
--max-model-len auto \
--gpu-memory-utilization 0.90 \
--max-num-seqs 32 \
--enable-auto-tool-choice \
--tool-call-parser glm47 \
--reasoning-parser glm45 \
--speculative-config.method mtp \
--speculative-config.num_speculative_tokens 1 \
--disable-uvicorn-access-log
⚠️ 这两组参数仅适用于 H100/H200/B200 等 SM90+ 架构。默认 1M 上下文会瞬间吃掉大量 KV Cache 显存,实际部署请按硬件调整
--max-model-len。
三、翻车现场:A100 上直接报错
把同样的命令搬到 A100 上——即便按 Ampere 的能力改小参数(去掉 FP8、缩短上下文)——启动照样失败,报错始终是同一句:
RuntimeError: Engine core initialization failed, See root cause above. Failed core proc(s): { }
这句报错信息量约等于零。真正的原因藏在更早的日志里,排查下来是两个独立的硬性架构限制。
3.1 限制一:DeepGEMM 不支持 Ampere
DeepSeek-V4-Flash 跑不起来的根源在 DeepGEMM 库:
- vLLM 主线在加载 DeepSeek-V4 时,默认强制启用针对新架构优化的 DeepGEMM 库;
- DeepGEMM 主要为 Hopper(H100)等新架构设计,仅支持 sm_90a 及以上;
- A100/A800 是 SM80(Ampere),没有硬件级 FP8 支持,DeepGEMM 在上面运行直接导致内核崩溃;
- 社区已有多个报告:vLLM 主线无法在 A100 上直接部署 DeepSeek-V4,TileLang 内核编译和
Engine core initialization failed错误均与此相关。
3.2 限制二:DSA 稀疏注意力同样绑死 Hopper
GLM-5.2 的报错原因同理,而且更隐蔽。GLM-5.2 用的是 DSA 稀疏注意力架构(vLLM 中的实现为 GlmMoeDsaForCausalLM,和 DeepSeek-V3.2 同源的 sparse MLA + indexer 设计)。vLLM 里这条路径依赖两个只支持 Hopper/Blackwell(SM90+)的库:
- DeepGEMM —— 负责 indexer 的 FP8 MQA logits 计算
- FlashMLA-Sparse / FlashAttn-MLA-Sparse —— 稀疏 MLA 注意力本体
A100/A800 是 SM80,两者都不可用,启动直接报错。
3.3 原因小结
| 依赖库 | 作用 | 最低架构要求 | A100 (SM80) |
|---|---|---|---|
| DeepGEMM | FP8 GEMM / indexer FP8 MQA logits | Hopper (SM90+) | ❌ |
| FlashMLA-Sparse | 稀疏 MLA 注意力本体 | Hopper (SM90+) | ❌ |
| 硬件级 FP8 | FP8 KV Cache / FP8 推理 | Hopper (SM90+) | ❌ |
一句话总结:这不是参数调优问题,是这一代模型的核心计算路径(FP8 + DSA 稀疏注意力)在架构层面就不支持 Ampere。 想在 A100 上跑,只能换路线——要么换量化格式(绕过 FP8/FP4 张量核路径),要么换推理引擎(绕过 vLLM 的 Hopper 专用内核依赖)。
四、解法一:GLM-5.2 跑通(预构建 Docker 镜像方案)
⚠️ 本节来自社区实测、真实有效,内容保持原样,仅调整排版。
社区已经整理好了预构建镜像,整套流程四步。
硬件要求
| 项目 | 要求 |
|---|---|
| GPU | 8× A100/A800 80GB(PCIe 或 SXM 均可) |
| 磁盘 | ≥ 440 GB(模型权重 435 GB) |
| 驱动 | 支持 CUDA 12.9(实测 driver 580.95) |
| KV cache | 只能 bf16(SM80 上这条路径不支持 fp8 KV) |
第一步:下载模型
pip install -U "huggingface_hub[cli]"
hf download nvidia/GLM-5.2-NVFP4 --local-dir /mnt/data/models/GLM-5.2-NVFP4
# 435GB,视网络情况需要数小时
NVFP4 量化版在 SM80 上通过 Marlin 内核运行(没有 FP4 张量核也没关系),精度损失可接受——社区实测 AIME-2026 带工具可到 99%。
第二步:拉镜像
docker pull openguardrails/vllm-glm52-sm80:435f82d61-pr38476
镜像内容完全透明:官方
vllm/vllm-openainightly(固定在 2026-06-22 的 main,commit435f82d61)+ cherry-pick PR #38476 + 冲突解决,构建脚本源自 PR 评论区 @RefalMachine 验证过的配方。Dockerfile 可自行审计或重建。
注:这里实际跑的是 GLM-5.2-NVFP4(NVIDIA 官方 NVFP4 量化版),不是原计划的 Int4-Int8Mix——因为 Int4-Int8Mix 量化版本身也依赖 SM90+ 的路径。NVFP4 权重在 SM80 上经 Marlin 内核反量化运行,这是 A100 能跑通的关键。
第三步:启动
docker run -d --name glm52 \
--gpus all --ipc host --shm-size 32g \
-p 8000:8000 \
-v /mnt/data/models:/models:ro \
openguardrails/vllm-glm52-sm80:435f82d61-pr38476 \
--model /models/GLM-5.2-NVFP4 \
--served-model-name glm-5.2 \
--host 0.0.0.0 --port 8000 \
--trust-remote-code \
--tensor-parallel-size 8 \
--enable-expert-parallel \
--dtype bfloat16 --kv-cache-dtype bfloat16 \
--max-model-len 131072 \
--gpu-memory-utilization 0.95 \
--max-num-seqs 4 \
--no-async-scheduling \
--tool-call-parser glm47 --reasoning-parser glm45 \
--enable-auto-tool-choice \
--chat-template-content-format=string
加载 435GB 权重约需 15–25 分钟,请耐心。就绪的标志是日志出现:
Using TRITON_MLA_SPARSE attention backend out of potential backends: ['TRITON_MLA_SPARSE'] DeepGEMM not supported on this platform; using Triton fallback for sparse attention indexer. ... Application startup complete.
第四步:验证
# 基本对话
curl -s localhost:8000/v1/chat/completions -H 'Content-Type: application/json' -d '{
"model": "glm-5.2",
"messages": [{"role":"user","content":"17乘以24等于多少?"}],
"max_tokens": 2000}'
# 工具调用(glm47 解析器)
curl -s localhost:8000/v1/chat/completions -H 'Content-Type: application/json' -d '{
"model": "glm-5.2",
"messages": [{"role":"user","content":"北京今天天气怎么样?"}],
"tools": [{"type":"function","function":{"name":"get_weather",
"description":"查询城市天气",
"parameters":{"type":"object","properties":{"city":{"type":"string"}},"required":["city"]}}}],
"max_tokens": 2000}'
五、解法二:DeepSeek-V4-Flash 跑通(llama.cpp 分支)
⚠️ 本节来自社区实测、真实有效,内容原样保留。
vLLM 走不通,社区另辟蹊径走 llama.cpp。nisparks 大佬发布了适用于 deepseekv4 的 llama.cpp 分支:
GitHub - nisparks/llama.cpp at wip/deepseek-v4-support · https://github.com/nisparks/llama.cpp/tree/wip/deepseek-v4-support
编译
clone 下来之后还需要编译(记得 cd 到下载目录下):
# 1. 配置编译选项(开启CUDA,并指定为A100架构)
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="80" -DLLAMA_CURL=ON
# 2. 开始编译(-j 参数会加速编译)
cmake --build build --config Release -j $(nproc)
下载 GGUF 模型
推理框架下载完之后继续下载该框架需要的 gguf 模型,同样也是该大佬分享的,地址如下:
GitHub - nisparks/llama.cpp at wip/deepseek-v4-support · https://github.com/nisparks/llama.cpp/tree/wip/deepseek-v4-support
注:GGUF 权重的实际托管地址在 Hugging Face:nsparks/DeepSeek-V4-Flash-FP4-FP8-GGUF,保留了原生的 MXFP4 + F8_E4M3_B128 混合精度格式。
完事具备之后直接启动!!!!
./build/bin/llama-server \
-m /data/deepseek/gguf_models/DeepSeek-V4-Flash-FP4-FP8-native.gguf \
-ngl 99 \
--host 0.0.0.0 --port 8000 \
--tensor-split 64,64,64,64,64,64,64,64 \
--ctx-size 131072 \
六、延伸:哪些常见模型在 A100 / 4090 上部署受限?
这次踩坑让我们意识到:「我的卡能不能跑这个模型」已经不能只看显存够不够了。 2025 年以后发布的新模型越来越多地依赖 Hopper 及以上架构才有的能力(FP8 硬件支持、DSA 稀疏注意力内核、FP4 张量核),老卡不是「跑得慢」,而是「根本跑不起来」。这里把常见模型在这两类显卡上的限制整理成速查表。
6.1 先搞懂显卡的“代际门槛”
判断一个模型能否在某显卡上跑,除了显存,还要看三条硬门槛:
| 门槛 | 说明 | 涉及显卡 |
|---|---|---|
| FP8 硬件支持 | Hopper(H100/H200/H20)及以上才有;A100/3090/V100 完全没有;4090 有 FP8 算力但 vLLM 未官方支持其 FP8 推理路径 | A100、A800、4090 |
| DeepGEMM / FlashMLA 内核 | DeepSeek 系及所有 DSA 稀疏注意力模型依赖,仅支持 sm_90a+;4090 是 sm_89,同样不行 | A100、4090、3090 |
| FP4 张量核(NVFP4) | 只有 Blackwell(B200/RTX 50 系)才有;A100/4090 上 NVFP4 权重需经 Marlin 内核反量化运行(有可用路径,性能打折) | A100、4090、H100/H200 |
| 显存墙 | 4090 只有 24GB,放不下多数 MoE 权重,需量化 + CPU 卸载 | 4090、3090 |
6.2 常见模型限制速查表
| 模型 | 发布 | 规模 | A100 (SM80) | RTX 4090 (SM89) | 说明 |
|---|---|---|---|---|---|
| DeepSeek-V3 / V3.1 / R1 | 2025 | 671B MoE | ⚠️ FP8 原生权重需转换,体验差 | ❌ 显存不足;异构方案可跑 | FP8 混合精度训练产物;A100 需转 BF16 显存翻倍,或用 ktransformers 异构 |
| DeepSeek-V3.2 | 2025 | 671B MoE | ❌ DSA 稀疏注意力绑死 Hopper | ❌ 同左 | 首个引入 DSA 的量产模型,sparse MLA 内核仅 SM90+ |
| DeepSeek-V4-Flash / 0731 | 2026 | 257B-284B MoE | ❌ vLLM 主线不可用;llama.cpp 分支可跑(本文方案) | ❌ vLLM 论坛实测 8×4090 部署失败 | FP4+FP8 混合精度 + DSA 双重限制 |
| GLM-5 / 5.1 / 5.2 | 2026 | 744B-A40B MoE | ❌ DSA 绑死 Hopper;NVFP4+Marlin 镜像可跑(本文方案) | ❌ 显存不足 + 同左 | 量化版(Int4-Int8Mix)也依赖 SM90+ 路径,NVFP4 是 A100 可用路径 |
| GLM-4.5 / 4.6 | 2025 | 355B-A32B MoE | ⚠️ 官方有 BF16 权重可跑,但无 FP8 加速 | ❌ 显存不足 | 无 DSA,A100 可跑 BF16/量化版 |
| Kimi K2 | 2025 | 1T MoE | ❌ 原生 FP8 权重约 1TB,A100 不支持 FP8,转 BF16 后显存翻倍,基本不可行 | ❌ 显存不足 | 需 H800/H100 集群(如 16×H800);量化 + CPU 卸载可勉强体验 |
| Qwen3-235B-A22B | 2025 | 235B-A22B MoE | ✅ 8×80GB A100(640GB)可跑,SGLang/vLLM 均可 | ❌ 显存不足 | BF16 全量约 470GB+;FP8 版在 A100 上不可用,需用 BF16 权重 |
| Qwen3-32B / 14B 及以下 | 2025 | Dense | ✅ 单卡 A100 可跑 | ✅ 单卡可跑(量化版) | 无架构限制,只看显存 |
| Llama 3.1/3.3 405B | 2024 | Dense | ✅ 8×A100 可跑 BF16(约 810GB 紧张,INT8 更稳) | ❌ 显存不足 | 传统 BF16 模型,无 FP8/DSA 依赖 |
| Llama 4 Scout / Maverick | 2025 | MoE | ✅ BF16 权重可跑 | ❌ 显存不足 | 无 DSA,主要是显存问题 |
| Mistral Large 2 / 24B | 2024-2025 | Dense | ✅ 可跑 | 24B:✅ 量化可跑 | 无架构限制 |
| MiniMax-M1 / M2 | 2025-2026 | 456B-A46B / 230B-A10B MoE | ⚠️ 需要 BF16/INT8 权重(FP8 版不可用) | ❌ 显存不足 | MoE + lightning attention,A100 有社区跑通案例 |
| MiniCPM / Qwen-7B 级别 | — | 小模型 | ✅ | ✅ | 无限制 |
怎么读这张表:
- ❌ = 该显卡上没有官方/主流可行路径;⚠️ = 有路径但体验打折或需特殊处理;✅ = 主流方案可直接跑
- 本表针对 vLLM/SGLang 官方支持路径。llama.cpp / KTransformers / ik_llama.cpp 等社区引擎对硬件更宽容(见 6.3)
- 显存不足不等于绝对不能跑——CPU+GPU 异构(KTransformers 等)和激进量化能塞下,但速度大打折扣
6.3 A100 / 4090 用户的现实出路
老卡用户并非完全没救,主要有三条路:
- 换量化格式绕开 FP8/FP4 路径:比如本文 GLM-5.2 的 NVFP4 权重在 A100 上经 Marlin 内核反量化运行。核心思路:选择能在 SM80 上软实现的量化格式(GPTQ/AWQ/Int4/Int8/Marlin 路径的 NVFP4)。
- 换推理引擎绕开 Hopper 专用内核:vLLM 走不通就换 llama.cpp 分支(本文 DeepSeek-V4-Flash 方案)、KTransformers(CPU+GPU 异构,单张 24GB 4090D 跑 671B 满血 DeepSeek-R1)等。
- 接受降级:短上下文(
--max-model-len 131072甚至更短)、低并发(--max-num-seqs 4)、BF16 KV Cache——本文两个方案都是这么妥协的产物。
6.4 一张图总结判断逻辑
判断「模型 X 能否在显卡 Y 上跑」,按顺序检查:
1. 显存够不够放权重+KV cache?
└─ 不够 → 量化(Q4/Q8)→ 还不够 → CPU卸载/异构
2. 权重格式是否依赖该卡没有的硬件能力?
├─ FP8 权重 vs A100(无FP8)→ 转BF16或换量化版
├─ NVFP4 权重 vs 非Blackwell → 走 Marlin 反量化路径(A100可用)
┞─ DSA 稀疏注意力 → 仅 Hopper+,换引擎(llama.cpp等)
└─ 都不行 → 该卡与该模型无缘,等社区方案或换卡
3. 推理引擎是否有该卡的内核实现?
└─ vLLM 不行 → SGLang / llama.cpp / KTransformers / TensorRT-LLM
七、总结
这次预研最大的认知收获:AI 硬件代际差异已经从“性能差距”变成了“能不能跑”的鸿沟。 2025 年之前的模型(Llama 3、Qwen2.5 等)在 A100 上只存在跑得快不快的问题;2025 年之后的新模型(DeepSeek-V3.2 起、GLM-5 系、Kimi K2)把 FP8、DSA 稀疏注意力、FP4 写进了架构默认路径,A100/4090 这类 Ampere/Ada 老卡直接被排除在官方支持之外。
几点经验:
- 部署前先查模型对显卡架构的要求,别只看显存。“671B 需要 8×H100” 这种说法背后往往还藏着 “且仅限 H100” 的隐藏条件。
- vLLM 报
Engine core initialization failed在老卡上大概率是内核架构不兼容,先翻完整日志找 DeepGEMM / TileLang / sm_80 相关关键词,别急着调参数。 - 社区是老卡用户的生命线。本文两个方案都来自社区:预构建镜像(GLM-5.2)和 llama.cpp 分支(DeepSeek-V4-Flash)。遇到官方不支持的场景,GitHub Issues/Discussions、知乎、vLLM 论坛往往已有人踩过同样的坑。
- 老卡方案的代价是妥协:短上下文、低并发、加载慢(15–25 分钟)、量化精度损失。生产环境如果在意这些,升级 H200/B200 才是正解。
参考资料
模型与部署官方资源
- 智谱 AI 开放文档:GLM-5.2
- 智谱 AI 官网:GLM-5.2 上线并开源
- Hugging Face:deepseek-ai/DeepSeek-V4-Flash-0731
- ModelScope:deepseek-ai/DeepSeek-V4-Flash(发布说明)
- 阿里云开发者社区:AI 智能体配套 GLM 5.2 —— vLLM/SGLang 部署适配
- vLLM-Ascend 文档:DeepSeek-V4-Flash 部署教程
A100 / SM80 相关
- 知乎:亲测 GLM-5.2-NVFP4 在 8×A100 上的部署
- vLLM Issue #35021:GLM-5(Sparse MLA / DSA)在 sm80 GPU 上无法运行
- vLLM Issue #40851:DeepSeek-V4-Flash sm_80 (A100/A800) support
- vLLM 论坛:DeepSeek-V4-Flash 无法在 8×4090 上部署
- Spheron:Deploy DeepEP and DeepGEMM(DeepGEMM 架构限制说明)
- 知乎:DeepSeek-V3 FP8 训练解析(FP8 与 A100 限制)
llama.cpp / 异构方案
- llama.cpp Discussion #22376:DeepSeek V4 Support (WIP)
- Hugging Face:nsparks/DeepSeek-V4-Flash-FP4-FP8-GGUF
- 量子位:KTransformers 单张 4090D 跑满血 DeepSeek-R1
显卡架构与硬件代际
更多推荐

所有评论(0)