python transpose Python transpose玩不转?这包不装,你的代码只能原地转圈圈
需要找到与你当前机器对应的包
#设置需要安装的路径
export INSTALL_PATH=/usr/local/Ascend
./Ascend-cann-toolkit*run --install-path=$INSTALL_PATH --full --quiet
./Ascend-cann-A3*run --install-path=$INSTALL_PATH --install --quiet
source $INSTALL_PATH/ascend-toolkit/set_env.sh
编译自定义算子包
接下来, 要进行安装算子包的操作, 这个算子包所包含的是高性能GDN算子, 而在此处, 需要用到的是三方库fla-npu。
下载地址为
# 编译命令,注意--soc=${soc_version}需要指定为当前机器的芯片类型
bash build.sh --soc=ascend910_93 --pkg --ops=chunk_bwd_dv_local,chunk_bwd_dqkwg,chunk_gated_delta_rule_bwd_dhu,prepare_wy_repr_bwd_da,prepare_wy_repr_bwd_full,chunk_fwd_o,chunk_gated_delta_rule_fwd_h,recurrent_gated_delta_rule,recompute_wu_fwd
# 安装run包
./build_out/cann-ops-transformer-custom_linux-aarch64.run
框架编译构建
下载并安装对应和torch版本的最新发行版
需要获取26.1 beta及以后的版本
编译torch适配whl包并安装
cd torch_custom/fla_npu
bash build.sh
算子接入
Qwen3.5里面涉及的算子数量众多, 对于基于传统的非线性层以及整网耗时占比较小的那些成熟算子, 这里就不多说了, 仅仅讲解下在新结构情形下的中重型算子。
重点算子列表
推理-场景/训练-前向场景
推理使用的算子, 跟训练前向场景所运用的算子是一样的, 总共涉及7个融合算子, 具体如下表所示:
推理-场景
训练-反向场景
反向场景中包含较多前向算子,这里只单独提及仅反向涉及的算子
模块-GDN接入实践
在接入GDN算子以前, 先讲清楚我们为追求极致性能所做的一些小设计。若要获取到完整的性能收益, 接入GDN算子得留意以下两件事情。
模型里传递的默认, 全都是定长的BSH, 还有变长的TND, 对于GDN而言, 读写动作会跨越超越高N维, 致使访存效率下降。GDN算子数量众多, 其开销会比访存效率降低的代价要低, 所以在本篇文章里推荐的GDN算子统一采用了NTD或者BNSD的特殊方式。为了削减这样引入的开销, 我们在GDN预处理算子的前反向达成默认到特殊的转变, 所有的GDN算子都使用统一的特殊方式, GDN流程中不存在变动。
对于要达成更优的、更为严谨的负载均衡而言, C算子的host阶段应当获取到, 与此同时, 这还能够助力我们拦截掉一部分索引有误的问题。所以, C GDN算子的输入是list(在host上), 然而GDN算子都是(上)。其物理意义是组batch逻辑, 这便意味着45个线性层里所有的GDN算子需要同一份输入。我们需要从一开始就在和host上各存储一份, 借此使得每个训练step或者每个完整任务仅仅进行一次h2d。
接入代码示例:
FFN模块-/接入实践
和算子用以替换Moe层里的通信算子, 通信算子关联H/D同步, 致使耗时偏长。使用及替换之后, 专家路由结果的处理, 下沉至上, 消除了Host与同步开销。历经多个迭代的演进, 和算子运用了AIV驱动ROCE能力, 还叠加了通信数据去重, 机内机间流水并行等优化办法, 在典型场景当中, 模型吞吐性能提高了50%。
算子输入相对简单, 模型方面, 只需把数据 x 当作输入, 还要将前级门控网络挑选出的 topk 个专家索引作为输入, 同时提供 moe 专家数、EP 通信域大小、rank ID 等属性就行。输出的数据、各个专家的 token 个数会直接给到后级 GMM。通信算法相关的辅助信息 ine, 会由输出直接传递过去, 模型侧不用去在意。
算子接口参数详细说明、调用示例可参考接口文档:
:
:
优化结果
在输入规模为bs等于 64, 等于 1k, 等于 32 这样的场景当中, 重点之 GDN 算子的优化效果呈现出如下的情况:
耗时平均缩短为原始算子的44%。
处于输入规模为 ep64 的那种情况下, bs 的值是 32, 还有等于 1, 等于 7k, topk 为 8 的这般场景里, /算子的优化效果呈现出如下的状况:

耗时平均缩短为基线方案的43%。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐


所有评论(0)