写点什么

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

  • 2024-01-19
    广东
  • 本文字数:2019 字

    阅读完需:约 7 分钟

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

本文分享自华为云社区《【如何使用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)


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

发布于: 刚刚阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
如何使用MindStudio轻松搞定大模型全流程开发_人工智能_华为云开发者联盟_InfoQ写作社区