昇腾社区首页
中文
注册
开发者
下载

多流

使用背景

在推荐推理场景下,模型大多存在算子数量大,算子shape小的特点,且通常会要求单次推理时间在合理范围内尽可能的提高吞吐量(单次推理的数据量*单位时间内的推理次数)。由于算子shape小,通常会出现算力利用率低从而导致性能不佳的情况,一般需要开启多流并行推理,提升利用率,进而提升吞吐量。

使用约束

  1. 多流并行场景下, 存在资源抢占,比如带宽,计算资源等,单个推理的时延,会比单流场景下单个推理的时延更长,在时延敏感场景使用需要做好时延控制;
  2. 多流如果不配合分核,可能会存在计算资源排队严重情况,需不需要配合分核一起使用,需要根据具体实际数据而定;
  3. 需要根据模型实际吞吐量,控制流数;流数越大,NPU利用率会越高,实际上卡的吞吐量就会越大,实际上超过流数某个阈值之后,会存在不同流之间刷cache的现象,导致整体吞吐量下降。

具体案例

  • TensorFlow demo:可以参考GitCode.com进行多流功能使能。
  • PyTorch demo:在PyTorch框架中,由于社区对多流没有直接支持,推荐直接使用多进程方式进行推理。