当前位置: 首页 > article >正文

cann/cann-recipes-infer DeepSeek-R1推理优化

DeepSeek-R1或Kimi-K2模型在NPU实现高性能推理【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer概述DeepSeek-R1和Kimi-K2都是2025年开源的大语言模型二者结构类似代码可以复用。本样例基于Deepseek开源代码进行迁移并完成对应的优化适配。支持的产品型号Atlas A3 系列产品环境准备安装CANN软件包。本样例的编译执行依赖CANN开发套件包cann-toolkit与CANN二进制算子包cann-kernels支持的CANN软件版本为CANN 8.5.0。请从软件包下载地址下载Ascend-cann-toolkit_${version}_linux-${arch}.run与Ascend-cann-A3-ops_version_linux-arch.run软件包并参考CANN安装文档进行安装。${version}表示CANN包版本号如8.5.0。${arch}表示CPU架构如aarch64、x86_64。安装Ascend Extension for PyTorchtorch_npu。Ascend Extension for PyTorchtorch_npu为支撑PyTorch框架运行在NPU上的适配插件本样例支持的Ascend Extension for PyTorch版本为v7.3.0PyTorch版本为2.8.0。 请从软件包下载地址下载torch_npu-2.8.0.post2-cp311-cp311-manylinux_2_28_${arch}.whl安装包参考torch_npu安装文档进行安装。${arch}表示CPU架构如aarch64、x86_64。下载项目源码并安装依赖的python库。# 下载项目源码以master分支为例 git clone https://gitcode.com/cann/cann-recipes-infer.git # 安装依赖的python库仅支持python 3.11 cd cann-recipes-infer pip3 install -r ./models/deepseek_r1/requirements.txt配置样例运行所需环境信息。修改executor/scripts/set_env.sh中的如下字段:IPs配置所有节点的IP按照rank id排序多个节点的ip通过空格分开例如(xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx)。cann_path: CANN软件包安装路径例如/usr/local/Ascend/ascend-toolkit/latest。说明HCCL相关配置如HCCL_SOCKET_IFNAME、HCCL_OP_EXPANSION_MODE可以参考集合通信文档并在executor/scripts/function.sh中自定义配置。权重准备请根据所使用的模型类型自行下载原始权重到本地路径例如/data/models/origin/。Deepseek-R1与Kimi-K2的原始权重下载地址如下Deepseek-R1权重Kimi-K2权重权重转换在各个节点上使用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权重适用于DeepSeek-R1和Kimi-K2。 bash utils/weight_convert.sh --input_fp8_hf_path /data/models/origin/DeepSeek-R1-FP8 --output_hf_path /data/models/origin/DeepSeek-R1-Bfloat16 --quant_mode bfloat16 # 转换为W8A8C16权重适用于DeepSeek-R1和Kimi-K2。 bash utils/weight_convert.sh --input_fp8_hf_path /data/models/origin/DeepSeek-R1-FP8 --output_hf_path /data/models/origin/DeepSeek-R1-W8A8C16 --quant_mode w8a8c16 # 转换为W8A8C8权重仅适用于DeepSeek-R1。 bash utils/weight_convert.sh --input_fp8_hf_path /data/models/origin/DeepSeek-R1-FP8 --output_hf_path /data/models/origin/DeepSeek-R1-W8A8C8 --quant_mode w8a8c8注意仅DeepSeek-R1支持转W8A8C8权重。推理执行配置推理执行需要加载的权重文件以及YAML文件。修改YAML文件中model_path参数。关于YAML文件中的更多配置说明可参见YAML参数描述。在models/deepseek_r1/config目录下已提供了较优性能的YAML样例供您参考您可以根据模型类型、集群规模以及量化类型选择对应的YAML文件本文以models/deepseek_r1/config/decode_r1_rank_16_16ep_a8w8.yaml文件为例修改其中的model_path参数将其设置为权重转换阶段准备好的权重文件存储路径例如/data/models/origin/DeepSeek-R1-W8A8。修改models/deepseek_r1/infer.sh脚本中YAML_FILE_NAME参数。将YAML_FILE_NAME设置为config文件夹下YAML文件名称例如decode_r1_rank_16_16ep_a8w8.yaml。准备输入prompt。使用内置prompt。本样例已在dataset/default_prompt.json中内置了输入prompt若您直接使用内置prompt本步骤可直接跳过。当然您也可以在dataset/default_prompt.json文件中自定义prompt输入。使用长序列prompt。本样例默认使用内置prompt若您需要使用长序列prompt可以选择LongBench数据集或者InfiniteBench数据集。需要执行以下操作修改YAML文件中的dataset参数将其修改为dataset: LongBench/dataset: InfiniteBench使用LongBench数据集或InfiniteBench数据集作为长序列prompt。若您选择LongBench数据集且机器无法联网需要您从huggingface手动下载数据集至dataset/LongBench目录下LongBench文件夹需手工创建目录中包含LongBench.py和data目录并需要在LongBench.py中修改数据集加载路径若您的机器可正常联网样例执行过程中会自动在线读取LongBench数据集您无需手工下载。若您选择InfiniteBench数据集需要从链接中下载长序列输入数据集longbook_qa_eng并上传到各个节点上新建的路径 dataset/InfiniteBench下。mkdir -p dataset/InfiniteBench说明在使用LongBench/InfiniteBench数据集或其他自定义数据集时默认执行文本摘要任务可在cann-recipes-infer/executor/utils/data_utils.py的build_dataset_input函数里修改默认的system prompt。长序列请求执行中若出现out of memory问题可参见附录中的长序列请求out of memory问题处理。执行推理脚本。cd models/deepseek_r1 bash infer.sh说明如果是多机环境需要在每个节点上执行。优化点参考本样例prefill阶段采用的详细优化点介绍可参见基于Atlas A3集群的DeepSeek-R1模型prefill阶段推理性能优化实践。本样例decode阶段采用的详细优化点介绍及性能Benchmark可参见基于Atlas A3集群的DeepSeek-R1模型decode阶段推理性能优化。Benchmark基于Atlas A3本实践使用config/decode_r1_rank_128_128ep_a8w8c8_mtp_benchmark.yaml作为运行配置文件对DeepSeek-R1 W8A8C8 量化版本进行了性能Benchmark测试。 |Quant Mode| Global Batch Size | Seq Length | Chips | TPOT (ms) | Throughput (tokens/p/s) | |-------| ----------------- | ---------- | ----- | --------- | ----------------------- | |W8A8C8 | 6144 | 4096 | 64 | 44.9 |2138 |注性能数据基于 MTP1 与 perfect eplb 配置采集平均 1 个 draft token 中 accept token 为 0.7 个。附录常见问题处理长序列请求out of memory问题处理长序列请求可能导致device内存out of memory尤其是在prefill阶段:Attention的Softmax操作通常为float32计算其内存大小为batch_size * num_heads * q_s * kv_s * (2Bytes 4Bytes)。MoE的Routing分发可能存在极端负载不均导致个别卡上的grouped_matmul算子占用较大内存。为了缓解这两处峰值带来的OOM问题可分别采用以下方法使能Paged Attention进行内存管理并调用Flash Attention融合算子算子内会切块计算Attention避免了q_s * kv_s的峰值内存产生。Prefill内存通常与batch_size大小成正比当decode需要推理的global batch size过大时prefill可能会由于OOM而无法在一轮推理中处理完所有的batch因此我们可进行多次小batch串行推理从而降低峰值内存。当前executor-core的prefill默认采用packed sequence执行可通过配置YAML中的max_prefill_tokens限制单次prefill batch的总prompt token数从而控制prefill阶段的峰值内存。为了缓解MoE负载不均带来的峰值内存我们可进行Chunk MoE推理即在MoE切Chunk串行推理降低极端场景下的峰值内存可通过YAML中的moe_chunk_max_len开关设置chunk的大小。当前该开关只针对prefill生效开启后由于MoE部分将串行计算各chunk会对prefill的性能产生相应的影响。【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

