跳至主要內容

Metrics

BradZhone大约 4 分钟DeepLearningMetics

Metrics

0. GOAL

各类评估指标整理汇总,影响因素,提升方法

1. 性能相关

  1. 基本概念

    • 名称内容备注
      NVLink节点内device连接方式之一
      PCIe高速串行计算机扩展总线标准节点内device连接方式之一
      Infinit Band (IB)节点间device连接方式(多机)
      ASIC专用集成电路
      FPGA现场可编辑门阵列
      SHArP软硬结合的通信协议,实现在了NVIDIA Quantum HDR Switch的ASIC里把聚合计算(reduce)从节点卸载到网络(交换机)中进行,相比tree和ring算法收发数据量大幅减少img参考:https://www.zhihu.com/question/63219175/answer/206697974
  2. 性能指标

    • 名称内容备注
      Size(Bytes)数据大小
      Description测试描述(数据量*字节数)
      Duration耗时
      Throughput(Gbps, fps, ...)吞吐,每秒处理的图片/samples/文本/...数一般用iter e2e时间来计算:$thoughput = \frac{n_{card}*batchsize}{e2e_time}$
      BusBW(Gbps)带宽
      扩展率网络训练效率与卡数关系的衡量指标$扩展率=\frac{throghput_{n card}}{n*throughput_{1card}}*100%=\frac{e2e_time_{1card}}{e2e_time_{ncard}}*100%$
  3. 性能测试

  • 影响模型性能的因素:cpu性能,gpu性能,io性能,pcie带宽,卡间/机间通信带宽

    • 分析工具:profiler,perf,top -c,注意各资源利用率
    • 模型推理或者训练过程中,输入数据(例如一张图片)的加载,解码,预处理一般是cpu执行(dataloader和transforms)。任务下发到设备侧的过程也需要cpu执行。
    • 瓶颈分析可以通过top -c看cpu利用率,profiler看设备侧执行kernel是否有空泡。
    • 影响cpu发挥性能的参数有两个:CPU scaling_governor和CPU irqbalance,一个是工作频率,一个是中断请求处理。
    • 磁盘io带宽影响数据读取的速度。
    • pcie带宽影响h2d和d2h的速度。
    • gpu做计算。显存与计算核间带宽,计算核的计算能力,运行主频影响device侧性能。(由于功耗核散热问题,当温度达到一定限度时,默认机器会自动降频,影响测试性能结果。多卡间计算耗时的不一致会导致扩展性问题)
  • 单卡:

    1. 功耗问题导致性能下降。处理方式:找静态功耗最低的卡进行测试。

    2. 某些算子性能不达标。通过profiler对比查看和竞品的耗时差异,导出gencase,优化算子性能。

    3. cpu下发慢,或者预处理加载数据问题。通过profiler查看cpu加载和预处理的耗时占整个推理的比例以及device侧是否有空泡。处理方式:更换更好的cpu,查看cpu是否充分利用,通过修改与数据加载相关的参数充分利用cpu(dataloader类的num_works多进程读取数据,pin_memory加速h2d)。pillow版本,使用pillow-simd进行预处理加速(主要的图像处理包:

      • CV2:opencv的python版本,应用较广
      • PIL:Python自带的图像处理库,但功能较简单
      • Pillow: 出发点在于PIL只支持python2.7,添加了一些新特性
      • Pillow-SIMD:Pillow增强版本,约有5倍的增益,比CV2还要快(参考open in new window ;dataloader读取数据的源码解析open in new window
    4. gpu利用率低,profiler查看gpu执行算子是否有空泡,考虑增加batchsize,增加算子吞吐,提高gpu利用率。(查看带宽和ipu利用率,判断是io瓶颈或者计算瓶颈)

    5. 注意,真实数据和权值测试的性能有时不能用假数据进行模拟,因为某些情况下随机数据和真实数据分布不一致,算子设计没考虑,导致算子性能下降,或者引起功耗问题而降频。

  • 单卡到多卡的扩展性影响因素:

    • 卡间带宽,卡间互联方式及带宽。还要考虑是不是会因为功耗墙问题导致某个卡降频而block掉其他卡的性能。(通过查看工作温度和功耗可以基本判断),处理方式,测试时锁频或者开大风扇
  • 多机通信:

    • 机间通信方式

2. 精度相关