场景介绍
大模型精度工具比对功能根据用户的迁移场景以及调试习惯主要分为以下场景:
序号 |
场景介绍 |
---|---|
pytorch-npu推理与加速库推理在同一个推理脚本中,开发者一般使用torch.allclose比对加速库推理输出与pytorch-npu推理输出之间的差异,但是无法直接比对加速库内部的数据与torch-npu的差异。 |
|
pytorch-npu与加速库推理在两个推理脚本中,用户分别执行torch-npu推理和加速库推理,得到两份数据,以torch-npu作为基准数据,比对加速库与基准数据直接的差异。 |
|
pytorch-gpu与加速库推理在两个推理脚本中,用户分别执行torch-gpu推理和加速库推理,得到两份数据,以torch-gpu作为基准数据,比对加速库与基准数据直接的差异。 |
|
4 |
以Operation(Layer)替换作为基准数据,比较Layer(Model)替换与基准的差异。 |
在加速库模型推理迁移开发过程中PTA侧代码的替换由小到大分为3个粒度:Operation、Layer和Model这3个粒度的替换:
- Operation粒度的替换。
若是Operation粒度的替换,PTA侧可以获取Operation的输入/输出数据,一个Operation内部会有多个kernel,PTA侧无法获取到Op内部kernel的数据,因此需要加速库侧提供数据。
如果比较Operation的输入/输出数据的精度,则称为high-level。如果比较Operation内部kernel的输入/输出数据的精度,则称为low-level。
若Operation的替换精度正常,则可以进行Layer的替换。
- Layer粒度的替换。
若是Layer粒度的替换,PTA侧可以获取整个Layer的输入/输出数据,一个Layer内部会有多个Operation或kernel,PTA侧无法获取到Layer内部Operation或者kernel的数据,因此需要加速库侧提供数据。
如果比较Layer的输入/输出数据的精度,则称为high-level。如果比较Layer内部kernel的输入/输出数据的精度,则称为low-level。若Layer的替换精度正常,则可以进行Model的替换。
- Model粒度的替换。
若是Model粒度的替换,PTA侧可以获取整个Model的输入/输出数据,一个Model内部会有多个Layer或Operation,PTA侧无法获取Model内部Layer或者Operation的数据,因此需要加速库侧提供数据。
如果比较Model的输入/输出数据的精度,则称为high-level。如果比较Model内部Layer或者Operation的输入/输出数据的精度,则称为low-level