cann/cann-recipes-infer DeepSeek-R1推理优化

DeepSeek-R1或Kimi-K2模型在NPU实现高性能推理 【免费下载链接】cann-recipes-infer 本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-infer 概述 DeepSeek-R1和Kim…...

基于LangChain.js与Azure构建企业级RAG聊天应用实战指南

1. 项目概述:构建一个基于LangChain.js的RAG聊天应用 如果你正在寻找一个能快速上手的、企业级的AI聊天应用模板,这个项目绝对值得你花时间研究。它不是一个简单的“Hello World”示例,而是一个完整的、生产就绪的解决方案,展示了…...

长期项目使用Taotoken按Token计费带来的成本可控性体验

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期项目使用Taotoken按Token计费带来的成本可控性体验 在中长期AI应用项目的开发与维护过程中,成本管理是一个贯穿始终…...

CANN/shmem Root Info工具指南

Root Info Generate 工具 - 用户指南 【免费下载链接】shmem CANN SHMEM 是面向昇腾平台的多机多卡内存通信库,基于OpenSHMEM 标准协议,实现跨设备的高效内存访问与数据同步。 项目地址: https://gitcode.com/cann/shmem 概述 root_info_generat…...

OpenClaw-Lightcone插件:为AI智能体赋予云端计算机操作能力

