host
分析过程
profiling的timeline文件,通过chrome://tracing/网页打开,可以看到类似这种的算子下发。

如上图所示,device上存在大量气泡,卡算力未用满。
这种情况一般见于动态图场景或者单算子下发场景,依赖host侧处理计算完成后,再下发单个算子,同时算子执行时间小于host侧处理时间;
host侧有计算工作量的,通过TensorFlow原生的Profiler工具导出,查看host和device耗时占比,以及CPU利用率判断;混合计算开启后(可参考:www.hiascend.com),系统会自动把不能在device侧执行的算子留在host侧执行,也可以根据用户配置指定某些算子不下沉到device上,从而导致host计算量变高。可以通过TensorFlow原生的Profiler工具,抓取整个session->run的性能(参考www.tensorflow.org),分析host侧与device侧耗时占比。
解决方案
- 单算子下发方案替换成整图下沉。
- 动态图转静态图。
- 增大batchsize,增加算子执行时间,减少free的缝隙时间占比。
- host侧性能提升,CPU利用率过高的话,则要考虑CPU侧的一些优化。
- 集群方式部署,保证host侧资源足够。
- 单机器部署可以考虑非host bound模型和host bound模型混布。
父主题: 不同的瓶颈点