0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用NVIDIA模型分析仪最大限度地提高深度学习的推理性能

电子设计 来源: 电子设计 作者: 电子设计 2020-10-21 19:01 次阅读

你已经建立了你的深度学习推理模型并将它们部署到 NVIDIA Triton Inference Serve 最大化模型性能。 你如何进一步加快你的模型的运行速度? 进入 NVIDIA模型分析器 ,一个收集模型计算需求的工具。

没有这些信息,在理解在GPU上运行多少模型方面就存在知识差距。 通过收集冷热储存需求,您可以使用它们通知模型的调度,以获得几个好处:

最大化模型吞吐量—确保放置在每个GPU上的模型总和不超过可用内存和GPU利用率的特定阈值,例如100%。这样可以最大限度地提高硬件的吞吐量。

优化硬件使用—检查GPU内存需求,以便在较少硬件上运行更多型号。您可以使用此数据来确定每个GPU可以加载的最大模型数,而不是优化吞吐量,从而减少所需的硬件,或者权衡吞吐量的权衡。

提高了可靠性—通过了解在GPU上加载的模型不会超出其能力,消除内存不足错误。

此外,还有两个关键的非调度好处:

有效的模式—比较和对比不同的模型,将计算需求作为一个额外的数据点来衡量模型的性能。这有助于生成更轻量级的模型,并减少推理所需的内存量。

更好的硬件尺寸—使用内存需求确定运行模型所需的确切硬件数量。

总之,理解推理模型的计算要求提供了从模型创建和硬件大小到模型的可靠、高效运行的大量好处。 下面我们来看看ModelAnalyzer,看看它如何为最高性能的推理解决方案做出贡献。

获取模型分析器Docker容器

在使用推理服务器容器之前,必须安装一些软件,如Docker。 有关更多信息,请参见 安装Docker和NVIDIA Docke 一节进去 NVIDIA Docker:GPU服务器应用程序部署容易.

模型分析器作为Helm图表、Docker容器或独立命令行接口运行。 对于本教程,您可以从源代码the构建Docker容器 triton-inference-server/model_analyzer Github回购。

git clone https://github.com/triton-inference-server/model_analyzer.git
cd model_analyzer
docker build -t memory-analyzer

要为您的模型运行容器,请确保端口8000、8001和8002可用。 然后,运行以下命令,替换大写参数

docker run -v /var/run/docker.sock:/var/run/docker.sock /
-v /ABSOLUTE/PATH/TO/MODELS:ABSOLUTE/PATH/TO/MODELS /
-v /ABSOLUTE/PATH/TO/EXPORT/DIRECTORY:/results --net=host /
memory-analyzer:ANALYZER-VERSION /
--batch BATCH-SIZES /
--concurrency CONCURRENCY-VALUES /
--model-names MODEL-NAMES /
--triton-version TRITON-VERSION /
--model-folder /ABSOLUTE/PATH/TO/MODELS /
--export --export-path /results/

这里有一个示例命令供参考:

docker run -v /var/run/docker.sock:/var/run/docker.sock /
-v /home/user/models: /home/user/models /
-v /home/user/results:/results --net=host /
memory-analyzer:latest /
--batch 1,2,4 /
--concurrency 1,2,4 /
--model-names chest_xray,covid19_xray/
--triton-version 20.02-py3 /
--model-folder /home/user/models /
--export --export-path /results/

容器完成后,每个模型、批处理大小和并发值的度量将导出到您选择的目录中。 信息是通过在系统运行时收集度量来收集的,因此在一个孤立的GPU或仅运行模型分析器的系统上运行它是理想的。

使用计算需求进行优化

下面是如何使用这些度量来优化系统性能。 我们讨论了两个使用医学推断模型的案例研究:

第一个案例研究探讨了如何将间歇性运行的系统的硬件最小化,例如需要在最小硬件上运行许多模型的低成本医疗提供商。