1. 项目概述:当AI智能体获得“云端之手” 如果你正在探索AI智能体(Agent)的边界,尤其是如何让它们像真人一样操作电脑、浏览网页、处理数据,那么你很可能已经遇到了一个核心瓶颈: 环境依赖 。传统的浏览…...

【收藏备用】2026年版|普通人程序员如何快速切入AI行业?破除焦虑,找对落地路径

这篇文章想聊清楚一个所有小白和程序员都关心的现实问题:在AI热潮席卷各行各业的2026年,普通人到底该怎么切入AI行业、学好大模型? 如果你最近也在焦虑、在内耗,看着每天冒出的AI新工具、新概念,不知道该学什么、不知道…...

动态域名解析工具diny:基于Cloudflare API的轻量级DDNS解决方案

1. 项目概述:一个轻量级、可定制的动态域名解析工具最近在折腾个人服务器和家庭网络服务时,我又一次被动态公网IP的问题给绊住了。相信很多自己搭网站、建NAS或者跑一些自研服务的朋友都深有体会:运营商给的公网IP说变就变,一旦IP…...

如何搭建个人游戏云:Sunshine串流服务器完全指南

如何搭建个人游戏云:Sunshine串流服务器完全指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器,专为Moonlight…...

35岁转行AI,社恐杨老师教你如何在大模型时代找到自己的坐标(收藏版)

本文分享了AI开发者“社恐杨老师”的真实故事,他35岁从化学工程转向AI领域,通过自学补齐机器学习底层数学,并成功将AI技术落地企业真实场景。文章核心内容包括:从AI 1.0到AI 2.0,技术会变但“寻找有效需求”是长期不变…...

CANN/asc-tools msobjdump工具

msobjdump 【免费下载链接】asc-tools Ascend C Tools仓是CANN基于Ascend C编程语言推出的配套调试工具仓。 项目地址: https://gitcode.com/cann/asc-tools 概述 本工具主要针对生成的算子ELF文件(Executable and Linkable Format)提供解析和解…...

完全掌握Blender插件:5大实战技巧高效处理虚幻引擎PSK/PSA格式

完全掌握Blender插件:5大实战技巧高效处理虚幻引擎PSK/PSA格式 【免费下载链接】io_scene_psk_psa A Blender extension for importing and exporting Unreal PSK and PSA files 项目地址: https://gitcode.com/gh_mirrors/io/io_scene_psk_psa io_scene_psk…...

EFGP查提交申请记录

select serialNumber,processInstanceName, subject, (case when currentState1 then 進行中 when currentState3 then 已結案 when currentState4 then 已撤銷 when currentState0 then 未開始 else 已暫停 end) from ProcessInstance(nolock) where left(serialNumber,4)L…...

CANN竞赛Add算子测试设计

决赛题目:Add 算子测试用例设计 【免费下载链接】cann-competitions 本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。 项目地址: https://gitcode.com/cann/cann-competitions 任务说明 本题目要求参赛者为 CANN …...

Java基础十六:枚举,包,反射

一、枚举(Enum) 1. 什么是枚举 枚举是一种特殊的类,用于定义一组固定的常量。 2. 基本用法 // 最简单的枚举 public enum Season {SPRING, SUMMER, AUTUMN, WINTER }// 使用枚举 public class TestEnum {public static void main(String[…...

如何彻底解决显卡驱动冲突问题:Display Driver Uninstaller深度解析与实战指南

如何彻底解决显卡驱动冲突问题:Display Driver Uninstaller深度解析与实战指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/displ…...

论文阅读:MMA: Multi-Modal Adapter for Vision-Language Models

MMA:视觉语言模型的多模态适配器,主要用于改善文本与视觉分支表示之间的对齐,先分析 CLIP 不同层特征的“判别性 / 泛化性”,再只在高层插入一个带共享投影层的多模态适配器,让视觉和文本分支在学习任务特异知识的同时…...

华为CANN/ops-math反射填充3D梯度算子

ReflectionPad3dGrad 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推…...

OnmyojiAutoScript:阴阳师手游智能自动化脚本终极指南

