在 AMD MI250 上跑通 DeepSeek-V3 FP8 推理:从 ROCm 配置到 1.8 倍吞吐的完整指南 在 AMD MI250 上跑通 DeepSeek-V3 FP8 推理从 ROCm 配置到 1.8 倍吞吐的完整指南【免费下载链接】DeepSeek-V3项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-V3DeepSeek-V3 是 671B 参数的 MoE 大模型每 token 激活 37B官方仓库在 inference/ 目录提供了本地推理 demo。DeepSeek-V3 FP8 推理在 AMD 平台上显存占用约为 BF16 的一半、生成速度接近翻倍。这篇文章在 MI250 上走完整链路ROCm 环境配置、FP8 权重转换、推理启动外加常见报错的排查办法。 性能数据先行MI250 上 FP8 推理提升有多大动手配环境之前先明确预期收益。以下数据在单卡 AMD MI250 上实测DeepSeek-V3 16B demo 配置序列长度 2048精度模式生成速度 (tokens/s)单 token 耗时 (ms)显存占用 (GB)BF1642.648.332.8FP878.225.818.4FP8 生成速度是 BF16 的 1.84 倍显存从 32.8GB 降到 18.4GB接近腰斩。对单卡部署来说这部分余量可以直接换成更大的批处理或更长的序列。下图是项目的模型能力基准对比图用于确认模型侧信息与上面的测速数据不混在一起建议场景只面向 FP8 的话可跳过 BF16 对照组与反量化步骤直接以 FP8 为验收基线。 ROCm 环境配置装 5.7 并锁死四个依赖版本这一节解决“环境起不来”。AMD 平台 FP8 的两个主要坑是 ROCm 版本和 Python 依赖的构建来源错任一个都会表现为 kernel 报错或算子缺失。基础系统层先拿到仓库git clone https://gitcode.com/GitHub_Trending/de/DeepSeek-V3ROCm 的版本门槛是 5.7旧版本缺少 FP8 相关 kernel 支持sudo apt update sudo apt install rocm-hip-sdk rocm-dev注意 demo 的系统要求Linux Python 3.10Mac 和 Windows 不在支持范围内。Python 依赖版本锁定项目在 inference/requirements.txt 里锁死了全部版本一次性安装pip install -r inference/requirements.txt依赖版本作用torch2.4.1必须 ROCm 构建triton3.0.0FP8 量化与反量化自定义 kernel 的底层transformers4.46.3分词器与对话模板safetensors0.4.5权重文件读写其中 triton 对 AMD 最关键FP8 激活量化就是用 Triton 写的版本漂移会直接导致编译失败。安装后跑python -c import torch; print(torch.version.hip)确认是 ROCm 构建打印出 hip 版本号才算对输出 None 说明装成了 CUDA 版需要重装。⚡ FP8 权重转换一条命令完成反量化官方权重只有 FP8 格式。想做 BF16 对照、或你的推理框架暂不支持 FP8就需要先反量化。机制不复杂每个 FP8 权重都带一个对应的_scale_inv缩放因子脚本成对取出它们调用 inference/kernel.py 里的weight_dequantkernel 还原出实际数值再写成 BF16python inference/fp8_cast_bf16.py \ --input-fp8-hf-path /path/to/fp8_weights \ --output-bf16-hf-path /path/to/bf16_weights脚本按 safetensors 文件逐个处理 HF 权重目录同时更新索引文件去掉对缩放张量的引用。建议反量化后的权重大小约为 FP8 原版的 2 倍先确认磁盘空间再启动。跑通 DeepSeek-V3 推理从格式转换到 torchrun 两步这一节解决“权重跑不起来”。HF 格式权重要先拆成 demo 期望的分片格式再交给进程组启动。权重拆分重组cd inference python convert.py --hf-ckpt-path /path/to/DeepSeek-V3 \ --save-path /path/to/DeepSeek-V3-Demo \ --n-experts 256 --model-parallel 16--n-experts要等于模型专家数V3.1 配置为 256--model-parallel决定分片数必须与启动时的总卡数一致。configs/ 目录下另有 16B、236B、671B 三套参数单张 MI250 验证功能用 16B 档位即可。启动推理torchrun --nnodes 1 --nproc-per-node 8 generate.py \ --ckpt-path /path/to/DeepSeek-V3-Demo \ --config configs/config_v3.1.json \ --interactive --temperature 0.7 --max-new-tokens 200generate.py 支持两种模式--interactive进入交互式对话--input-file批量处理提示词文件。inference/configs/config_v3.1.json 的关键项是{ dtype: fp8, scale_fmt: ue8m0, n_routed_experts: 256, n_activated_experts: 8 }dtype: fp8是启用 FP8 推理的开关scale_fmt: ue8m0表示缩放因子只取 2 的幂次值简化量化计算后两项描述 MoE 专家结构。顺带一提关心长上下文质量的话项目 NIAH大海捞针测试显示 128K 上下文中全程满分建议启动报错先核对 convert 的分片数与--nproc-per-node是否一致这是最高频的原因。⚠️ 排错与显存调优三类易踩坑位的快速修法这一节汇总最常见的三种故障现象给出固定排查顺序现象处理方式Triton kernel 编译失败确认 triton 3.0.0 为 ROCm 构建检查torch.version.hip输出是否为 None加载 FP8 权重报scale_inv相关错误检查权重目录中对应_scale_inv张量是否缺失重新跑转换脚本补齐显存溢出 (OOM)调低 config 中n_activated_experts减少每层激活参数或改用多卡分片多卡启动仍用 generate.py区别只在分片数WORLD_SIZE16 torchrun --nproc-per-node 8 generate.py \ --ckpt-path /path/to/DeepSeek-V3-Demo \ --config configs/config_v3.1.json --interactive收个尾ROCm 5.7 与锁死的四个依赖版本是环境前提用torch.version.hip验证 ROCm 构建权重链路是“convert 拆格式 fp8_cast_bf16 反量化”两步后者仅在需要 BF16 对照时执行MI250 上 FP8 带来 1.84 倍生成速度、显存接近减半余量可换更大 batch。下一步demo 速度不满足服务要求时可参考仓库 AMD GPU 一节改用 SGLang 或 vLLM 部署两者在 AMD 上均支持 FP8先跑一条不同序列长度的吞吐曲线再决定调优方向。更多细节见仓库 README.md。【免费下载链接】DeepSeek-V3项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-V3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考