第二个案例研究探讨了使用最少的硬件来最大化这些相同模型的吞吐量,例如在一致的基础上运行许多模型的大型急诊室。

这两个案例研究都是手动完成这些步骤的,因此我们最后讨论了将模型元数据纳入自动调度的下一步。 对于这两项研究,为了简化分析,我们使用总结的数据,对每个模型使用2的模型批处理大小和4的并发。

马克斯记忆用法(%) 马克斯GPU使用(%) 最大GPU内存(MB)
0 9 309

表1。 只运行TritonServer的内存使用。

Model Batch 流率 马克斯记忆用法(%) 马克斯GPU使用(%) 最大GPU内存(MB)
classification_breast 2 4 1381.6推断/秒 1 23 1461
classification_chest 2 4 172.4推断/秒 11 56 5035
分类_玛利亚 2 4 586推断/秒 2 43 1851
节段_CT_Colon_Tumo 2 4 33.6推断/秒 60 60 6955
segmentation_ct_胰腺 2 4 29.6推断/秒 51 79 6955
节段_CT_脾 2 4 32推断/秒 54 54 6955
肝段 2 4 28推断/秒 53 76 11051
分段_MRI_脑_肿瘤 2 4 4推断/秒 48 48 8579
分段_MRI_海马 2 4 30.8推断/秒 52 52 6955

表2。 每个运行模型的内存使用情况。

通常,有几种潜在的方法:

每个GPU放置一个模型。 这意味着这9种型号的9个GPU。 例如,如果要在DGX上运行,这种方法将需要两个不能充分利用的DGX。

把所有的模型放在一个GPU上。 这只需要一个GPU,但会导致“内存不足”错误。

在每个GPU上放置任意数量的模型。 这涉及到以前方法的问题。 如果每个GPU放置两个模型,则只需要5个GPU。 然而,记忆错误仍然是一个风险,例如,如果你把肝脏分割和脑肿瘤分割模型放在一个GPU上。 同时,其他GPU没有得到充分或最佳的利用,例如当您将乳房和胸部x射线分类放在一个GPU上时。

另一种选择是什么?

案例研究:尽量减少间歇系统的硬件

想象一下,你有一个系统,你知道它只会断断续续地出现,所以你想在最少的硬件上安装尽可能多的模型。 在这种情况下,GPU内存是瓶颈。 您可以为Triton Server减去309MB的内存,以单独获得模型的GPU内存,然后查看在GPU上的一个服务器上可以容纳多少模型。

表3显示,可以匹配的模型只使用四个16GB GPU与以下配置,这协调了最小的GPU可能为这些模型,需要53GB的内存。

GPU # 模特儿典型 带有服务器的GPU内存(MB
1 分类_胸部,节段_CT_结肠_肿瘤 11681
2 classification_breast,segmentation_live 12203
3 分类_疟疾,节段_MRI_海马,节段_CT_脾 15143
4 节段_CT_胰腺,节段_MRI_脑_肿瘤 15225

表3。 最小硬件的示例配置。

使用这种配置,您的GPU数量最少,同时保证没有内存错误。 这是一个很好的设置,用于间歇性地运行模型,当吞吐量不需要达到最大值时。

案例研究:最大限度地提高一致的、关键的系统的性能

对于此设置,最大吞吐量是优先级,因此必须确保吞吐量不会因为所有模式的并发负载而下降。 查看所有指标,以确保内存利用率、GPU利用率和GPU内存总量不超过机器的计算资源。

As total GPU utilization adds up to 491% and would therefore require a minimum of five GPUs, compared to total memory utilization (332%, or four GPUs) or total GPU memory (52 GB, or four GPUs), GPU utilization is the bottleneck and a great place to start.

表4假设GPU利用率阈值为100%,并显示了一个只有6个16GB GPU的示例配置。

