随着AI技术和计算能力的发展,越来越多的开发者学会用tensorflow、pytorch等引擎训练模型并开发成AI应用以解决各种生产问题。在开发初期开发者往往聚焦在模型的精度上,性能关注较少,但随着业务量不断增加,AI应用的性能往往成为瓶颈,此时对于没有性能优化经验的开发者来说往往需要耗费大量精力做优化性能,本文为开发者介绍一些常用的优化方法和经验。本文首先介绍什么是AI应用性能优化,以及常用的性能优化手段,然后介绍华为云ModelBox开源框架,最后结合实际业务为例,详细讲解如何利用ModelBox框架进行快速的性能优化以及背后的原理。
一、AI应用常用性能优化方法
1、什么是AI应用性能优化
什么是AI应用性能优化? AI应用性能优化是保证结果正确的情况下,提升AI推理应用执行效率。AI应用性能优化的目的一般分为两方面:一方面可以提升用户体验,如门禁系统刷脸场景,对推理时延比较敏感,识别速度直接影响用户感官,再比如自动驾驶场景,对时延要求非常高;另一方面可以降低硬件成本,相同的硬件设备可以支撑更多的业务,当部署节点数具备一定规模时,节省的硬件成本就相当可观了。
如何去衡量性能的好坏?我们通常使用吞吐量和时延来衡量。 吞吐量在不同场景也有不同衡量指标,比如图片请求场景,一般使用qps作为吞吐量的指标,即每秒种处理的请求个数。在视频流场景,则一般使用视频并发路数来衡量。 时延是指数据输入到结果输出中间的处理时间差。正常来讲吞吐量越大越好,时延越小越好,在不同场景对吞吐量和时延的要求不一样, 对于某些时延不敏感的场景,我们可以牺牲时延来提升吞吐量。所以我们在做性能优化前需要先明确优化指标是吞吐量还是时延。
另外除此之外,在性能优化过程中,还需要重点关注一些系统资源指标,如内存、显存、CPU占用率、GPU占用率等。这些指标可以帮忙我们辅助判断当前资源使用情况,为我们做性能优化提供思路,如GPU利用率较低时,就需要针对性想办法充分利用GPU资源。
2、AI应用性能优化方法
一个AI应用可以分为模型和工程逻辑,AI应用的优化我们也可以从上到下进行划分,其中应用流程优化和应用工程优化为工程方面的优化,模型编译优化和模型算法优化则为模型优化。
应用流程优化:主要是对业务逻辑进行调整,减少一些不必要的操作以到达性能提升的效果,业务逻辑的优化有时是最快捷最有效的,往往会有事半功倍的效果。但需要具体场景具体分析。
应用工程优化:主要是软件工程方面的优化,如多线程、内存池、硬件加速等等, 对上层 ,此外模型batching也是最常见的优化手段,通过共享队列组batch以充分利用模型的batching性能。方法较通用。ModelBox框架提供的主要为应用工程优化能力。
模型编译优化:常用手段有低精度量化、混合精度等、算子融合等,此类优化会影响模型精度。
模型算法优化:对模型结构进行优化,减少模型计算量,如模型剪枝、模型蒸馏等,需要重新训练。
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/293233.html