一.分布式大模型训练的完整流程及注意事项
1. 迁移分析
- 模型选取与约束说明 : 确保模型能在GPU或CPU上运行并获取性能基线,了解不支持场景,如DP模式、APEX库、bmtrain框架等。
- 支持度分析 : 使用msFmkTransplt工具分析模型算子、三方库、亲和API和动态shape在昇腾平台上的支持情况。
- 算子开发与适配 : 如存在不支持算子,可使用等价算子替换或联系华为工程师开发适配。
2. 迁移适配
- 模型脚本迁移 : 推荐使用自动迁移,导入torch_npu库实现CUDA接口到NPU接口的替换。
- 模型训练适配 :
- 环境变量配置 : 配置CANN相关环境变量、LD_LIBRARY_PATH、HCCL_WHITELIST_DISABLE等。
- 启动脚本配置 :
- 单卡训练 : 直接运行训练脚本。
- 多卡分布式训练 :
- 单机多卡 : 将单卡脚本修改为多卡脚本,并使用shell脚本、mp.spawn、Python、torchrun或torch_npu_run等方式拉起训练。
- 多机多卡 : 准备多机环境,配置device IP、防火墙、交换机等,修改模型脚本,并使用shell脚本、torchrun或torch_npu_run等方式拉起训练。
- 关键特性适配 :
- 精度敏感特征值检测 : 开启NPU_ASD_ENABLE环境变量,配置NPU_ASD_UPPER_THRESH和NPU_ASD_SIGMA_THRESH,并进行故障处理。
- 混合精度适配(可选) : 使用PyTorch AMP模块,根据场景选择典型、梯度累加、多模型、损失函数和优化器、DDP场景等适配方法。
3. 精度调试
- 精度分析与调优 : 分析训练过程中的Loss、perplexity、梯度范数等指标,评估迁移前后精度差异,并使用精度问题分析工具排查问题。
- 数据集清洗 : 剔除非目标语言、低质量样本、重复数据等,并进行去重。
- 超参配置调优 : 调整Batch Size、学习率、梯度裁剪阈值、Loss scale等超参数。
- 混合精度配置选择 : 根据任务需求和硬件资源选择FP16或BF16,并进行Loss scale调整。
- 训练状态监控和恢复 : 使用TensorBoard或hook机制监控PPL、GNorm、内存占用等指标,并进行异常状态急救和恢复。
4. 性能调优
- 性能数据采集与评测 : 使用Ascend PyTorch Profiler、性能比对工具、集群分析工具和Ascend Insight等工具采集和分析性能数据。
- 模型性能优化实施 : 根据性能瓶颈模块的类型,从并行策略、IO优化、NPU亲和适配优化、内存优化、融合算子、融合优化器等方面进行优化。
注意事项 :
- 并行策略选择 : 根据模型大小、内存需求、算力资源等因素选择合适的并行策略,并进行线性度和micro batch size测试分析。
- IO优化 : 优化数据加载方式,如使用pin_memory、persistent_workers、预取数据、Infinite DataLoader、缓存数据等。
- NPU亲和适配优化 : 消除多余的stream同步、优化CPU侧代码、替换融合算子、使用融合优化器等。
- 内存优化 : 调整内存参数、使用多流复用、减小HCCL通信缓存、开启通信并行、使能FFTS、关闭Python GC等。
- 通信优化 : 配置HCCL_INTRA_ROCE_ENABLE、HCCL_RDMA_TC、HCCL_RDMA_SL、HCCL_BUFFSIZE等环境变量。
二.并行策略通用建议
- 并行策略的调试与设计需要对具体模型进行详细分析,没有一个通用的万能法则可以适用于所有情况。然而,借鉴以往的调优经验,我们可以总结出一些相对通用的建议。
- 在面临显存不足、模型过大无法完全加载以及需要进行切分的情况下,优先考虑使用TP (Tensor Parallelism)进行切分,并确保切分的数量小于等于机器内的计算卡数。例如,在一台服务器上有8张计算卡,那么TP的最大设置不应超过8。这样可以充分利用计算资源,减少显存占用。
- 如果在TP切分达到最大显存容量仍然不足的情况下,可以考虑在机器之间使用PP(Pipeline Parallelism)进行切分。理论上,PP的数量应该越小越好 ,以尽可能减少空闲计算资源的浪费。
- 在机器资源富裕的情况下,可以开启DP(Data Parallelism)并行,将计算任务分配给多个机器进行并行处理,从而提高处理效率。然而,在机器资源有限的情况下,如果开启TP+PP切分后显存仍然不足,可以考虑使用ZeRO1和重计算技术 。ZeRO1可以将模型优化器状态划分到更多的设备上,并通过集合通信进行同步。
- 同时,重计算技术可以通过选择性重计算来提高显存的使用率,从而提高模型训练效率。
- 此外,即使在模型能够成功运行的情况下,也可以尝试主动地使用降低内存占用的手段,例如ZeRO1和重计算等,然后增大Batch Size 。这样有时也会取得令人意外的效果。
- 综上所述,通过技术能力和合理选择并行策略,可以在资源有限的情况下优化模型训练效率,并充分利用计算资源。然而,对于具体的模型和环境,仍需要进行详细分析和实验,以找到最佳的并行策略和优化方法。
三.Mindspeed框架的演化过程及未来潜在的方向
1. 模型并行 (Tensor Parallel) :
- 问题 : 单个设备内存无法容纳大型模型。
- 解决方案 : 将模型参数在设备间进行切分,每个设备只负责部分模型计算。
- 演化 :
- 参数矩阵横切 : 将参数矩阵按行切分,需要额外进行输入输出矩阵的切分和拼接。
- 参数矩阵纵切 : 将参数矩阵按列切分,简化了输入输出矩阵的处理,但需要更多的设备进行通信。
2. 流水线并行 (Pipeline Parallel) :
- 问题 : 模型并行中,设备间存在依赖关系,计算资源利用率低。
- 解决方案 : 将模型按层划分为多个阶段,不同阶段在不同设备上并行计算。
- 演化 :
- 虚拟流水线并行 : 将计算进一步细分,通过增加通信量来降低空泡比率,进一步提升性能。
3. 序列并行 (Sequence Parallel) :
- 问题 : 长序列训练内存占用高,无法扩展。
- 解决方案 : 将序列维度切分,不同设备只处理序列的一部分。
- 演化 :
- Ulysses : 需要head_size被tp_size*cp_size整除。
- Ring Attention : 并行维度不受head_size限制,但性能可能低于Ulysses。
- 混合序列并行 : 结合Ulysses和Ring Attention的优势,实现更灵活的序列并行方案。
4. 激活函数重计算 :
- 问题 : 激活函数输出占用大量内存,但计算量小。
- 解决方案 : 在反向计算之前,丢弃激活函数输出,反向时再重新计算。
- 演化 :
- 选择性重计算 : 只对部分激活函数输出进行重计算,减少内存占用和计算量。
- 完全重计算 : 对所有激活函数输出进行重计算,进一步降低内存占用。
5. 数据并行 (Data Parallel) :
- 问题 : 数据集过大,训练时间过长。
- 解决方案 : 将数据集切分为多个batch,每个设备只处理部分数据。
- 演化 :
- Megatron 分布式优化器 : 将优化器状态拆分到所有设备,减少内存占用。
6. 通信优化 :
- 问题 : 计算和通信任务串行执行,效率低。
- 解决方案 :
- 异步DDP : 将计算和通信任务拆分,并行执行,提高效率。
- 权重更新通信隐藏 : 将权重更新和通信任务并行执行,提高效率。
- 计算通信并行 (CoC) : 将计算和通信任务分别拆分,并行执行,提高效率。
- Ascend MC2 : 将matmul计算和通信操作融合,提高效率。
7. 其他优化 :
- 混合精度训练 : 使用BF16和FP16混合精度训练,减少内存占用。
- 参数副本复用 : 等价去除冗余的FP32参数副本,减少内存占用。
- Alibi 位置编码 : 提高模型外推能力。
- Flash Attention 适配 : 优化IO访存,提高长序列训练效率。
- Efficient-MOE : 减少MoE训练中不必要的通信开销。
- 内存碎片优化 : 减少内存碎片,避免内存不足。
- RMSNorm/ Rotary Postion Embedding/ Swiglu 融合优化 : 提升计算效率,减少内存占用。
8. 自适应选择重计算 (Adaptive Recomputing) :
- 问题 : 现有重计算策略固定,无法最大化利用显存资源。
- 解决方案 : 根据当前内存使用情况,自动选择最优的重计算策略,最大化利用显存资源。
- 演化 :
- 重计算策略搜索 : 搜索并选择最优的重计算策略,例如层切分方式、重计算层数等。
- SwapManager 功能 : 及时将tensor换到CPU,避免内存不足导致训练中断。
- 内存管理 : 适配PTA的NPUPluggableAllocator接口,拦截OOM,让SwapManager功能可以介入。
9. 异步DDP (Overlap Grad Reduce) :
- 问题 : 数据并行场景下,梯度更新和反向计算串行执行,效率低。
- 解决方案 : 将梯度更新和反向计算任务拆分,并行执行,提高效率。
10. 权重更新通信隐藏 (Overlap Param Gather) :
- 问题 : 数据并行场景下,权重更新和下一轮前向计算串行执行,效率低。
- 解决方案 : 将权重更新和下一轮前向计算任务拆分,并行执行,提高效率。
11. PP自动并行 (Auto Pipeline Parallel) :
- 问题 : PP-Stage 0的显存占用过高,限制模型规模。
- 解决方案 : 自动寻找最优的层分布和重计算模块,均匀分配每个卡上的显存,降低峰值内存,并最小化端到端训练时间。
12. 混合长序列并行 (Hybrid CP Algorithm) :
- 问题 : Ulysses和Ring Attention方案存在各自的局限性。
- 解决方案 : 结合Ulysses和Ring Attention的优势,实现更灵活的序列并行方案,克服各自的缺陷。
13. 计算通信并行 CoC (Communication Over Computation) :
- 问题 : 计算和通信任务串行执行,效率低。
- 解决方案 : 将计算和通信任务分别拆分,并行执行,提高效率。
- 演化 :
- Python脚本侧实现 : 通过脚本实现子tensor之间的计算和通信并行。
- 融合算子实现 : 基于MTE远端内存访问能力,以融合大Kernel方式实现计算和通信任务的拆分和并行。
14. Ascend MC2 :
- 问题 : TP和SP场景下,matmul计算和通信操作存在强依赖关系,效率低。
- 解决方案 : 将matmul计算和集合通信操作融合,通过流水的方式减少等待和闲置时间,提高利用率。
15. 内存碎片优化 :
- 问题 : 频繁地申请和释放内存空间容易引发内存碎片问题。
- 解决方案 : 将不同生命周期的tensor放入不同的内存池分别管理,减少内存碎片。
16. 参数副本复用 :
- 问题 : 混合精度训练中BF16计算参数和FP32参数副本同时存在,占用冗余内存。
- 解决方案 : 通过数值变换的方式等价去除冗余的FP32参数副本,减少内存占用。
17. Ring Attention长序列并行 :
- 问题 : 序列维度扩展受限,训练内存开销大。
- 解决方案 : 支持Ring Attention长序列并行方案,通过分块计算和环状通信结构,实现序列维度无限拓展。
18. RMSNorm/ Rotary Postion Embedding/ Swiglu 融合优化 :
- 问题 : 常用算子没有融合优化,执行效率低。
- 解决方案 : 将常用算子融合成一个算子,减少数据传输和临时存储,提升计算效率。
19. Token重排性能优化 :
- 问题 : DeepSpeed MoE的token重排方案计算复杂度高,存在优化空间。
- 解决方案 : 使用等价的pytorch API: index_select来实现token重排,降低计算时间复杂度。
20. Ulysses长序列并行 :
- 问题 : 序列维度扩展受限,训练内存开销大。
- 解决方案 : 支持Ulysses长序列并行方案,通过all-to-all通信操作,实现序列维度无限拓展。
概括为以下几个阶段:
1. 从单机到分布式 :
- 早期 : 单机训练是主流,但随着模型规模的不断扩大,单机内存和计算能力逐渐成为瓶颈。
- 演化 : 引入模型并行和流水线并行,将模型切分到多个设备上进行训练,突破了单机资源的限制。
2. 从静态到动态 :
- 早期 : 模型并行和流水线并行需要预先设置,缺乏灵活性。
- 演化 : 引入自适应选择重计算和PP自动并行,根据当前内存使用情况自动选择最优的重计算策略和层分布,提高了训练效率和灵活性。
3. 从串行到并行 :
- 早期 : 计算和通信任务串行执行,效率低。
- 演化 : 引入异步DDP、权重更新通信隐藏、计算通信并行 CoC 和 Ascend MC2 等技术,将计算和通信任务并行执行,提高了训练效率。
4. 从粗粒度到细粒度 :
- 早期 : 序列并行方案较为简单,存在局限性。
- 演化 : 引入混合长序列并行、Ring Attention长序列并行和Ulysses长序列并行等方案,实现了更灵活的序列维度扩展。
5. 从基础到融合 :
- 早期 : 常用算子没有融合优化,执行效率低。
- 演化 : 引入RMSNorm/ Rotary Postion Embedding/ Swiglu 融合优化等技术,将常用算子融合成一个算子,提高了计算效率。
6. 从单一到综合 :
- 早期 : 模型训练优化主要集中在单一方面。
- 演化 : 引入内存碎片优化、参数副本复用等技术,从多个方面综合提升训练效率。
未来展望 :
- 更灵活的并行方案 : 随着模型规模的不断增长,需要更灵活的并行方案来适应不同的训练场景。
- 更高效的通信技术 : 通信效率是影响分布式训练性能的关键因素,需要开发更高效的通信技术来降低通信开销。
- 更智能的自动优化 : 自动化是未来模型训练的趋势,需要开发更智能的自动优化技术来简化训练过程。
展望Mindspeed框架的未来发展:
1. 资源利用最大化 :
- 内存碎片优化 : 进一步优化内存管理策略,减少内存碎片,提高内存利用率。
- 显存扩展技术 : 探索显存扩展技术,例如虚拟内存、分布式缓存等,突破单设备显存限制。
- 计算资源调度 : 开发更智能的计算资源调度算法,根据模型特点和训练任务,动态调整资源分配,提高资源利用率。
2. 训练效率最大化 :
- 更高效的并行算法 : 探索更高效的并行算法,例如基于图计算、张量网络等,进一步提高并行效率。
- 更高效的通信协议 : 开发更高效的通信协议,例如低延迟通信、多路径通信等,降低通信开销。
- 更智能的自动优化 : 开发更智能的自动优化技术,例如基于强化学习、机器学习等,自动选择最优的并行策略和参数配置。
3. 模型训练自动化 :
- 自动化模型并行 : 自动识别模型结构和特征,自动选择最优的模型并行策略。
- 自动化流水线并行 : 自动划分模型层,自动选择最优的流水线并行策略。
- 自动化序列并行 : 自动选择最优的序列并行方案,例如Ulysses、Ring Attention、混合长序列并行等。
- 自动化重计算 : 自动识别重计算热点,自动选择最优的重计算策略。
4. 模型训练智能化 :
- 模型压缩 : 开发更高效的模型压缩技术,例如量化、剪枝、蒸馏等,降低模型规模,提高训练效率。
- 模型搜索 : 开发更高效的模型搜索算法,例如强化学习、进化算法等,自动搜索最优的模型结构。
- 模型评估 : 开发更智能的模型评估方法,例如基于数据分布、任务特征等,更准确地评估模型性能。
5. 训练框架开放化 :
- 开放接口 : 提供更开放的接口,方便用户定制化和扩展训练框架。
- 开源代码 : 开源训练框架的代码,促进社区协作和知识共享。
- 生态建设 : 构建更完善的训练框架生态系统,例如提供模型库、数据集、工具等,方便用户进行模型训练和应用开发。
潜在的发展方向:
1. 跨平台支持 :
- 支持更多硬件平台 : 目前Mindspeed框架主要针对昇腾平台进行优化,未来可以考虑支持更多硬件平台,例如GPU、FPGA等,扩大用户群体。
- 云原生架构 : 将Mindspeed框架与云平台结合,提供更便捷、高效的云上大模型训练服务。
2. 生态系统建设 :
- 模型库 : 建立一个开放的大模型模型库,方便用户共享和复用模型。
- 数据集 : 建立一个开放的大模型数据集平台,方便用户获取和共享数据。
- 工具 : 开发更多便捷的工具,例如可视化工具、调试工具等,方便用户进行模型训练和应用开发。
- 社区 : 建立一个活跃的社区,方便用户交流经验、解决问题、分享成果。
3. 可解释性和可信赖性 :
- 模型可解释性 : 开发更有效的模型可解释性技术,例如特征可视化、注意力可视化等,帮助用户理解模型的行为和决策过程。
- 模型可信赖性 : 开发更有效的模型可信赖性技术,例如鲁棒性分析、公平性分析等,确保模型的可靠性和安全性。
4. 应用场景拓展 :
- 推理加速 : 开发更高效的推理加速技术,例如模型量化、模型剪枝等,降低模型推理的延迟和功耗。
- 多模态训练 : 支持多模态数据的大模型训练,例如文本、图像、音频等,构建更全面、更智能的AI模型。
- 边缘计算 : 将Mindspeed框架应用于边缘计算场景,实现更本地化、更实时的大模型推理服务。
5. 安全性和隐私保护 :
- 模型安全 : 开发更有效的模型安全技术,例如对抗攻击防御、后门攻击防御等,确保模型的安全性。
- 数据隐私 : 开发更有效的数据隐私保护技术,例如联邦学习、差分隐私等,保护用户数据隐私。
几个方向前进:
- 技术创新与突破 :
- 新型并行架构 : 探索新型并行架构,例如分布式内存、异构计算等,进一步提高并行效率。
- 量子计算 : 将Mindspeed框架与量子计算结合,探索量子计算在大模型训练中的应用。
- 脑机接口 : 将Mindspeed框架与脑机接口结合,实现更自然、更高效的交互方式。
- 元宇宙 : 将Mindspeed框架应用于元宇宙场景,构建更加逼真、沉浸式的虚拟世界,实现更丰富的交互体验。
- 跨学科融合 :
- 认知科学 : 将Mindspeed框架与认知科学结合,探索人脑的工作原理,构建更智能的AI模型。
- 心理学 : 将Mindspeed框架与心理学结合,探索人类的情感、意识等,构建更具情感、更具同理心的AI模型。
- 哲学 : 将Mindspeed框架与哲学结合,探索人工智能的本质和未来,构建更具伦理、更具道德的AI模型。
- 可持续发展 :
- 绿色计算 : 开发更节能的模型训练技术,例如模型压缩、模型剪枝等,降低模型训练的能耗。
- 可扩展性 : 开发更具可扩展性的模型训练框架,例如支持动态模型大小、支持动态并行策略等,适应不同规模的训练任务。
- 社会责任 :
- 公平性 : 开发更公平的AI模型,避免算法歧视和偏见。
- 透明性 : 提高AI模型的透明性,让用户了解模型的行为和决策过程。
- 可解释性 : 开发更可解释的AI模型,让用户理解模型的行为和决策过程。
- 人机协作 :
- 协同工作 : 开发更有效的人机协作工具,例如智能助手、智能机器人等,帮助人类完成更复杂的任务。
- 自主学习 : 开发更自主学习的AI模型,例如强化学习、迁移学习等,让AI模型能够自主学习、自我改进。
- 构建智能生态 :
- 多模态融合 : 支持多模态数据的大模型训练,例如文本、图像、音频、视频等,构建更全面、更智能的AI模型,实现更自然的人机交互。
- 知识图谱 : 将Mindspeed框架与知识图谱结合,构建更加丰富、更加精准的知识图谱,实现更深入的语义理解。
- 机器学习平台 : 构建开放的机器学习平台,提供更便捷、更高效的模型训练、评估和应用开发工具,推动人工智能技术的普及和应用。
四.Ascend开源工具介绍
1. ACLLite
功能介绍:对 CANN 提供的 ACL 接口进行高阶封装 ,简化用户调用流程,提供易用的公共接口,主要针对边缘场景设计。
要解决的痛点:传统 ACL 接口使用复杂,开发效率低。
创新点:提供高阶封装和简易接口,降低开发门槛。
2. ADS-Accelerator
功能介绍:基于昇腾 NPU 平台开发的算子和模型加速库,提供高性能算子和模型加速接口,支持 PyTorch 框架。
要解决的痛点:昇腾 NPU 训练效率低,模型部署复杂。
创新点:提供高性能算子和模型加速接口,简化模型部署流程。
3. Apex Patch
功能介绍:以代码 patch 的形式发布,让用户可以在华为昇腾 AI 处理器上使用 Apex 的自动混合精度训练功能,提升训练效率。
要解决的痛点:昇腾 NPU 训练效率低,模型精度不稳定。
创新点:提供自动混合精度训练功能,提升训练效率并保持模型精度。
4. Ascend Inference Tools (ait)
功能介绍:昇腾推理工具链 ,提供模型推理迁移全流程、大模型推理迁移全流程等工具,帮助用户快速进行模型推理开发。
要解决的痛点:模型推理迁移流程复杂,开发效率低。
创新点:提供一体化推理开发工具,简化模型推理迁移流程。
5. DeepSpeed NPU
功能介绍:昇腾 NPU 适配 DeepSpeed 插件,让用户可以在昇腾 910 芯片上使用 DeepSpeed,并基于 DeepSpeed 进行开发。
要解决的痛点:DeepSpeed 不支持昇腾 NPU。
创新点:提供昇腾 NPU 适配的 DeepSpeed 插件,让用户可以使用 DeepSpeed 进行训练和推理。
6. Megatron-NPU
功能介绍:基于 Megatron-LM 原始仓开发的适配仓,已适配数据并行、模型并行、流水并行、序列并行等特性,支持大模型训练。
要解决的痛点:Megatron-LM 不支持昇腾 NPU。
创新点:提供昇腾 NPU 适配的 Megatron-LM,让用户可以使用 Megatron-LM 进行大模型训练。
7. MindSpeed
功能介绍:针对华为昇腾设备的大模型加速库,支持昇腾专有算法,确保开箱可用。
要解决的痛点:大模型训练需要大量显存资源,对计算卡提出挑战。
创新点:提供大模型加速库,提升大模型训练效率。
8. MindX SDK Reference Apps
功能介绍:基于 MindX SDK 开发的参考样例,涵盖图像识别、目标检测、语义分割、文本生成等多种应用场景。
要解决的痛点:MindX SDK 使用复杂,缺乏参考样例。
创新点:提供丰富的参考样例,帮助开发者快速入门和使用 MindX SDK。
9. ModelLink
功能介绍:为华为昇腾芯片上的大语言模型提供端到端的解决方案 ,包含模型、算法以及下游任务。
要解决的痛点:大语言模型训练和推理流程复杂,缺乏一体化解决方案。
创新点:提供端到端解决方案,简化大语言模型训练和推理流程。
10. Ascend ModelZoo
功能介绍:昇腾旗下的开源 AI 模型平台,涵盖计算机视觉、自然语言处理、语音、推荐、多模态、大语言模型等多个方向的 AI 模型及其基于昇腾机器实操案例。
要解决的痛点:缺乏高质量的昇腾 AI 模型资源。
创新点:提供丰富的昇腾 AI 模型资源,并附带详细的使用指导。
11. msadvisor
功能介绍:昇腾性能调优 专家系统工具,可以帮助开发者识别算子/模型性能瓶颈,并输出合理的性能调优方案。
要解决的痛点:算子/模型性能调优依赖开发者经验,缺乏统一的调优规范和结果输出。
创新点:提供基于专家系统知识的性能调优工具,简化性能调优流程。
12. mxRec
功能介绍:面向互联网市场搜索推荐 广告的应用使能 SDK 产品,提供大规模搜推广场景的搜索推荐广告框架。
要解决的痛点:搜索推荐广告模型训练效率低,缺乏大规模稀疏表支持。
创新点:提供大规模搜推广场景的搜索推荐广告框架,并支持大规模稀疏表。
13. OpPlugin
功能介绍:Ascend Extension for PyTorch 算子插件 ,为使用 PyTorch 框架的开发者提供便捷的 NPU
算子库调用能力。
要解决的痛点:PyTorch 框架缺乏对昇腾 NPU 的支持。
创新点:提供 PyTorch 框架的 NPU 算子插件,让用户可以使用 PyTorch 进行昇腾 NPU 训练和推理。
14. Ascend CANN Parser
功能介绍:将第三方框架的算法表示转换成 Ascend IR ,方便开发者充分利用昇腾 AI 处理器的运算能力。
要解决的痛点:第三方框架算法与昇腾 AI 处理器不兼容。
创新点:提供算法转换工具,实现第三方框架算法与昇腾 AI 处理器的兼容。
15. playground
功能介绍:Ascend open source playground,提供昇腾 AI 开发的学习资源和工具。
要解决的痛点:缺乏昇腾 AI 开发的学习资源和工具。
创新点:提供昇腾 AI 开发的学习资源和工具,帮助开发者快速入门。
16. TorchAir
功能介绍:基于 PyTorch 框架和 torch_npu 插件,支持用户在昇腾 NPU 上使用图模式进行训练和推理 。
要解决的痛点:PyTorch 框架缺乏对昇腾 NPU 图模式的 support。
创新点:提供 PyTorch 框架的昇腾 NPU 图模式支持,提升训练和推理效率。
17. Hugging Face
功能介绍:Hugging Face 核心套件 transformers、accelerate、peft、trl 已原生支持 Ascend NPU。
要解决的痛点:Hugging Face 套件缺乏对昇腾 NPU 的 support。
创新点:提供 Hugging Face 套件的昇腾 NPU 支持,让用户可以使用 Hugging Face 套件进行昇腾 NPU 训练和推理。
18. Torchvision Adapter
功能介绍:昇腾适配 Torchvision 框架,提供基于 cv2 和昇腾 NPU 的图像处理加速后端,加速图像处理。
要解决的痛点:Torchvision 框架缺乏对昇腾 NPU 的 support。
创新点:提供 Torchvision 框架的昇腾 NPU 支持,提升图像处理效率。
19. workload_analysis
功能介绍:mindstudio 负载建模众智合作仓库,提供昇腾 AI 工作负载分析工具和资源。
要解决的痛点:缺乏昇腾 AI 工作负载分析工具和资源。
创新点:提供昇腾 AI 工作负载分析工具和资源,帮助开发者优化昇腾 AI 工作负载。
继续
20. Ascend Extension for PyTorch (torch_npu)
功能介绍:昇腾扩展库,让 PyTorch 框架 可以使用昇腾 NPU 进行训练和推理,提供高性能 AI 计算能力。
要解决的痛点:PyTorch 框架原生不支持昇腾 NPU。
创新点:提供 PyTorch 框架的昇腾 NPU 支持,实现 PyTorch 模型在昇腾 NPU 上的高效训练和推理。
21. Ascend Samples
功能介绍:昇腾样例仓,提供媒体数据处理、算子开发与调用、推理应用开发与部署等场景的丰富代码样例,帮助开发者快速入门和使用 CANN。
要解决的痛点:CANN 使用复杂,缺乏参考样例。
创新点:提供丰富的代码样例,帮助开发者快速学习和掌握 CANN。
22. TensorFlow Adapter For Ascend (TF Adapter)
功能介绍:昇腾扩展库,让 TensorFlow 框架可以使用昇腾 NPU 进行训练和推理,提供高性能 AI 计算能力。
要解决的痛点:TensorFlow 框架原生不支持昇腾 NPU。
创新点:提供 TensorFlow 框架的昇腾 NPU 支持,实现 TensorFlow 模型在昇腾 NPU 上的高效训练和推理。
23. Ascend Extension for TensorPipe
功能介绍:开源仓 Tensorpipe 基于 Ascend pytorch/torch_npu 的适配,提供高性能的分布式训练通信库 。
要解决的痛点:Tensorpipe 缺乏对昇腾 NPU 的 support。
创新点:提供 Tensorpipe 的昇腾 NPU 支持,提升分布式训练效率。
24. msquickcmp
功能介绍:一键式全流程精度比对工具 ,适用于 TensorFlow 和 ONNX 模型,输入原始模型和对应的离线 om 模型,输出精度比对结果。
要解决的痛点:模型精度比对流程复杂,缺乏自动化工具。
创新点:提供一键式全流程精度比对工具,简化模型精度比对流程。
25. precision_tool
功能介绍:精度问题分析工具 ,提供精度比对常用功能,主要适配 TensorFlow 训练场景,同时提供 Dump
数据/图信息的交互式查询和操作入口。
要解决的痛点:缺乏模型精度问题分析工具。
创新点:提供模型精度问题分析工具,帮助开发者定位和解决精度问题。
26. auto-optimizer
功能介绍:提供基于 ONNX 的改图、自动优化 及端到端推理流程,帮助开发者提升模型推理效率。
要解决的痛点:模型推理效率低,缺乏自动化优化工具。
创新点:提供模型自动优化工具,简化模型推理优化流程。
27. saved_model2om
功能介绍:TensorFlow 1.15 saved_model 模型转 om 模型工具,输入 TensorFlow 存储的 saved_model
模型,转换为 pb 模型,再转换为 om 模型。
要解决的痛点:缺乏 TensorFlow saved_model 模型到 om 模型的转换工具。
创新点:提供 TensorFlow saved_model 模型到 om 模型的转换工具,简化模型迁移流程。
28. mindxedge_whitebox
功能介绍:MindXEdge 白牌化安装工具,支持 Atlas500 智能小站进行白牌化的首次安装,安装后设备将变为白牌化的设备。
要解决的痛点:缺乏 MindXEdge 白牌化安装工具。
创新点:提供 MindXEdge 白牌化安装工具,简化 MindXEdge 白牌化流程。
继续
29. Hugging Face Transformers
功能介绍:Hugging Face 的自然语言处理模型库,提供预训练模型和工具,支持多语言和多种任务,包括文本分类、命名实体识别、机器翻译等。
要解决的痛点:自然语言处理任务开发复杂,缺乏高质量预训练模型和工具。
创新点:提供丰富的预训练模型和工具,简化自然语言处理任务开发。
30. Hugging Face Accelerate
功能介绍:Hugging Face 的分布式训练加速库,支持单机多卡、多机多卡训练,并提供自动混合精度、数据并行等功能。
要解决的痛点:分布式训练效率低,缺乏自动化优化工具。
创新点:提供分布式训练加速库,简化分布式训练流程并提升训练效率。
31. Hugging Face Peft
功能介绍:Hugging Face 的模型微调库,支持模型压缩、知识蒸馏、参数高效等技术,帮助开发者提升模型性能和效率。
要解决的痛点:模型微调流程复杂,缺乏自动化工具。
创新点:提供模型微调库,简化模型微调流程并提升模型性能和效率。
32. Hugging Face TRL
功能介绍:Hugging Face 的强化学习库,提供强化学习模型和工具,支持多种强化学习算法,包括 DQN、PPO、SAC 等。
要解决的痛点:强化学习任务开发复杂,缺乏高质量预训练模型和工具。
创新点:提供强化学习模型和工具,简化强化学习任务开发。
37. MindX SDK Reference Apps
功能介绍:MindX SDK 的参考样例仓库,提供 C++ 和 Python 两种语言的 AI 应用开发样例,涵盖图像识别、视频分析、自然语言处理等领域。
要解决的痛点:MindX SDK 使用复杂,缺乏参考样例。
创新点:提供丰富的 C++ 和 Python AI 应用开发样例,帮助开发者快速学习和掌握 MindX SDK。
38. ModelZoo
功能介绍:昇腾的 AI 模型平台,提供开源的 AI 模型和基于昇腾的实操案例,涵盖计算机视觉、自然语言处理、语音、推荐、多模态、大语言模型等领域。
要解决的痛点:AI 模型开发复杂,缺乏开源模型和案例。
创新点:提供开源的 AI 模型和基于昇腾的实操案例,简化 AI 模型开发流程。
39. ModelZoo-GPL
功能介绍:昇腾的开源 AI 模型平台,提供基于 GPL 许可证的 AI
模型和基于昇腾的实操案例,涵盖计算机视觉、自然语言处理、语音、推荐、多模态、大语言模型等领域。
要解决的痛点:缺乏基于 GPL 许可证的 AI 模型和案例。
创新点:提供基于 GPL 许可证的 AI 模型和基于昇腾的实操案例,满足开源社区的需求。
40. ModelZoo-PyTorch
功能介绍:昇腾的 AI 模型平台,提供基于 PyTorch 框架的开源的 AI
模型和基于昇腾的实操案例,涵盖计算机视觉、自然语言处理、语音、推荐、多模态、大语言模型等领域。
要解决的痛点:缺乏基于 PyTorch 框架的开源的 AI 模型和案例。
创新点:提供基于 PyTorch 框架的开源的 AI 模型和基于昇腾的实操案例,满足 PyTorch 社区的需求。
41. Ascend ModelZoo-TensorFlow
功能介绍:昇腾的 AI 模型平台,提供基于 TensorFlow 框架的开源的 AI
模型和基于昇腾的实操案例,涵盖计算机视觉、自然语言处理、语音、推荐、多模态、大语言模型等领域。
要解决的痛点:缺乏基于 TensorFlow 框架的开源的 AI 模型和案例。
创新点:提供基于 TensorFlow 框架的开源的 AI 模型和基于昇腾的实操案例,满足 TensorFlow 社区的需求。
继续
42. Ascend ModelZoo-TensorFlow2
功能介绍:昇腾的 AI 模型平台,提供基于 TensorFlow 2.x 框架的开源的 AI
模型和基于昇腾的实操案例,涵盖计算机视觉、自然语言处理、语音、推荐、多模态、大语言模型等领域。
要解决的痛点:缺乏基于 TensorFlow 2.x 框架的开源的 AI 模型和案例。
创新点:提供基于 TensorFlow 2.x 框架的开源的 AI 模型和基于昇腾的实操案例,满足 TensorFlow 2.x 社区的需求。
43. msadvisor
功能介绍:昇腾的性能调优专家系统,通过规则集、模糊规则集、案例匹配、神经网络机器学习等方式生成性能调优知识库,帮助开发者识别性能瓶颈并输出合理的性能调优方案。
要解决的痛点:AI 应用性能调优复杂,缺乏自动化工具。
创新点:提供基于专家系统的性能调优工具,简化 AI 应用性能调优流程。
44. mxRec
功能介绍:昇腾的搜索推荐广告应用使能
SDK,提供模型训练基础功能、推荐场景特有功能以及大规模稀疏表特有功能,支持大规模搜推广场景,助力完成搜推广模型的快速高效训练。
要解决的痛点:搜索推荐广告模型训练效率低,缺乏高效训练工具。
创新点:提供高性能的搜索推荐广告模型训练框架,提升搜推广模型训练效率。
45. mxVision
功能介绍:昇腾的视觉分析 SDK,提供图像识别、目标检测、语义分割、人脸识别等 AI 应用开发工具,支持 C++ 和 Python 两种语言。
要解决的痛点:视觉分析任务开发复杂,缺乏高效开发工具。
创新点:提供高性能的视觉分析 SDK,简化视觉分析任务开发。
46. mxIndex
功能介绍:昇腾的检索聚类 SDK,提供文本检索、向量相似度检索、聚类等 AI 应用开发工具,支持 C++ 和 Python 两种语言。
要解决的痛点:检索聚类任务开发复杂,缺乏高效开发工具。
创新点:提供高性能的检索聚类 SDK,简化检索聚类任务开发。
47. mxManufacture
功能介绍:昇腾的制造质检 SDK,提供缺陷检测、分类识别、预测性维护等 AI 应用开发工具,支持 C++ 和 Python 两种语言。
要解决的痛点:制造质检任务开发复杂,缺乏高效开发工具。
创新点:提供高性能的制造质检 SDK,简化制造质检任务开发。
继续
48. Megatron-LM
功能介绍:昇腾基于 Megatron-LM 原始仓开发的适配仓,提供大型 Transformer
模型的训练和推理功能,支持数据并行、模型并行、流水线并行、分布式优化器等多种加速算法。
要解决的痛点:大型 Transformer 模型训练效率低,缺乏高效训练工具。
创新点:提供高性能的大型 Transformer 模型训练框架,提升大型 Transformer 模型训练效率。
49. MindSpeed
功能介绍:昇腾的大模型加速库,提供模型并行、流水线并行、序列并行、重计算、分布式优化器等多种加速算法,并支持昇腾专有算法,确保开箱可用。
要解决的痛点:大模型训练效率低,缺乏高效训练工具。
创新点:提供高性能的大模型加速库,提升大模型训练效率。
50. MindX-Science
功能介绍:昇腾的 AI for Science 高性能开发套件,提供高性能计算、高性能存储、高性能网络等功能,助力科学计算领域的研究和应用。
要解决的痛点:科学计算任务计算效率低,缺乏高性能计算平台。
创新点:提供高性能的 AI for Science 开发套件,提升科学计算任务计算效率。
51. Ascend ModelZoo-ACL
功能介绍:昇腾的 AI 模型平台,提供基于 ACL 接口的开源的 AI
模型和基于昇腾的实操案例,涵盖计算机视觉、自然语言处理、语音、推荐、多模态、大语言模型等领域。
要解决的痛点:缺乏基于 ACL 接口的开源的 AI 模型和案例。
创新点:提供基于 ACL 接口的开源的 AI 模型和基于昇腾的实操案例,满足 ACL 社区的需求。
54. Apex Patch
功能介绍:Apex 的代码 patch,让用户可以在华为昇腾 AI 处理器上使用 Apex 的自动混合精度训练功能,提升 AI
模型的训练效率,同时保持模型的精度和稳定性。
要解决的痛点:Apex 缺乏对昇腾 NPU 的 support。
创新点:提供 Apex 的昇腾 NPU 适配 patch,提升 AI 模型训练效率。
55. Ascend Edge And Robotics
功能介绍:昇腾边缘开发套件社区代码仓库,提供 AI 应用开发样例和外设使用指导,涵盖图像识别、目标检测、视频分析等领域。
要解决的痛点:边缘 AI 应用开发缺乏参考样例和外设使用指导。
创新点:提供边缘 AI 应用开发样例和外设使用指导,简化边缘 AI 应用开发。
56. Ascend-volcano-plugin
功能介绍:基于开源 Volcano 调度器的插件机制,增加昇腾处理器的亲和性调度和虚拟设备调度特性,最大化发挥昇腾处理器计算性能。
要解决的痛点:Volcano 调度器缺乏对昇腾处理器的亲和性调度和虚拟设备调度支持。
创新点:提供昇腾处理器的亲和性调度和虚拟设备调度插件,提升昇腾处理器的计算性能。
57. hccl-controller
功能介绍:用于生成训练作业所有 Pod 的 hccl.json 配置文件的组件,方便 NPU 训练任务更好地协同和调度底层的昇腾处理器。
要解决的痛点:NPU 训练任务缺乏便捷的 hccl.json 配置生成工具。
创新点:提供便捷的 hccl.json 配置生成工具,简化 NPU 训练任务配置。
58. NodeD
功能介绍:节点心跳检测组件,当 NodeD 最近一次上报心跳之后一段时间内未再次上报心跳时,调度组件就会认为 NodeD
所在的节点故障,从而触发故障重调度。
要解决的痛点:集群缺乏节点故障检测和重调度机制。
创新点:提供节点故障检测和重调度机制,提升集群稳定性。
59. NPU-Exporter
功能介绍:用于收集华为 NPU 各种监控信息和指标,并封装成 Prometheus 专用数据格式的服务组件。
要解决的痛点:NPU 监控信息缺乏便捷的收集和展示工具。
创新点:提供 NPU 监控信息收集和展示工具,方便开发者监控 NPU 运行状态。
60. Ascend Docker Runtime
功能介绍:为所有 AI 训练/推理作业提供 Ascend NPU 容器化支持,使用户 AI 作业能够以 Docker 容器的形式平滑运行在昇腾设备之上。
要解决的痛点:AI 作业缺乏便捷的容器化部署方式。
创新点:提供 AI 作业容器化部署工具,简化 AI 作业部署。
62. Opencv ACL 模块安装及使用
功能介绍:Opencv 部分模块 对 AscendCL 的支持,包括 MAT 类及部分矩阵操作函数。
要解决的痛点:Opencv 缺乏对 AscendCL 的支持。
创新点:提供 Opencv ACL 模块,方便开发者使用 Opencv 进行 AI 应用开发。