OnmyojiAutoScript:阴阳师手游智能自动化脚本终极指南 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 阴阳师手游的日常任务繁重,从御魂副本到百鬼夜行&a…...

从入门到精通:彻底讲懂Agent的Skill,不做“炫技式浪费”

写在前面 现在做Agent,有一个非常典型的误区: 👉 Skill越多 Agent越强 于是开始疯狂堆Skill、堆工具、堆能力。 结果是什么? • Token飞速消耗• 调用混乱• 成本暴涨• 但任务反而做不好 本质上,这不是“在做A…...

Ceph 对象存储深度解析系列 第二部分:RGW 数据路径、分片和自动化

新钛云服已累计为您分享896篇技术干货简介在本深度解析的第一部分中,我们剖析了 Ceph RGW 内部的高性能请求路径。我们涵盖了其无状态前端、基础 RADOS 存储池以及关键的桶索引,揭示了动态分片如何使单个桶内的对象列表实现几乎无限的可扩展性。我们确立…...

Godot引擎集成本地大语言模型:从原理到实战的完整指南

1. 项目概述:在Godot引擎中集成本地大语言模型 如果你是一名游戏开发者,最近肯定没少听说AI在游戏开发中的应用。从自动生成对话到设计游戏机制,大语言模型(LLM)展现出的潜力让人兴奋。但一提到实际集成,很…...

联邦学习与Transformer融合:在CV与入侵检测中的隐私保护分布式智能实践

1. 项目概述与核心价值最近几年,我一直在关注一个技术交叉点:如何让模型在“看不见”彼此数据的情况下,还能协同进化,变得更聪明。这听起来有点像天方夜谭,但在数据隐私法规日益收紧、数据孤岛问题愈发严重的今天&…...

CANN/metadef Add函数API文档

Add 【免费下载链接】metadef Ascend Metadata Definition 项目地址: https://gitcode.com/cann/metadef 函数功能 新增一个ContinuousVector元素&#xff0c;其中新增ContinuousVector元素的容量为inner_vector_capacity。 函数原型 template<typename T> Con…...

【路径规划】基于启发式搜索与增量启发式搜索方法MRPP或MAPF的多机器人路径规划算法附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。&#x1f34e;完整代码获取 定制创新 论文复现点击&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f3…...

Parquet文件原理与实战:列式存储如何提升查询性能和压缩效率

1. 什么是Parquet文件&#xff1f;一个数据工程师每天都在用、却很少被真正讲透的底层逻辑Parquet不是一种“新潮技术”&#xff0c;它更像是一把被磨得锃亮的瑞士军刀——没有炫目的UI&#xff0c;不靠营销话术&#xff0c;但只要你在处理超过百万行的数据、写过哪怕一条SELEC…...

VLA-0视觉语言动作模型:零修改部署与多模态AI实践

1. 项目概述VLA-0是一种突破性的视觉语言动作模型&#xff0c;它最大的特点在于实现了"开箱即用"的零修改部署能力。作为一名长期关注多模态AI发展的从业者&#xff0c;我首次接触到这个模型时就被它的设计理念所震撼——传统视觉语言模型往往需要针对特定任务进行繁…...

CANN/ops-math矩阵乘法压缩反量化算子

aclnnMatmulCompressDequant 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库&#xff0c;实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math &#x1f4c4; 查看源码 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DTAt…...

CANN KV压缩Epilog算子

custom-npu_kv_compress_epilog 【免费下载链接】cann-recipes-infer 本项目针对LLM与多模态模型推理业务中的典型模型、加速算法&#xff0c;提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-infer 产品支持情况 产品是否支持Ascend 950…...

SQL PIVOT原理与实战:从行转列到高性能宽表生成

1. 项目概述&#xff1a;从“行变列”开始&#xff0c;真正搞懂SQL PIVOT不是语法糖&#xff0c;而是数据思维的分水岭你有没有遇到过这样的报表需求&#xff1a;销售表里每条记录是一笔订单&#xff08;客户名、产品名、金额、日期&#xff09;&#xff0c;但老板要的却是“每…...

CANN/asc-tools msopgen算子模板样例

【免费下载链接】asc-tools Ascend C Tools仓是CANN基于Ascend C编程语言推出的配套调试工具仓。 项目地址: https://gitcode.com/cann/asc-tools msopgen使用新自定义算子工程模板样例 概述 本样例介绍msopgen工具按照新算子工程模板生成新自定义算子工程。以AddCust…...