GPU # 模特儿典型 内存使用(%) GPU使用(%) 带有服务器的GPU内存(MB
1 节段_CT_Colon_Tumo 60 60 6955
2 肝段 54 76 11051
3 classification_chest,classification_breast 12 79 2939
4 segmentation_ct_pancreas 51 79 6955
5 级化_级,细分_级 56 97 8497
6 Segmentation_MRI_海马,segmentation_mri_brain_tumo 100 100 15225

表4。 最大吞吐量的示例配置。

这与每个模型的批处理大小和并发值相同。 通过调整,使用不同的批处理大小和并发值来最大化吞吐量,内存和GPU利用率会有更高的变化,从而节省更多的资源。 此外,如果您的系统可以牺牲一些吞吐量,您可以使用更少的硬件,只需占用内存或GPU利用率的100。

进一步用例:自动调度

虽然这两个案例研究显示了优化系统运行的手工操作,但最有可能的用例是将这些数据自动纳入调度。 调度规则将放在计算需求之上,例如在模型运行时不要使用超过80%的GPU或80%的GPU内存。 这样的规则是你的模式,模型的使用计算元数据收集。

有了计算机需求,您就可以确定什么对您最重要,并从硬件中获得最大的性能。

结局推论

使用Triton Server工具Model Analyzer,您可以轻松高效地描述您的模型,使您能够最大限度地提高硬件的性能。 无论您使用命令行接口、Docker容器还是Helm图表,ModelAnalyzer都会收集模型的计算需求,允许您最大化性能并最小化运行模型所需的硬件。

正如将9个GPU减少到4个或6个GPU的案例研究所显示的,将这些数据合并到您的调度中是非常强大的。 对数据的进一步探索提供了对批处理大小和并发如何影响模型的洞察,使您能够使用Triton Server以最大的性能运行模型。

Model Analyzer 是开源的,在GitHub上可用。

关于作者

关于大卫·亚斯特雷姆斯基
大卫·亚斯特雷姆斯基是NVIDIA的软件实习生,从事克拉拉部署工作。 他是一名硕士学位学生,在宾夕法尼亚大学学习计算机科学,对医疗AI充满热情,未来人人都能获得高质量的医疗保健。


审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 分析仪
    +关注

    关注

    0

    文章

    1474

    浏览量

    51992
  • NVIDIA
    +关注

    关注

    14

    文章

    4862

    浏览量

    102751
  • 深度学习
    +关注

    关注

    73

    文章

    5485

    浏览量

    120931
