GLM-5 Inference on NPU【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer概述智谱团队发布了最新的模型GLM-5本样例基于GLM-5开源代码进行迁移并在CANN平台上完成对应的优化适配可在华为 Atlas A3 集群上运行起来。GLM-5 模型结构与 DeepSeek-V3.2-Exp 保持一致本样例的并行策略与性能优化方案均沿用 DeepSeek-V3.2-Exp。详细方案请参考NPU DeepSeek-V3.2-Exp推理优化实践。硬件要求产品型号Atlas A3 系列操作系统Linux ARM镜像版本cann8.5_pt2.8.0_glm_aarch_image_v0.1.tar驱动版本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下载权重智谱团队开源了GLM-5模型的Bfloat16与FP8两种格式权重, 可按需选择下载。下载GLM-5原始Bfloat16权重并上传到Atlas A3各节点某个固定的路径下比如/data/models/GLM-5。下载GLM-5原始FP8权重并上传到Atlas A3各节点某个固定的路径下比如/data/models/GLM-5-FP8。获取 docker 镜像从ARM镜像地址中下载 docker 镜像然后上传到A3服务器的每个节点上并通过命令导入镜像docker load -i cann8.5_pt2.8.0_glm_aarch_image_v0.1.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.8.0_glm_aarch_image:v0.1 /bin/bash在各个节点上通过如下命令进入容器docker attach cann_recipes_infer cd /home/code/cann-recipes-infer/models/glm-5转换权重在各个节点上使用weight_convert.sh脚本完成FP8到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权重转换拉起示例# 转换为W8A8C16权重 bash utils/weight_convert.sh --input_fp8_hf_path /data/models/GLM-5-FP8 --output_hf_path /data/models/GLM-5-W8A8 --quant_mode w8a8c16修改代码修改cann-recipes-infer/executor/scripts/set_env.sh中的如下字段:export IPs(xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx) # 所有节点的IP确保第1个IP是master多个节点的ip通过空格分开 cann_pathyour_cann_pkgs_path # CANN软件包安装路径镜像默认CANN包路径为/usr/local/Ascend/ascend-toolkit/latest在各个节点上修改config/路径下需要执行的yaml文件中的model_path路径。关于YAML文件中的更多配置说明可参见YAML参数描述。# W8A8 model_path: /data/models/GLM-5-W8A8在各个节点上修改 infer.sh 文件中的YAML_FILE_NAME指定为上一步需要执行的yaml文件名。默认的yaml路径为32卡推理。# W8A8 prefill export YAML_FILE_NAMEglm_5_rank_64_64ep_w8a8_prefill_benchmark.yaml # W8A8 decode export YAML_FILE_NAMEglm_5_rank_128_128ep_w8a8_decode_benchmark.yamlNote: 本样例Int8场景Prefill支持8-128卡Decode支持8-128卡可分别在config下的yaml文件中修改world_size配置。拉起多卡推理在各个节点上同步执行如下命令即可拉起多卡推理任务。bash infer.shBenchmark基于Atlas A3本实践使用config/glm_5_rank_128_128ep_w8a8_decode_benchmark.yaml作为运行配置文件对GLM-5 W8A8 量化版本进行了性能Benchmark测试。 |Quant Mode| Global Batch Size | Seq Length | Chips | TPOT (ms) | Throughput (tokens/p/s) | |-------| ----------------- | ---------- | ----- | --------- | ----------------------- | |W8A8 | 256 | 65536 | 64 | 22.54 |177.46 |注性能数据基于 MTP3 与 perfect eplb 配置采集平均 3 个 draft token 中 accept token 为 1.44 个。附录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),仅供参考