一种细粒度多维度的大规模机器学习性能分析方法技术

技术编号:34961249 阅读:18 留言:0更新日期:2022-09-17 12:40
本发明专利技术公开了计算机技术领域的一种细粒度多维度的大规模机器学习性能分析方法,基于Colossal

【技术实现步骤摘要】
一种细粒度多维度的大规模机器学习性能分析方法


[0001]本专利技术涉及计算机
,具体为一种细粒度多维度的大规模机器学习性能分析方法。

技术介绍

[0002]性能分析工具在大型软件工程中,主要用于静态分析软件运行时的各项指标,比如程序的时空复杂度、函数的调用栈、程序活动运行的开销等。不同的性能分析工具有不同的适应功能,例如有许多工具都可以用来监控Linux的运行状态。
[0003]·
vmstat
‑‑
虚拟内存统计;
[0004]·
iostat
‑‑
用于报告中央处理器统计信息;
[0005]·
dstat
‑‑
系统监控工具;
[0006]·
iotop
‑‑
LINUX进程实时监控工具;
[0007]·
pidstat
‑‑
监控系统资源情况;
[0008]目前在机器学习领域,性能分析工具被广泛运用在监控内存用量、训练各部分的程序耗时占比、硬件信息等。其中,较为出名的有PyTorch的性能分析工具。由于深度学习耗时长,逻辑流复杂、算子种类较多等特点,使得针对深度学习的性能分析比起上述单一分析某个功能的性能分析,所采集到的数据维度更多。而为了能够直观地展示这些的数据,TensorFlow团队推出了适用于机器学习性能分析的可视化工具Tensorboard,目前已经成为了事实上机器学习领域可视化的工具的标准。而另一主流深度学习框架PyTorch也开发并集成了自己的性能分析库libkineto,kineto作为PyTorch性能分析工具的核心,直接集成在PyTorch的核心代码中,并使用C++进行实现,最小化了性能分析这一进程对于本身工作流的影响。在kineto的基础上,为了方便用户使用,PyTorch又对其进行了第二次封装,提供了torch.profiler类进行使用。PyTorchProfiler允许用户规定进行性能分析的类型(GPU或CPU)来调用对应性能分析的代码。此外,PyTorch提供了非常灵活的性能分析策略,允许用户以迭代步为粒度自定义性能分析的工作流程。在分析结束后,PyTorch Profiler通过实现PyTorchTensorboard Plugin,能够将结果输出至TensorBoard进行可视化。
[0009]尽管目前主流的性能分析工具已经能够做到精确地记录当前时间各个操作的内存占用,但是对于目前内存中数据的来源却不能很好地记录。对于机器学习来说,内存中的数据可以笼统地分为模型数据和非模型数据两大类。目前PyTorch性能分析工具的内存占用部分无法将这两类数据混淆起来,从而使得机器学习系统的开发者无法即时追踪到开发过程中可能造成的内存碎片和内存释放问题。更近一步地,随着ZeRO策略以及其他内存优化策略的提出,Tensor(张量:神经网络参数存储的基本数据结构,它是一个高维度数组)被经常性地在内存和显存之间来回调度,往往拥有不同的状态。以PatrickStar为例,Tensor拥有五种不同的状态,对应不同的操作。在这种情况下,单一追踪内存的使用情况并不能向用户说明目前模型的内存分配情况,因此需要能够追踪不同状态的内存分析工具。
[0010]虽然PytTorch性能分析工具能够分析数据移动性能,但是对于数据在不同内存空
间中移动的性能分析,其存在粒度粗糙的问题,对于数据在不同节点(机器学习中计算、通信的基本单元,例如我们将一台主机称为一个节点)间的移动(通信)性能分析,其结果存在偏差。
[0011]对于数据在不同内存空间中移动的性能分析,如图2中,PyTorch性能分析工具仅仅记录了其执行时间(图1中的Memcpy),而没有分析其带宽以及数据量。我们在优化程序时,通常希望与理论性能上限进行比较,以获得当前程序对资源的利用率,从而客观的衡量程序的表现。PyTorch性能分析工具缺少了对带宽的分析,不便于我们对程序性能进行客观的评价。除此之外,由于物理硬件上的不同,数据在GPU(图形处理器、显卡)之间传输使用NVLINK(英伟达(NVIDIA)开发并推出的一种总线及其通信协议),而数据在CPU和GPU之间传输使用PCIE(PCI

Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准)总线,前者的传输带宽远高于后者。PyTorch性能分析工具并未对这两者进行区分,这样我们也无法准确的评价程序的性能。
[0012]对于数据在不同节点间的移动(通信)性能分析,如图3所示,其缺少对于带宽的性能分析。除此之外,其数据量指标计算错误,用其计算带宽,会得到偏大的结果,从而可能误导我们对程序的性能的评价,基于此,本专利技术设计了一种细粒度多维度的大规模机器学习性能分析方法,以解决上述问题。

