NPU平台DeepSeek-V3.2推理
DeepSeek-V3.2-Exp Inference on NPU【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer概述DeepSeek团队发布了最新的模型DeepSeek-V3.2-Exp在各项指标上都达到了SOTA水平。本样例基于DeepSeek开源代码进行迁移并在CANN平台上完成对应的优化适配可在华为 Atlas A3 集群上运行起来。本样例的并行策略和性能优化点详细介绍可参见NPU DeepSeek-V3.2-Exp推理优化实践。硬件要求产品型号Atlas A3 系列操作系统Linux ARM镜像版本cann8.5_pt2.6.0_dsv3.2_aarch_image:v0.7驱动版本Ascend HDK 25.2.0npu-smi info 检查Ascend NPU固件和驱动是否正确安装。如果已安装通过命令npu-smi info确认版本是否为 25.2.0。如果未安装或者版本不是 25.2.0请先下载固件和驱动包然后根据指导自行安装。快速启动下载源码在各个节点上执行如下命令下载 cann-recipes-infer 源码。mkdir -p /home/code; cd /home/code/ git clone https://gitcode.com/cann/cann-recipes-infer.git cd cann-recipes-infer下载数据集从链接中下载长序列输入数据集longbook_qa_eng并上传到各个节点上新建的路径 dataset/InfiniteBench下。mkdir -p dataset/InfiniteBench下载权重下载DeepSeek-V3.2-Exp原始fp8权重并上传到Atlas A3各节点某个固定的路径下比如/data/models/DeepSeek-V3.2-Exp-fp8。获取 docker 镜像从ARM镜像地址中下载 docker 镜像然后上传到A3服务器的每个节点上并通过命令导入镜像docker load -i cann8.5_pt2.6.0_dsv3.2_aarch_image_v0.7.tar。拉起 docker 容器在各个节点上通过如下脚本拉起容器默认容器名为 cann_recipes_infer。注意需要将权重路径和源码路径挂载到容器里。docker run -u root -itd --name cann_recipes_infer --ulimit nproc65535:65535 --ipchost \ --device/dev/davinci0 --device/dev/davinci1 \ --device/dev/davinci2 --device/dev/davinci3 \ --device/dev/davinci4 --device/dev/davinci5 \ --device/dev/davinci6 --device/dev/davinci7 \ --device/dev/davinci8 --device/dev/davinci9 \ --device/dev/davinci10 --device/dev/davinci11 \ --device/dev/davinci12 --device/dev/davinci13 \ --device/dev/davinci14 --device/dev/davinci15 \ --device/dev/davinci_manager --device/dev/devmm_svm \ --device/dev/hisi_hdc \ -v /home/:/home \ -v /data:/data \ -v /etc/localtime:/etc/localtime \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /etc/ascend_install.info:/etc/ascend_install.info -v /var/log/npu/:/usr/slog \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v /usr/local/dcmi:/usr/local/dcmi -v /usr/local/sbin:/usr/local/sbin \ -v /etc/hccn.conf:/etc/hccn.conf -v /root/.pip:/root/.pip -v /etc/hosts:/etc/hosts \ -v /usr/bin/hostname:/usr/bin/hostname \ --nethost \ --shm-size128g \ --privileged \ cann8.5_pt2.6.0_dsv3.2_aarch_image:v0.7 /bin/bash在各个节点上通过如下命令进入容器docker attach cann_recipes_infer cd /home/code/cann-recipes-infer/models/deepseek-v3.2-exp转换权重在各个节点上使用weight_convert.sh脚本完成FP8到Bfloat16/Int8权重转换。入参介绍input_fp8_hf_path原始fp8权重路径output_hf_path转换后输出的权重路径quant_mode量化模式如果权重转换的运行环境为NPU需要先执行cann_path/usr/local/Ascend/ascend-toolkit/latest # cann包安装路径 source ${cann_path}/bin/setenv.bash权重转换拉起示例# 转换为Bfloat16权重 bash utils/weight_convert.sh --input_fp8_hf_path /data/models/DeepSeek-V3.2-Exp-FP8 --output_hf_path /data/models/DeepSeek-V3.2-Exp-Bfloat16 --quant_mode bfloat16 # 转换为W8A8C16权重 bash utils/weight_convert.sh --input_fp8_hf_path /data/models/DeepSeek-V3.2-Exp-FP8 --output_hf_path /data/models/DeepSeek-V3.2-Exp-W8A8C16 --quant_mode w8a8c16 # 转换为W8A8C8权重 bash utils/weight_convert.sh --input_fp8_hf_path /data/models/DeepSeek-V3.2-Exp-FP8 --output_hf_path /data/models/DeepSeek-V3.2-Exp-W8A8C8 --quant_mode w8a8c8 # 转换为W4A8C8权重 bash utils/weight_convert.sh --input_fp8_hf_path /data/models/DeepSeek-V3.2-Exp-FP8 --output_hf_path /data/models/DeepSeek-V3.2-Exp-W4A8C8 --quant_mode w4a8c8修改代码在各个节点上修改 set_env.sh 文件中的IPs。export IPs(xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx) # 所有节点的IP确保第1个IP是master多个节点的ip通过空格分开在各个节点上修改 config/ 路径下需要执行的yaml文件中的model_path路径。关于YAML文件中的更多配置说明可参见YAML参数描述。# BF16 model_path: /data/models/DeepSeek-V3.2-Exp-Bfloat16 # W8A8C16 model_path: /data/models/DeepSeek-V3.2-Exp-W8A8C16 # W8A8C8 model_path: /data/models/DeepSeek-V3.2-Exp-W8A8C8在各个节点上修改 infer.sh 文件中的YAML_FILE_NAME指定为上一步需要执行的yaml文件名。默认的yaml路径为32卡推理。# BF16 prefill export YAML_FILE_NAMEdeepseek_v3.2_exp_rank_64_64ep_prefill_benchmark.yaml # BF16 decode export YAML_FILE_NAMEdeepseek_v3.2_exp_rank_128_128ep_decode_benchmark.yaml # W8A8C8 prefill export YAML_FILE_NAMEdeepseek_v3.2_exp_rank_64_64ep_w8a8c8_prefill_benchmark.yaml # W8A8C8 decode export YAML_FILE_NAMEdeepseek_v3.2_exp_rank_128_128ep_w8a8c8_decode_benchmark.yamlNote: 本样例BF16场景Prefill支持32-128卡Decode支持32-128卡Int8场景Prefill支持8-128卡Decode支持8-128卡可分别在config下的yaml文件中修改world_size配置。拉起多卡推理在各个节点上同步执行如下命令即可拉起多卡推理任务。bash infer.sh附录FAQHCCL_BUFFSIZE不足问题如果报错日志中出现关键字HCCL_BUFFSIZE is too SMALL, ..., NEEDED_HCCL_BUFFSIZE..., HCCL_BUFFSIZE200MB, ...可通过配置环境变量export HCCL_BUFFSIZE实际需要的大小解决所有Rank上的该环境变量需保持一致。HCCL_BUFFSIZE参数介绍可参考昇腾资料中的详细描述。自定义算子导入失败如果报错日志中出现类似关键字_OpNamespace custom object has no attribute可参考自定义算子指南编译所需算子。【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考