您的位置:  首页 > 技术杂谈 > 正文

如何使用MindStudio轻松搞定大模型全流程开发

2024-01-22 13:00 https://my.oschina.net/u/4526289/blog/10887492 华为云开发者联盟 次阅读 条评论

本文分享自华为云社区《【如何使用MindStudio轻松搞定大模型全流程开发》,作者: 华为云社区精选。

大模型的规模和能力在迅猛发展,更大的参数、更长的序列及更多的模态是未来大模型技术的发展趋势。更大的规模的模型意味着更大规模的算力平台,算力设备的部件与任务之间的复杂关系导致调试调优的复杂度增加,需要系统的管理和收集训练过程中各维度数据,才能快速锁定模型精度及性能瓶颈,加速大模型训练。

MindStudio全流程开发工具链是华为面向昇腾AI开发者提供的一站式开发环境和工具集。针对大模型分布式训练复杂场景,MindStudio提供了从大模型迁移到精度调试到性能调优的统一工具能力,帮助开发者轻松get大模型开发密码。

一、模型迁移

由于不同硬件体系之间处理器架构、模型脚本存在差异性,基于GPU硬件体系原生开发的开源大模型,要想在昇腾处理器上运行,首先需要进行模型的迁移。

那么模型迁移主要迁哪些东西呢?

模型脚本的基本组成元素主要为“算子、API、三方库”,通常在框架层会通过这几个核心元素来搭建模型脚本,所以模型迁移的实质也是对“算子、API、三方库”的迁移。

以同框架下迁移场景为例,MindStudio迁移工具会自动扫描并完成“算子、API、三方库”兼容性分析,同时完成脚本代码替换,并在迁移完成后生成评估报告,报告中会详细说明替换信息以及是否存在无法直接替换的元素,譬如用户自定义的算子。整个迁移过程仅需要几分钟。

二、精度调试

精度决定了大模型预测的准确性,因此精度调试是大模型训练的关键步骤之一。

为了帮助开发人员快速解决算子精度问题,MindStudio通过溢出检测、精度比对等核心工具,提供了自有实现的算子运算结果与业界标准算子运算结果之间进行多维度的精度差异对比的能力,提升训练精度调测效率,单机和集群的精度问题定位时间缩短至周级。

精度预检:预检避免了常见精度工具在规模集群下的困境、对数据dump的依赖以及对整网累计误差的感知。在预检过程中,可以通过轻量化的流程提取单API统计量信息,同时,根据统计信息随机生成数据输入在NPU上运行,最大程度还原真实训练场景。最终根据相对误差、绝对误差等指标综合判定API精度是否达标,并提供真值比对选项,输出评估报告。以上预检流程可以在小时级的时间内完成,在训前就解决80%以上的算子及API精度问题。

溢出检测:应对大模型开发过程中产生大量溢出以及溢出导致参数不断更新等复杂问题。通过溢出问题性质自动分类、典型溢出问题自动分析等能力,输出问题算子报告并提供专家处理建议。

三、性能调优

大模型领域性能是一个非常受到关注的指标,一个大模型的训练可能需要成百上千张卡,耗时数个月才能完成,性能上的优化能直接且显著地降低训练成本。

同时,大模型领域的性能调优存在很多挑战,譬如:采集数据量大、解析耗时长、TimeLine数据量限制、缺少自动拆解比对工具、卡间同步、慢卡慢链路等。

MindStudio提供了系统级的集群性能调优能力,通过性能问题拆解、多维可视化Profiling及集群数据多界面可视化能力,帮助开发者迅速锁定性能瓶颈。

性能拆解将训练数据拆解为“通信、算子、调度、内存”四个维度,通过对训练耗时和内存占用的比对分析,定位到具体劣化的算子,良好地解决性能数据timeline信息量巨大用户难以入手、算子详细信息及搬运内存信息多等问题,用户可直接确认性能的主要瓶颈。

多维可视化Profiling针对PyTorch框架开发的性能数据采集和解析,提供Ascend PyTorch Profiler性能采集接口。用户通过在PyTorch训练脚本中插入Ascend PyTorch Profiler接口,执行训练的同时采集性能数据,完成训练后直接输出可视化的性能数据文件,支持单次加载多组数据并可灵活比对,内存级Profiling展示性能远超原社区水平。同时,工具中提供了Tensorboard可视化、算子级内存Profiling两个功能,支持调用栈、算子信息关联,帮助开发者在代码层级细粒度锁定性能瓶颈。

集群数据多界面可视化:提供集群可视化调优工具Ascend Insight来提升大模型集群性能调优效率。通过Ascend Insight提供Timeline流水视图、Memory视图、Operator视图、Summary视图等多维视图分析帮助用户快速发现异常点,识别性能瓶颈:

1)Timeline流水视图:支持多卡汇聚、按层过滤、数据对比、单卡时间校准、算子搜索以及统计信息

2)Memory视图:支持内存占用折线图,含进程级预留、算子级预留以及算子级占用。用户可以根据折线图找到峰值的内存占用点,并获取到对应的算子明细。

3)Operator视图:支持通过分析算子耗时统计及详情信息,快速找到计算性能瓶颈点。

4)Summary视图:支持通信/计算耗时分析以及PP场景耗时分析,基于拓扑和并行策略,结合可视分析链路进行调度分析,定位通信慢、计算慢等性能问题。

结语

以上完整地介绍了MindStudio全流程开发工具链如何通过大模型迁移、精度调试、性能调优三大步骤,支持用户以低成本快速提升百亿千亿大模型训练性能,提高开发效率。欲了解更多详情,请参阅: MindStudio- 昇腾社区 (hiascend.com)

点击关注,第一时间了解华为云新鲜技术~

 

展开阅读全文
  • 0
    感动
  • 0
    路过
  • 0
    高兴
  • 0
    难过
  • 0
    搞笑
  • 0
    无聊
  • 0
    愤怒
  • 0
    同情
热度排行
友情链接