收藏 人收藏

    评论

    相关推荐

    AI大模型深度学习的关系

    人类的学习过程,实现对复杂数据的学习和识别。AI大模型则是指模型的参数数量巨大,需要庞大的计算资源来进行训练和推理
    的头像 发表于 10-23 15:25 337次阅读

    最大限度提高MSP430™ FRAM的写入速度

    电子发烧友网站提供《最大限度提高MSP430™ FRAM的写入速度.pdf》资料免费下载
    发表于 10-18 10:09 0次下载
    <b class='flag-5'>最大限度</b>地<b class='flag-5'>提高</b>MSP430™ FRAM的写入速度

    最大限度提高GSPS ADC中的SFDR性能:杂散源和Mitigat方法

    电子发烧友网站提供《最大限度提高GSPS ADC中的SFDR性能:杂散源和Mitigat方法.pdf》资料免费下载
    发表于 10-10 09:16 0次下载
    <b class='flag-5'>最大限度</b>地<b class='flag-5'>提高</b>GSPS ADC中的SFDR<b class='flag-5'>性能</b>:杂散源和Mitigat方法

    利用智能eFuses最大限度地缩短系统停机时间

    电子发烧友网站提供《利用智能eFuses最大限度地缩短系统停机时间.pdf》资料免费下载
    发表于 09-25 10:25 0次下载
    <b class='flag-5'>利用</b>智能eFuses<b class='flag-5'>最大限度</b>地缩短系统停机时间

    如何在C2000设备中最大限度利用GPIO

    电子发烧友网站提供《如何在C2000设备中最大限度利用GPIO.pdf》资料免费下载
    发表于 09-19 13:40 0次下载
    如何在C2000设备中<b class='flag-5'>最大限度</b>地<b class='flag-5'>利用</b>GPIO

    开箱即用,AISBench测试展示英特尔至强处理器的卓越推理性能

    近期,第五代英特尔®至强®可扩展处理器通过了中国电子技术标准化研究院组织的人工智能服务器系统性能测试(AISBench)。英特尔成为首批通过AISBench大语言模型(LLM)推理性能测试的企业
    的头像 发表于 09-06 15:33 267次阅读
    开箱即用,AISBench测试展示英特尔至强处理器的卓越<b class='flag-5'>推理性能</b>

    利用TI GaN中的集成电流检测功能更大限度提高系统效率

    电子发烧友网站提供《利用TI GaN中的集成电流检测功能更大限度提高系统效率.pdf》资料免费下载
    发表于 08-29 11:28 0次下载
    <b class='flag-5'>利用</b>TI GaN中的集成电流检测功能更<b class='flag-5'>大限度</b><b class='flag-5'>提高</b>系统效率

    魔搭社区借助NVIDIA TensorRT-LLM提升LLM推理效率

    “魔搭社区是中国最具影响力的模型开源社区,致力给开发者提供模型即服务的体验。魔搭社区利用NVIDIA TensorRT-LLM,大大提高了大
    的头像 发表于 08-23 15:48 365次阅读

    Torch TensorRT是一个优化PyTorch模型推理性能的工具

    那么,什么是Torch TensorRT呢?Torch是我们大家聚在一起的原因,它是一个端到端的机器学习框架。而TensorRT则是NVIDIA的高性能深度
    的头像 发表于 01-09 16:41 1478次阅读
    Torch TensorRT是一个优化PyTorch<b class='flag-5'>模型</b><b class='flag-5'>推理性能</b>的工具

    Wi-SUN 可最大限度提高太阳能跟踪器的性能

    的影响。通过利用尽可能多的能量,太阳能光伏跟踪器成为一大关键,可最大限度提高太阳能发电厂的投资回报。 无线带来了可扩展性和更大的灵活性 在每个太阳能发电厂部署中,选择无线还是有线连接的跟踪器要取决于具体的要求、规
    的头像 发表于 01-07 08:38 629次阅读
    Wi-SUN 可<b class='flag-5'>最大限度</b>地<b class='flag-5'>提高</b>太阳能跟踪器的<b class='flag-5'>性能</b>

    如何最大限度减小电源设计中输出电容的数量和尺寸?

    如何最大限度减小电源设计中输出电容的数量和尺寸?
    的头像 发表于 12-15 09:47 437次阅读
    如何<b class='flag-5'>最大限度</b>减小电源设计中输出电容的数量和尺寸?

    最大限度提高高压转换器的功率密度

    电子发烧友网站提供《最大限度提高高压转换器的功率密度.doc》资料免费下载
    发表于 12-06 14:39 308次下载

    用上这个工具包,大模型推理性能加速达40倍

    作者: 英特尔公司 沈海豪、罗屿、孟恒宇、董波、林俊 编者按: 只需不到9行代码, 就能在CPU上实现出色的LLM推理性能。 英特尔  Extension for Transformer 创新
    的头像 发表于 12-01 20:40 1090次阅读
    用上这个工具包,大<b class='flag-5'>模型</b><b class='flag-5'>推理性能</b>加速达40倍

    最大限度保持系统低噪声

    最大限度保持系统低噪声
    的头像 发表于 11-27 16:58 400次阅读
    <b class='flag-5'>最大限度</b>保持系统低噪声

    最大限度提高∑-∆ ADC驱动器的性能

    电子发烧友网站提供《最大限度提高∑-∆ ADC驱动器的性能.pdf》资料免费下载
    发表于 11-22 09:19 0次下载
    <b class='flag-5'>最大限度</b><b class='flag-5'>提高</b>∑-∆ ADC驱动器的<b class='flag-5'>性能</b>