技术实现思路

[0013]本专利技术的目的在于提供一种细粒度多维度的大规模机器学习性能分析方法,以解决上述
技术介绍
中提出的问题。
[0014]为实现上述目的,本专利技术提供如下技术方案:一种细粒度多维度的大规模机器学习性能分析方法,基于Colossal

AI Profiler和Colossal

AI Gemini内存策略管理工具一起实现,其使用的流程和PyTorch Profiler类似,Colossal

AI Profiler被设计为一个上下文管理器,能够通过with语句很快完成开启和关闭,包括如下步骤:
[0015]S1:将对应包导入,然后使用with语句初始化整个性能分析过程,在初始化过程中可以定制化施行本次性能分析的选项;
[0016]S2:如果选择追踪不同状态的Tensor,那么将开启StatefulTensorMemoryProfilerExtention;
[0017]S3:Colossal

AI.gemini.GeminiMemoryManager是所有标记向量的管理器,而内存状态追踪器就是利用它来进行数据的收集;
[0018]S4:在收集到数据后,该内存用量性能分析工具可以将收集到的数据以特定的json格式,输出到指定的路径中。
[0019]优选的,所述步骤S1中在初始化过程中可以定制化施行本次性能分析的选项包括a.需要进行分析的设备,内存和显存;b.本次性能分析所采用的策略,用户可以自定义性能分析的策略来排除性能分析进程或者模型初始化事件对于训练过程中内存占用的影响;c.辅助信息的输出,用户可以选择输出Tensor的形状,输出对应操作发生的源代码位置,测试得到的FLOPs信息;d.是否追踪不同状态的Tensor,如果开启该选项,需要传入Colossal

AI.engine.Engine实例,并通过hook机制来追踪Tensor的各个状态。
[0020]优选的,所述步骤S2中ext本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种细粒度多维度的大规模机器学习性能分析方法,基于Colossal

AI Profiler和Colossal

AI Gemini内存策略管理工具一起实现,其使用的流程和PyTorchProfiler类似,Colossal

AIProfiler被设计为一个上下文管理器,能够通过with语句很快完成开启和关闭,其特征在于,包括如下步骤:S1:将对应包导入,然后使用with语句初始化整个性能分析过程,在初始化过程中可以定制化施行本次性能分析的选项;S2:如果选择追踪不同状态的Tensor,那么将开启StatefulTensorMemoryProfilerExtention;S3:Colossal

AI.gemini.GeminiMemoryManager是所有标记向量的管理器,而内存状态追踪器就是利用它来进行数据的收集;S4:在收集到数据后,该内存用量性能分析工具可以将收集到的数据以特定的json格式,输出到指定的路径中。2.根据权利要求1所述的一种细粒度多维度的大规模机器学习性能分析方法,其特征在于:所述步骤S1中在初始化过程中可以定制化施行本次性能分析的选项包括a.需要进行分析的设备,内存和显存;b.本次性能分析所采用的策略,用户可以自定义性能分析的策略来排除性能分析进程或者模型初始化事件对于训练过程中内存占用的影响;c.辅助信...

【专利技术属性】
技术研发人员:柳泓鑫黄海晨方佳瑞李升桂卞正达李永彬刘育良麦思琪
申请(专利权)人:北京潞晨科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1