介绍

DIOPI-设备无关算子接口(Device-Independent Operator Interface, DIOPI)在框架和芯片计算库之间定义了统一的标准接口 旨在训练框架和人工智能芯片之间定义了一套计算契约,良好的函数抽象使得上(框架)下(芯片)两层在适配工程实施时能有效地解耦。基于这套契约训练框架和人工智能芯片可以独立开发,并将下层芯片适配的工作复用到不同的训练框架适配中去,可降低芯片+框架的适配成本,保障算子实现正确性。

其主要的核心功能如下:

  1. 提供120+个标准算子接口。涵盖了分类、检测、分割及姿态估计等多个领域深度学习模型所需训练算子。

  2. 训练框架和硬件芯片的“桥梁”,提供统一的标准算子接口。以此降低训练框架和硬件芯片之间的适配成本,创造更好的国产训练生态。

  3. 提供标准测试套件,为硬件芯片实现的算子库提供调试验证功能。

结构说明

DIOPI主要包含以下几个仓库:

Quick Start

硬件芯片适配

如需在硬件芯片中进行计算接口算子实现,可进行以下步骤(具体参考 DIOPI-IMPL)。

  1. 需下载 DIOPI-IMPL仓库,可使用命令:

  2. 在 DIOPI-IMPL 中新建目录实现 DIOPI-PROTO/include/diopi/functions.h 声明的标准算子的函数。

    在设备相关目录下提供相应的编译文件,通过以下参考命令进行编译:

校验适配算子

芯片厂商完成相关算子适配后,可以下载 DIOPI-TEST仓库,并使用如下步骤进行算子正确性验证:

  1. 下载 DIOPI-TEST 测验仓库:

  2. 进入python目录,生成基准数据(需准备nv机器和pytorch1.10环境)

    使用提供的基准测试数据,下载所有数据压缩包,一个MD5SUMS文件。以Mac/Linux系统为例:

  3. 将数据拷贝到芯片机器上,执行以下命令验证算子:

  4. 验证结果分析

    测例通过的输出形式如下:

    失败的测例会额外存储测例输入参数的张量信息在 error_report.csv 中以供调试所需。

Learn More

仓库介绍

其他文档