Host Bound问题分类
Host Bound问题简介
在torch_npu训练和推理场景中,Host侧(CPU)的任务下发(如算子调度、内存分配)与Device侧(NPU)的任务执行是异步进行的。当Host侧任务下发耗时超过Device侧任务执行耗时,Device会因等待新任务而处于空闲状态,形成性能瓶颈,即Host Bound问题。
Host Bound问题表现
- 算子下发连线呈现垂直密集状态,表明NPU在等待CPU下发任务。
- 因等待导致NPU闲置时间(Free time)占比过高。图1 典型Host Bound场景性能数据
Host Bound问题优化方法
Host Bound问题主要由算子下发延迟、CPU计算负载过重两个因素导致,可采用表1方法进行优化。
优化方法 |
优势 |
说明 |
---|---|---|
算子下发优化 |
减少算子下发次数 |
|
提升算子下发速度 |
||
CPU计算优化 |
发挥异构算力优势 |
尽量减少AI CPU算子的使用,优先选用亲和性更优的算子,可参考亲和算子优化策略)。 |
发挥并行计算优势 |
促进CPU与NPU的异步并行处理(例如,将数据处理逻辑置于DataLoader中),并减少流同步操作(如谨慎使用item(), cpu(), npu() 等操作,尽量合并或避免使用)。 |
此外,存在一类属于下发异常问题,即算子下发过程因为资源抢占、操作系统调度策略冲突等因素导致耗时显著增加,参考下发异常分析。
父主题: Host Bound问题定位及解决方法