ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

DeepSeek-V3 本地部署实战:三步把 671B 参数模型跑起来

DeepSeek-V3 本地部署实战:三步把 671B 参数模型跑起来 DeepSeek-V3 本地部署实战三步把 671B 参数模型跑起来【免费下载链接】DeepSeek-V3项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-V3总参数 671B每个 token 实际只激活 37B——这是 DeepSeek-V3 本地部署的起点也是好消息它的算力开销接近一个 37B 的稠密模型而不是 671B。本文以官方开源仓库为底把从 FP8 权重转换、框架选型到启动推理、验证结果的完整路径走一遍重点回答三个问题你的卡该配多少、量化路线怎么选、跑起来之后如何确认是对的。先看清三个绕不开的坎在动手之前你可能正卡在这几个地方权重格式不是你想的那种。官方只发布 FP8 权重Hugging Face 上总计 685B 参数含 671B 主模型 14B MTP 模块。但不少框架的量化流水线、以及你想做的精度实验输入都是 BF16。你手里没有BF16 权重这个现成文件。不知道硬件底线在哪。671B 参数听起来需要十几张 80G 卡但 MoE 结构下每个 token 只走 8 个专家共 256 个路由专家 1 个共享专家激活参数只有 37B。存储看 671B计算看 37B——这两个数字分开算很多估不出来的部署需求就出来了。框架太多不知道选谁。SGLang、LMDeploy、TRT-LLM、vLLM、LightLLM、官方 demo……每个都声称支持 DeepSeek-V3区别藏在 FP8/INT8/INT4 支持程度、并行方式和显卡适配里。改造前 vs 改造后这张表能帮你少绕弯路维度了解机制之前按本文路径之后权重只有 FP8 文件不知从何下手一条命令转 BF16机制清楚硬件671B 是不是要 16 张 80G存储按 671B 算、计算按 37B 算分框架给出卡数量化不知道 INT4/8 在哪做明确到 TRT-LLM 的 weight-only 路线验证跑通就算完interactive 批量文件双重自检一个类比帮你建立直觉官方 FP8 权重就像带压缩比对照表的压缩文件——每块权重旁挂着一个scale_inv缩放因子在 inference/configs/config_v3.1.json 中可以看到dtype: fp8, scale_fmt: ue8m0的配置。仓库里的转换脚本干的事就是解包拿 FP8 数值乘回缩放因子还原成 2 字节的 BF16。至于 INT8/INT4 量化则相当于再降一档码率——这一步不在本仓库里做而是交给 TRT-LLM 这类框架在部署时完成。上手路径三个里程碑每步都有最小命令里程碑 1克隆仓库固定依赖版本git clone https://gitcode.com/GitHub_Trending/de/DeepSeek-V3 cd DeepSeek-V3/inference pip install -r requirements.txtrequirements.txt锁死了四个版本torch 2.4.1 / triton 3.0.0 / transformers 4.46.3 / safetensors 0.4.5。FP8 反量化 kernel 和 Triton 版本强绑定不锁版本是后面踩坑的大头。注意官方 demo 仅支持 Linux Python 3.10Mac/Windows 不适用。里程碑 2把 FP8 权重转成 BF16python fp8_cast_bf16.py \ --input-fp8-hf-path /path/to/fp8_weights \ --output-bf16-hf-path /path/to/bf16_weights它做了什么遍历所有 safetensors 分片对每个 1 字节FP8的张量找到同名_scale_inv因子做乘回反量化核心逻辑见 inference/fp8_cast_bf16.py 第 74-88 行非 FP8 张量原样保留最后重写 model index 删掉 scale 条目。脚本内置了显存管理——同一时刻只保留 2 个分片在显存里1.3TB 级别的转换不会 OOM。为什么必须先转 BF16如果你的目标是做 INT8/INT4 量化或喂给要求 BF16 输入的框架FP8scale 的混合格式无法直接进量化流水线先解包成标准 BF16后面的工具链才能无缝衔接。里程碑 3选择一条路把模型跑起来路径 A官方 demo想读懂参考实现、有 2 机 × 8 卡# 第一步把 HF 格式权重切成推理格式--model-parallel 16 表示切给 16 张卡 python convert.py --hf-ckpt-path /path/to/DeepSeek-V3 \ --save-path /path/to/DeepSeek-V3-Demo \ --n-experts 256 --model-parallel 16 # 第二步双机张量并行启动--node-rank/--master-addr 按实际节点填写 torchrun --nnodes 2 --nproc-per-node 8 --node-rank $RANK --master-addr $ADDR \ generate.py --ckpt-path /path/to/DeepSeek-V3-Demo \ --config configs/config_671B.json \ --interactive --temperature 0.7 --max-new-tokens 200--model-parallel 16必须和 torchrun 的总卡数2×8严格一致否则切分后的model{rank}-mp{world_size}.safetensors对不上号。启动后 inference/generate.py 会先生成 2 个 token 做预热自检再进入--interactive对话加--input-file $FILE则改为批量推理模式。路径 B生产框架推荐官方 demo 定位是参考实现生产服务建议直接上框架pip install sglang # 或 pip install lmdeploy启动命令因框架而异以 README 第 6 章6.2 SGLang / 6.3 LMDeploy给出的示例为准。选型逻辑见下文决策矩阵。自我验证上线前确认两件事交互模式下随便问一句比如让它自我介绍检查输出是否连贯、无乱码 token——权重加载正确性靠这个兜底。用--input-file跑 3-5 条固定 prompt 的批量任务对比不同框架/精度下的输出稳定性。批量模式不依赖交互最适合做回归测试。效果与取舍存储、算力以及你会失去什么四种精度路线的存储账按参数量折算的理论权重存储不含 KV cache 与运行时开销精度路线权重存储约说明FP8 原生官方默认~685GB含 14B MTP 模块单字节/参数BF16转换后~1.34TB2 字节/参数671B 主模型INT8 weight-only~0.67TB 缩放因子激活仍用高精度精度损失小INT4 weight-only~0.34TB 缩放因子压缩极限长尾分布层误差更明显结论先说FP8 已经是官方出厂状态存储上无需牺牲转 BF16 是变胖不是变瘦它服务于量化流水线和特定框架INT8/INT4 才是真正省显存的路线但 671B 的 INT4 权重也要约 340GB——省的是卡的数量级不是一张消费卡。DeepSeek-V3 在各基准上的表现官方数据37B 激活参数下MMLU 87.1%、HumanEval 65.2%、MATH 61.6%在开源模型里处于第一梯队。也就是说量化压缩省下的显存换回来的是一个能力接近旗舰闭源模型的底座。长上下文128K 是模型能力不是部署配置DeepSeek-V3 支持 128K 上下文大海捞针测试在全长度范围内表现稳定官方图见下。对部署者的实际含义长上下文主要吃KV cache而不是权重显存SGLang 等框架提供的 FP8 KV cache 是比降量化精度更优先的显存优化项。诚实的局限本仓库不包含量化代码INT4/INT8 由 TRT-LLM 等外部框架完成仓库只提供权重转换和参考推理实现。官方 demo 的 16 卡门槛对多数团队过高它价值在于可读的参考实现MLA、DeepSeekMoE 的完整代码在 inference/model.py。MTP14B 参数模块的投机解码支持仍在社区开发中这部分权重当前主要占存储不产生推理收益。HuggingFace Transformers 尚未直接支持不要指望from_pretrained一把梭。框架怎么选一张决策矩阵你的处境推荐路线关键原因8×80G H 系卡要最高吞吐SGLang FP8 原生权重MLA 优化、DP Attention、FP8 KV cache 最全想降存储上 INT4/INT8TRT-LLM明确支持 INT4/INT8 weight-onlyFP8 支持在路上多机拼接、卡型不一vLLM流水线并行PPFP8/BF16AMD GPUSGLangDay-one 支持BF16/FP8 双模式昇腾 NPUMindIEINT8/BF16 已适配纯学习、读懂实现官方 inference demotorchrun 16 卡参考实现避坑清单与进阶方向四个高频坑环境坑demo 只认 Linux Python 3.10A100 等老卡无 FP8 算力直接走 BF16 或 TRT-LLM 的 INT8 路线。scale_inv 缺失fp8_cast_bf16.py遇到缺失缩放因子的权重会打印 Warning 并原样跳过。跑完后如果警告成批出现优先怀疑权重下载不完整。切分数与卡数不匹配convert.py --model-parallel N必须等于torchrun总进程数换卡数就要重新 convert。config 与模型错配inference/configs/ 下有 16B/236B/671B/v3.1 四份配置加载哪个模型就选哪份 json错配会在加载权重时报张量形状错误。跑通之后的三个进阶方向MTP 投机解码多 token 预测模块本来是训练目标顺带可用作推理加速各框架支持进度值得关注。KV cache 精度比降权重精度收益更直接——开启 FP8 KV cache 后长上下文的显存曲线明显改善。混合量化注意力层保 INT8、FFN 层压 INT4 的差异化策略适合对代码生成等敏感任务做精度-显存折中。完整的本地部署方式SGLang/LMDeploy/TRT-LLM/vLLM/LightLLM/AMD/昇腾八条路线以 README.md 第 6 章为准本文路径与之一一对应。【免费下载链接】DeepSeek-V3项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-V3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表