\

使用GraphcorePopVision分析工具优化AI性能

作者:

分享  

Share on weixin
Share on weibo
Share on linkedin

订阅

作为Poplar软件栈重要更新—— Poplar SDK 2.0的一部分,Graphcore为PopVisionTM系列分析工具发布了重要的新功能。我们创建了PopVision计算图分析工具和系统分析工具,帮助开发人员在IPU系统上实现其应用程序性能最大化。此次软件版本更新的同时,我们也在研究如何最有效地使用PopVision工具来告知和优化机器学习程序。

凭借其大规模并行架构,IPU专为机器智能工作负载而全新构建,因此即使在最复杂的AI模型中也能够提供最先进的性能。因此,我们的许多用户通常不仅希望运行标准的机器智能模型,还希望从IPU系统挖掘最高性能。而IPU系统的最高性能超越了他们使用其他系统所能实现的性能。对于这些高级AI从业人员,我们的PopVision分析工具是宝贵的资源,可以帮助他们优化程序并进一步加速应用程序。

存储如何影响模型性能

在基于传统GPU SIMD(单指令,多数据)架构的处理器中,所有的处理器内核同时执行相同的任务。相比之下,IPU基于大规模并行MIMD(多指令,多数据)架构,因此IPU芯片和系统遵循批量同步并行(BSP)调度——同步、计算、交换。

这意味着芯片上的tile(tile是独立的处理单元)可以并行地同时执行许多不同的任务。在某些情况下,某些tile可能正在执行更复杂的任务,可能需要比其他tile花费更多时间才能完成计算,从而导致某些tile“等待”其他tile完成其运算。

当模型存储均匀分布时,tile在等候同步上花费的时间更少,因为每个tile需要执行的处理量大体相似。平衡存储分布同时也使模型能够使用更大的批尺寸,并能够结合重新计算显著提升性能。

存储报告包含各种交互式可视化效果,使开发人员可以查看每个IPU tile的存储或每个IPU芯片的存储,并查看有关顶点、交换和变量的更多详细信息。

Bert-Large-128模型的存储报告

存储变量的新表格视图使快速识别使用了过多存储的变量变得更加容易。该表显示了按升序或降序排列的变量列表,如果开发人员选择了多个tile,则可以查看和比较这些tile。当开发人员正在查看两个非常相似的模型并试图确定为什么一个模型的性能要明显优于另一个模型时,这个功能就特别有用。通过使用PopVision中的报告比较功能和这一新的存储变量表格视图,IPU开发人员可以快速查看哪些变量最占用存储,并了解哪些优化可能有助于平衡这些存储峰值。

新的变量表视图比较了ResNet-20模型,批尺寸4和8

PopVision计算图分析工具还包括一个活动性报告,以显示存储中的临时峰值,从而提供更多洞察,以了解为了帮助优化,模型中使用了最多存储的位置。

现在,活动性报告有一个选项,可以选择活动性计算图上的多个点以比较程序步骤之间的变量。在IPU上进行编程的开发人员可以在程序步骤中找到运算的开始和结束,并查看这两点之间活动是增加了还是减少了。这样可以更好地了解存储使用率达到指定峰值期间在变量层发生的情况。

如何优化运算执行速度

使用PopVision执行跟踪报告作为指导,可以平衡运算,以便更高效地利用IPU tile和IPU,并在等候同步上花费尽可能少的时间。

执行跟踪报告用于帮助平衡分布在多个IPU上的运算,并显示程序中每个步骤的周期计数、详细统计信息、tile平衡、周期比例和计算集详细信息。

ResNet模型的执行跟踪报告,包括BSP跟踪
IPU 1的BSP跟踪沿x轴具有循环,在y轴上具有tile

最新的PopVision版本包括网络中每一层以及整个网络所需的浮点运算数。浮点运算计数基于所涉及操作的Poplar实现。这些计数可以帮助开发人员设立模型在IPU上将要产生的吞吐量。例如,模型的总浮点运算可用于确定高吞吐量推理应用程序每秒的输出速率。

要让Poplar报告估计的浮点运算数,开发人员需要设置poplar引擎选项profiler.includeFlopEstimates.

浮点运算估计

在上一个版本中,我们为Poplar和PopLibs添加了增强的调试信息,可以在计算图分析工具中查看。增强的调试信息让开发人员能够了解哪个PopLibs API调用已在IPU上创建了变量或计算集,并查看传递给PopLibs API的参数。

