登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
我知道了
查看详情
登录
注册
Gitee Talk | 模力方舟 AI 应用开发沙龙第六站 · 8月23日 广州集结中!
代码拉取完成,页面将自动刷新
开源项目
>
人工智能
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
198
Star
1.3K
Fork
1.2K
GVP
Ascend
/
MindSpeed-LLM
代码
Issues
13
Pull Requests
45
Wiki
统计
流水线
服务
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
3068
【轻量级 PR】:add docs/pytorch/features.
开启的
N/A
Ascend:master
aaron
创建于 2025-07-30 14:58
克隆/下载
HTTPS
SSH
复制
下载 Email Patch
下载 Diff 文件
# Optimization of get_batch based on shared memory ## 问题分析 数据准备阶段涉及几类典型问题: 1、数据读取:例如:原始的tokens、lables、attention_mask数据 2、数据预处理,例如:mask_attention的构建、positon_ids的生成与更新、actual_seq_len等数据的计算。 3、数据Host与Device之间的传输,包括H2D和D2H,不同的算子对数据的位置要求还不同,比较典型的: 3.1 FA_attention算子在TND模式下的actual_seq_len数据需要放在CPU上进行传入。 3.2 positon_ids 在NPU计算耗时多。 当前的MindSpeed-LLM训练框架由 Rank0 的CPU读取并预处理关键数据,通过共享内存在TP域内广播,减少 H2D + broadcast带来的同步开销。 这里遇到两个瓶颈: **1、部分计算不适合NPU计算,典型场景有actual_seq_len的计算。** **2、actual_seq_len 需要从H2D,然后再D2H,会造成多次数据同步。** ## **解决方案** **核心方案:** 1、**计算前移:**识别数据预处理中不适合NPU,但适合CPU计算的部分,将其计算前移至CPU侧进行。 2、**无锁共享内存传输:**数据通过无锁共享内存实现高效传输,减少H2D和D2H的传输过程。 **优化后的工作流程:** Rank 0 负责从底层存储读取原始数据,Dataloader 对数据编排和分批,数据预处理在 CPU 上完成以减轻 NPU 负载,预处理结果由 Rank 0 写入共享内存,TP 域内其他进程直接读取共享数据,无需重复计算,实现高效协同并完成后续训练。 ### **一、基于共享内存的数据版本管理及传输模块** **共享内存高效管理机制:** 在单TP组内,由 rank0 负责创建和管理共享内存区,其它进程连接后独立初始化数据管理区域。数据写入时,rank0 仅在所有进程完成数据读取后更新数据区和数据版本,清空标志位;各 rank 进程按数据版本有序读取和标记,确保数据一致性和无冲突。对于多TP组场景,需为每个 TP_Group 分别创建并管理独立的共享内存区域,实现分区化高效协作和数据共享,保障多TP域下的可靠传输与管理。 **总结:** **单TP组内通过 rank0 统一管理数据写入,其他进程独立标记读取状态,实现高效可靠的数据同步。多TP组场景下,各 TP_Group 独立创建和管理共享内存,实现分区化协同,保障多TP域间的数据高效共享与管理。** ### 二、**多TP组的**共享内存**数据管理** **多TP组的共享内存管理:** 对于多个TP组,则根据实际需要创建独立的TP_Group,然后创建独立的共享内存。独立管理,从而实现多个TP域的数据共享传输。 **总结:** **单机出现多个TP域的情况,需要根据TP_Group组实现分区管理。** ## 使用说明 ### 1、新增参数 【**enable_share_memory**】 **该参数主要控制TP域内是否使用共享内存来传递数据(TND模式下的actual_seq_len 和position_ids)** ### 2、使用方法 mask: reset-attention-mask: True reset-position-ids: True eod-mask-loss: False **enable-share-memory:TRUE** ### 3、使用约束 1、需要在mask_compress (TND格式控制参数)、reset_attention_mask 被设置时,才能被使能。 目前只有在TND格式下的收益最大,其他模式下收益小(SBH格式下的mask计算更适合NPU计算) 2、reset-position-ids被设置的话,position-ids会在CPU侧计算并SHM传输,否则position-ids在NPU上计算。 ## 使用效果 **MOE模态训练场景单步骤get_batch性能提升88%; 端到端Token吞吐率提升4%。** 单步get_batch提升(2.9−0.35)/2.9*100%≈87.93% **端到端训练吞吐提升** 1、**单卡吞吐率**从 **93.5 TFLOP/s** 提升至 **97.4 TFLOP/s** ,提升幅度为 **4.17%** ; 2、**整体训练处理能力**从 **31.3M tokens/day** 提升至 **32.6M tokens/day** ,提升幅度为 **4.15%**。
此 Pull Request 需要通过一些审核项
类型
指派人员
状态
审查
王姜奔
fengliangjun
已完成
(0/0人)
此 Pull Request 可以被系统自动合并 ,目标分支为保护分支,您没有合并权限
怎样手动合并此 Pull Request
git checkout master
git pull https://gitee.com/ascend/MindSpeed-LLM.git N/A
git push origin master
评论
2
提交
1
文件
1
检查
代码问题
0
批量操作
展开设置
折叠设置
审查
Code Owner
审查人员
guoxinjie
guo-xinjie-1
shenjiarun
shenjiarun
RuanZhiXiang
RyanAlexander
jzh
jzh6229
jwhk
qu-yueze
fengliangjun
fengliangjun66
王姜奔
wangjiangben_hw
AtlasAccount
atlasaccount
LeiZhenzhen
leizhenzhen
HuaweiAscend
HUAWEI-ASCEND_admin
i-robot
I-am-a-robot
shaoyf
shaoyf
未设置
最少人数
0
测试
guoxinjie
guo-xinjie-1
shenjiarun
shenjiarun
RuanZhiXiang
RyanAlexander
jzh
jzh6229
jwhk
qu-yueze
fengliangjun
fengliangjun66
王姜奔
wangjiangben_hw
AtlasAccount
atlasaccount
LeiZhenzhen
leizhenzhen
HuaweiAscend
HUAWEI-ASCEND_admin
i-robot
I-am-a-robot
shaoyf
shaoyf
未设置
最少人数
0
优先级
不指定
严重
主要
次要
不重要
标签
ci-pipeline-failed
ascend-cla/yes
关联 Issue
未关联
Pull Request 合并后将关闭上述关联 Issue
里程碑
未关联里程碑
合并选项
合并后关闭提到的 Issue
接受 Pull Request 时使用扁平化(Squash)合并
勾选此选项后,将建议使用 Squash Merge 方式合并以精简提交历史记录
参与者
(2)
Cherry-pick 提交
Cherry-pick 可以将
特定提交(Commit)
从某个分支挑选并应用到另一个分支,实现快速集成特定更改,而无需合并整个分支。
请选择应用 Cherry-pick 提交 (Commit) 的目标分支
新建分支
当前账号不存在 Fork 仓库,建议 cherry-pick 到 Fork 仓库。
Fork 仓库
提交列表
Commit SHA
Commit Message
基于 Cherry-pick 后的分支发起 Pull Request
取消
Cherry-pick
Python
1
https://gitee.com/ascend/MindSpeed-LLM.git
git@gitee.com:ascend/MindSpeed-LLM.git
ascend
MindSpeed-LLM
MindSpeed-LLM
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册