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

CANN技能并行层替换代码示例

并行层替换代码示例

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

API 差异:当前仓库的ColumnParallelLinear/RowParallelLinear/QKVParallelLinear使用tp_size: int+tp_rank: int参数(不接受tp_group)。以下示例中的tp_group=写法对应重构版 API;当前仓库需改为tp_rank=dist.get_rank(self.hccl_comm_dict["xxx_group"])VocabParallelEmbedding在两个版本中都用tp_size + tp_rank

Attention 层(当 attn_tp_size > 1)

原组件替换为通信组说明
QKV LinearQKVParallelLinearattn_tp_group列切分,Q/K/V 按头数分
O LinearRowParallelLinearattn_tp_group行切分,含 AllReduce
from module.linear import QKVParallelLinear, RowParallelLinear # QKV 投影 self.qkv_proj = QKVParallelLinear( hidden_size=config.hidden_size, num_heads=config.num_attention_heads, num_key_value_heads=config.num_key_value_heads, head_dim=config.head_dim, tp_group=self.attn_tp_group, tp_size=self.attn_tp_size, ) # O 投影 self.o_proj = RowParallelLinear( config.hidden_size, config.hidden_size, tp_group=self.attn_tp_group, tp_size=self.attn_tp_size, )

o_proj_tp_size 独立配置(当o_proj_tp_size ≠ attn_tp_size时,如 MLA 模型):

self.o_proj = RowParallelLinear( config.hidden_size, config.hidden_size, tp_group=self.oproj_tp_group, # 独立通信组 tp_size=self.o_proj_tp_size, )

Dense FFN 层(当 dense_tp_size > 1)

原组件替换为通信组说明
Gate LinearColumnParallelLineardense_tp_group列切分
Up LinearColumnParallelLineardense_tp_group列切分
Down LinearRowParallelLineardense_tp_group行切分,含 AllReduce
from module.linear import ColumnParallelLinear, RowParallelLinear self.gate_proj = ColumnParallelLinear( config.hidden_size, config.intermediate_size, tp_group=self.dense_tp_group, tp_size=self.dense_tp_size, ) self.up_proj = ColumnParallelLinear( config.hidden_size, config.intermediate_size, tp_group=self.dense_tp_group, tp_size=self.dense_tp_size, ) self.down_proj = RowParallelLinear( config.intermediate_size, config.hidden_size, tp_group=self.dense_tp_group, tp_size=self.dense_tp_size, )

Embedding / LMHead(当 embed_tp_size > 1 或 lmhead_tp_size > 1)

from module.linear import VocabParallelEmbedding, ColumnParallelLinear # Embedding(参数为 tp_size + tp_rank,无 tp_group) self.embed_tokens = VocabParallelEmbedding( config.vocab_size, config.hidden_size, self.padding_idx, torch.bfloat16, tp_size=self.embed_tp_size, tp_rank=dist.get_rank(self.hccl_comm_dict["embed_tp_group"]) if self.embed_tp_size > 1 else 0, ) # LMHead(当前仓库:tp_size + tp_rank,同 Embedding) self.lm_head = ColumnParallelLinear( config.hidden_size, config.vocab_size, tp_size=self.lmhead_tp_size, tp_rank=dist.get_rank(self.hccl_comm_dict["lmhead_tp_group"]) if self.lmhead_tp_size > 1 else 0, )

模块间数据重排(当相邻模块 TP 度不同时)

# Embed(embed_tp=16) → Attention(attn_tp=1) dist.all_gather_into_tensor(full_input, embed_output, group=embed_tp_group) # Dense FFN(dense_tp=8) 的输入/输出 dist.all_gather_into_tensor(x_output, x, group=dense_tp_group) # 输入聚合 # ... FFN 计算 ... dist.reduce_scatter_tensor(mlp_res, down_proj, group=dense_tp_group) # 输出分散

参考实现:

  • cann-recipes-infer/models/longcat-flash/models/modeling_longcat_flash.py(搜索all_gather_into_tensorreduce_scatter_tensor
  • cann-recipes-infer/models/deepseek_r1/models/modeling_deepseek.py(搜索同上)

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/783697/

相关文章:

  • CANN/torchtitan-npu MTP特性
  • 深圳市鸿鑫隆再生资源回收有限公司|深圳全域再生资源回收服务商 - 新闻快传
  • AI公平性评估:从量化指标到标准化认证的实践指南
  • U-Mail自建邮箱服务器方案 - U-Mail邮件系统
  • 2026国内铸铝门厂家实战盘点:行业靠谱机构TOP排名 - 企业品牌优选推荐官
  • 终极网盘直链下载助手:一键解锁9大云盘高速下载,告别限速烦恼
  • CANN/hcomm 端点描述获取
  • 2026最新公关公司/整合营销服务商/品牌传播公司推荐!国内优质权威榜单发布,专业靠谱实力突出 - 博客万
  • SAP ABAP开发避坑:WS_DELIVERY_UPDATE函数调用时,COMMIT和NO_MESSAGES_UPDATE参数到底怎么设?
  • 深圳再生资源回收服务商|鸿鑫隆|工厂废铁批量回收|30 分钟上门 - 新闻快传
  • 2026年广州格兰富泵类代理商推荐:潜污泵、深井泵、隔膜泵、密封泵、多级管道泵优质之选 - 速递信息
  • 2026年北京消防排烟风机与工业通风源头厂家深度选型指南 - 优质企业观察收录
  • Ray LLM API演进:一站式部署与数据处理工具链解析
  • Python字符串搜索替换的语义陷阱与工程决策树
  • 2026年合肥杀虫公司TOP5测评 优选合肥虫克星 - 资讯焦点
  • 2026 年 5 月网络地板厂家权威排行榜 TOP6(专业数据版) - 小艾信息发布
  • 单北斗变形监测应用在GNSS位移监测中的创新与实践
  • 支付宝红包套装回收攻略 - 抖抖收
  • 命令行AI绘画工具nanobanana:用Gemini API提升开发效率
  • 别再只盯着告警了:从Pikachu靶场搭建看SRE可观测性的实战落地(含日志与调用链配置)
  • 2026硅胶防水圈选购指南:避坑3误区+3款靠谱品牌推荐 - 新闻快传
  • 2026年化工冷却水设备品牌推荐榜:水冷、风冷、恒温恒压等工业冷却水设备优质之选 - 速递信息
  • CoPaw开源个人AI助手:从部署到实战的完整指南
  • 语言模型推理能力与计算表达力深度解析
  • 国内可靠大理石构件批发厂家综合实力TOP5排行 - 奔跑123
  • 支付宝红包套装回收渠道有哪些? - 抖抖收
  • 新能源汽车电池生产线实战:C#上位机+Modbus TCP实现电芯数据毫秒级采集与存储
  • 北京超高层建筑消防排烟风机采购陷阱曝光:为什么要选深胜博这样的源头厂家 - 优质企业观察收录
  • 深圳全居邦防水工程:宝安区厂房防水哪家好 - LYL仔仔
  • 节假日囤的大润发卡怎么变现?安全不踩坑回收攻略 - 喵权益卡劵助手