在这一版本中,我们将增强的调试信息扩展到了TensorFlow和PopART。开发人员现在可以查看创建计算集或变量的TensorFlow或PopART运算的详细信息。

ONNX运算的增强调试信息

我们使用增强的调试信息,创建了一个新的运算摘要报告。这一新报告使开发人员可以查看应用程序各层的摘要信息,例如,模型中单个卷积的总浮点运算或matmul的总循环数。开发人员可以看到模型的哪些部分最昂贵,因而应对其进行优化。

PopART ResNet模型的运算报告

除了添加到PopVision计算图分析工具中的所有新视觉功能外,我们还致力于改进保存配置文件信息的底层文件格式。Poplar SDK 2.0在默认情况下将使用新的文件格式,这意味着开发人员可以捕获更长的执行,且PopVision计算图分析工具将更快地加载它们。我们还在Poplar SDK中包括了一个新的PopVision分析库的预览版本,该库允许对配置文件信息进行编程分析。更多详情请见Poplar SDK版本文档。

分析CPU主机系统瓶颈

PopVision系统分析工具使开发人员可以通过对Poplar的PopVision跟踪监测库、框架和用户应用程序收集的配置文件信息进行可视化,来识别主机CPU上的瓶颈。

对于需要将大型数据集从主机馈送到IPU系统的机器学习模型,了解主机系统正在产生何种时延可能非常有用。

在这一版本中,系统分析工具可以以与计算图分析工具相同的方式,通过SSH在远程主机上打开配置文件报告。自2020年首次发布系统分析工具以来,这是最受欢迎的功能之一。

PopVision系统分析工具的创建是为了帮助开发人员了解在使用不同的IPU-POD系统时应用程序的扩展方式。在使用这些系统进行测试时,我们发现它们使用许多线程来为每次迭代准备数据。为了帮助开发人员更好地理解这些配置文件,我们添加了压缩和扩展单个线程的选项。

ResNet模型的系统分析工具主机配置文件

新的调用树视图已添加到PopVision系统分析工具中。开发人员现在可以在CPU上查看其应用程序执行过程中的瓶颈,并查看每个配置函数的总时间和自身时间(不包括子功能所花费的时间)。这种详细程度有助于确定应用程序的哪些部分执行时间最长,并确定需要优化的区域。

开发人员还可以使用PopVision跟踪监测库(PopVision trace instrumentation library,简称PVTI)来监测自己的应用程序,并在系统分析工具中查看其应用程序配置文件。例如,开发人员可以按照GitHub上的PopVision监测教程中的说明监测高级时期(Epoch)循环。

通过使用系统分析工具和新的调用树视图,IPU开发人员可以识别CPU何时产生额外的时延。如果他们发现时延与处理其数据集的CPU有关,则可以考虑优化其数据集加载。

例如,当运行需要将图像数据集从CPU主机传递到IPU系统的计算机视觉模型时,在CPU上完成的工作会影响整体性能。在图像文件特别大(例如一组胸部X射线扫描)或需要高吞吐率时尤其如此。

用于IPU编程的工具和资源

PopVision计算图分析工具和系统分析工具是可视的、交互式分析工具,开发人员可以有效地使用它们来分析IPU系统上的应用程序性能。想了解更多关于PopVision的资讯,请阅读 PopVision用户手册。

 我们的开发者入口会定时更新IPU编程者内容,包括文档,教程,视频和应用案例。如果想要一对一指导,用户可以和Graphcore的后台支持人员联系,或者检查申请码和查看GitHub上面的教程。

阅读更多关于 Poplar SDK

 观看PopVision的简介视频

More Posts

Graphcore开源Argon Streams AV1视频解码器验证工具

没见过雪,神经网络如何模拟降雪?

Paperspace和Graphcore携手为开发者提供免费IPU

深入探讨:Hugging Face Optimum Graphcore上的视觉transformer

Paperspace上的IPU入门

Pienso和Graphcore携手,以更深入、更快速的人工智能洞见为企业赋能

获取最新的GRAPHCORE资讯

在下方注册以获取最新的资讯和更新:




    获取最新的GRAPHCORE资讯

    在下方注册以获取最新的资讯和更新: