推理调优案例
案例介绍
本节面向推荐模型的推理场景,通过一个完整的代码示例,结合推理阶段的Profiling数据,分析并定位影响模型吞吐性能的关键瓶颈,并给出相应的优化策略。内容涵盖多实例并行、AICore控核策略以及批量H2D(Host-to-Device)传输等技术的实现方法,并介绍这些技术对推理吞吐性能的影响。其中:
- AI Core控核:通过配置options参数说明中的“ge.aicoreNum”参数,配置算子编译时使用的AI Core核数。
- 批量H2D:通过调用acl接口aclrtMemcpyBatch来实现批量内存复制功能。
- 多实例并行:通过多线程创建多个推理实例,来提升系统并发处理能力。
为量化评估不同特性对推理吞吐性能的影响,本实验执行10,000次推理任务(本样例模型输入数据为构造的随机值),记录单次推理耗时及总时延、计算模型吞吐量(TPS)与平均时延(ms)。
如下是
|
配置方案 |
BatchSize=128 |
BatchSize=256 |
|---|---|---|
|
单实例 |
745,55 TPS / 1.471ms |
132,247 TPS / 1.685ms |
|
单实例+批量H2D |
131,191 TPS / 0.792ms |
209,927 TPS / 1.030ms |
|
多实例并行(4) |
155,104 TPS / 2.089ms |
360,253 TPS / 2.034ms |
|
多实例并行(4)+AI Core控核(16|16) |
185,415 TPS / 1.797ms |
384,163 TPS / 1.850ms |
|
多实例并行(4)+AI Core控核(16|16)+批量H2D |
251,877 TPS / 1.285ms |
493,065 TPS / 1.317ms |
- 以单实例,BatchSize=128为基准数据,从上述表格可以看出:
- 批量H2D可以显著降低数据搬运开销,单实例场景下吞吐量提升75.9%,时延降低52.9%。
- 多实例并行吞吐量提升至单实例的2.08倍,但伴随时延增加41.7%。
- 以多实例并行,BatchSize=128为基准数据,从上述表格可以看出:
- 以多实例并行(4)+AI Core控核(16|16)+批量H2D,BatchSize=128为基准数据,从上述表格可以看出:
增大BatchSize对调度密度优化效果显著,256 BatchSize场景下吞吐量较128提升95.7%,时延增幅7.9%。
该特性仅在如下产品型号支持:
分析瓶颈点
基准用例配置如表1所示,基准用例中使用单实例、不使用AI Core控核策略、不开启批量H2D传输技术;参考Profiling性能数据采集开启Profiling性能数据采集功能。
设计优化方案
- 多实例并行
通过多线程交错执行推理任务,填补算子间空泡,提升NPU利用率。但并行推理可能导致资源竞争,增加推理延迟,应合理控制并行度以避免资源过度争用。
- 批量H2D优化
启用批量数据搬运机制,将多个输入数据合并为单次H2D操作,减少数据搬运次数并提升单次搬运量。
- AI Core资源控制
配合多实例使用,通过配置ge.aicoreNum参数限制单算子可使用的AI Core数量(如"8|8"),平衡资源分配,提高并行的同时避免过度竞争。
- 增大BatchSize
增大单次推理BatchSize,提升算子粒度与调度密度,降低调度开销占比。
下面给出批量H2D-多实例并行-AI Core控核多策略叠加场景的推理效果验证。





