路径: 主页 > GB/T > 第236页 > GB/T 45079-2024
| 标准编号 | GB/T 45079-2024 (GB/T45079-2024) | | 中文名称 | 人工智能 深度学习框架多硬件平台适配技术规范 | | 英文名称 | Artificial intelligence - Technical specification for deep learning framework adaption to multi-hardware platform | | 行业 | 国家标准 (推荐) | | 中标分类 | L60 | | 国际标准分类 | 35.020 | | 字数估计 | 22,257 | | 发布日期 | 2024-11-28 | | 实施日期 | 2024-11-28 | | 发布机构 | 国家市场监督管理总局、中国国家标准化管理委员会 |
GB/T 45079-2024: 人工智能 深度学习框架多硬件平台适配技术规范
ICS 35.020
CCSL60
中华人民共和国国家标准
人工智能 深度学习框架多硬件平台
适配技术规范
adaptiontomulti-hardwareplatform
2024-11-28发布
2024-11-28实施
国 家 市 场 监 督 管 理 总 局
国 家 标 准 化 管 理 委 员 会 发 布
目次
前言 Ⅲ
1 范围 1
2 规范性引用文件 1
3 术语和定义 1
4 缩略语 2
5 环境要求 2
5.1 概述 2
5.2 训练框架与硬件平台适配环境要求 2
5.3 推理框架与硬件平台适配环境要求 3
6 适配接口要求 3
6.1 概述 3
6.2 训练场景适配接口要求 4
6.3 推理场景适配接口要求 8
7 功能要求 10
7.1 训练场景适配功能要求 10
7.2 推理场景适配功能要求 10
8 测试方法 11
8.1 环境测试方法 11
8.2 接口测试方法 11
8.3 功能测试方法 12
附录A(资料性) 训练基础模型及评价指标 13
附录B(资料性) 推理模型及评价指标 14
参考文献 15
前言
本文件按照GB/T 1.1-2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定
起草。
请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。
本文件由全国信息技术标准化技术委员会(SAC/TC28)提出并归口。
本文件起草单位:中国电子技术标准化研究院、北京百度网讯科技有限公司、浪潮电子信息产业股
份有限公司、深圳云天励飞技术股份有限公司、上海壁仞科技股份有限公司、中国科学院软件研究所、
上海燧原科技股份有限公司、北京智芯微电子科技有限公司、浙江大华技术股份有限公司、上海商汤智
能科技有限公司、南京南瑞瑞腾科技有限责任公司、平头哥(上海)半导体技术有限公司、上海天数智芯
半导体有限公司、上海市人工智能行业协会、龙芯中科(合肥)技术有限公司、上海计算机软件技术开发
中心、青岛海信电子技术服务有限公司、杭州海康威视数字技术股份有限公司、中国铁建股份有限公司、
中铁第五勘察设计院集团有限公司、广电运通集团股份有限公司、北京航天自动控制研究所、中国移动
通信集团有限公司、南方电网人工智能科技有限公司、西南科技大学、美的集团(上海)有限公司、罗克佳
华科技集团股份有限公司、北京大学、天津(滨海)人工智能创新中心、中国南方电网有限责任公司、上海
文鳐信息科技有限公司、北京声智科技有限公司、北京大学长沙计算与数字经济研究院、北京电子数智
科技有限责任公司。
本文件主要起草人:徐洋、马艳军、马骋昊、吴韶华、董建、高铁柱、王志芳、丁瑞全、胡晓光、杨雨泽、
董乾、王思善、刘勇、孔维生、张行程、石超、高慧、余雪松、赵春昊、鲍薇、马珊珊、李斌斌、张强、陈文捷、
刘微、彭剑峰、李栋、郑中、郭振华、黄宇恒、王丽娜、秦日臻、梁寿愚、孟令中、俞文心、方贵明、蔡亚森、
李玮、何源宏、杨超、田涛、林志达、林克全、芮子文、陈孝良、吴岳。
人工智能 深度学习框架多硬件平台
适配技术规范
1 范围
本文件规定了在训练和推理场景下,深度学习框架适配多硬件平台的技术要求,描述了相应的测试
方法。
本文件适用于支持训练和推理功能的深度学习框架与多硬件平台完成适配,以及深度学习框架与
硬件的适配效果评价,也适用于指导人工智能软硬件适配过程。
注:本文件不涉及硬件平台的技术要求。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文
件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于
本文件。
GB/T 41867 信息技术 人工智能 术语
3 术语和定义
GB/T 41867界定的以及下列术语和定义适用于本文件。
3.1
实现对人工智能算法开发、封装、数据调用以及计算资源使用的软件库。
3.2
多硬件平台 multi-hardwareplatform
包含多种人工智能加速处理器的可提供人工智能计算能力的硬件系统。
3.3
深度学习框架可将多硬件平台作为计算资源完成深度学习模型训练与推理任务的活动。
3.4
计算图 computationalgraph
用来表示数学函数,由节点和连接构成的有向图。
注1:节点表示数学运算,即算子。
注2:连接表示数学运算之间的依赖关系。
注3:一个连接联通起始节点和终止节点。
[来源:ISO/IEC/IEEE24765:2017,3.1762.1,有修改]
3.5
整图 graph
用于描述某个深度学习特定任务的计算过程,由一系列算子和张量组成的完整的计算图。
3.6
子图 subgraph
将整图依据某种规则抽取得到的特定部分。
3.7
张量 tensor
由同一类型元素所组成的多维数组。
注:包括标量(0维)、向量(1维)、矩阵(2维)以及更高维的数组。
3.8
算子 operator
函数的名字,或表示行动的数学或逻辑符号。
注:算子由硬件定义,由软件封装。
[来源:ISO/IEC TR17903:2024,3.18,有修改]
3.9
向深度学习框架提交算子信息以实现新增算子的接口。
注:提交的内容包括算子名、输入、输出、属性等信息。
3.10
接收不同框架的计算图结构,通过计算图、多层中间表示等结构转化,自动生成硬件平台可执行指
令的工具。
4 缩略语
下列缩略语适用于本文件。
DNN:深度神经网络(DeepNeuralNetwork)
5 环境要求
5.1 概述
深度学习框架适配多硬件平台是指以深度学习框架为基础,从训练和推理两个方面适配不同组合
的硬件平台。硬件平台环境由操作系统、服务器端的训练芯片、服务器端推理芯片、移动端推理芯片和
边缘端推理芯片组成。
5.2 训练框架与硬件平台适配环境要求
5.2.1 训练框架环境
训练框架环境符合以下要求:
a) 训练框架:应具备基础单机单卡、单机多卡与多机多卡的模型训练方式;
b) 版本:深度学习框架与硬件AI加速库版本应是尚在维护中的版本,宜支持最新稳定版。
5.2.2 训练框架适配的硬件平台环境
训练框架适配的硬件平台环境符合以下要求:
a) 操作系统:应支持基于Linux内核的操作系统;
b) 芯片类型:应支持通用人工智能训练芯片,以及至少一款支持训练的人工智能加速芯片;
c) 设备识别:硬件驱动应支持在选定操作系统上安装/卸载,设备可正确识别,宜支持容器映射;
d) 分析监控:硬件宜提供设备的状态监控工具与性能分析工具,用于检测设备健康状态。
5.3 推理框架与硬件平台适配环境要求
5.3.1 云侧推理框架与端侧推理框架环境
云侧推理框架与端侧推理框架环境符合以下要求:
a) 推理框架:应具备基础模型推理功能;
b) 版本:深度学习框架与硬件AI加速库版本应是尚在维护中的版本,宜支持最新稳定版。
5.3.2 云侧推理框架适配的硬件平台环境
云侧推理框架适配的硬件平台环境应符合5.2.2的规定。
5.3.3 端侧推理框架适配的硬件平台环境
端侧推理框架所适配的硬件平台环境符合以下要求:
a) 操作系统:应支持智能终端操作系统和嵌入式操作系统中的一种;
b) 芯片类型:应支持通用人工智能推理芯片,以及至少一款支持推理的人工智能加速芯片;
c) 设备识别:硬件驱动应支持在选定操作系统上安装/卸载,设备可正确识别,宜支持容器映射;
d) 分析监控:硬件宜提供设备的状态监控工具和性能分析工具,用于检测设备健康状态。
6 适配接口要求
6.1 概述
在训练和推理过程中,深度学习框架通过多个接口适配硬件平台的软件栈,完成软硬件平台的互
通,深度学习框架多硬件平台适配接口(见图1)包括设备管理模块接口、计算执行模块接口和分布式通
信模块接口三个部分,其中面向云测和端侧的推理过程,分布式通信模块接口不做必选要求。
图1 深度学习框架多硬件平台适配接口
适配接口与图1中接口对应,具体接口功能包括如下。
a) 设备管理模块接口:图1接口a(训练侧定义见6.2.1,推理侧定义见6.3.1),对硬件平台驱动与
运行时的接入接口进行抽象与封装,并向计算执行模块、训练与推理框架提供一致的设备管理
模块功能。设备管理模块接口主要包括设备管理接口、内存管理接口、执行流管理接口和事件
管理接口,允许各硬件自行实现相应设备管理接口接入框架。
b) 计算执行模块接口:实现深度学习框架算子与目标硬件算子内核函数的映射与匹配,针对不同
硬件类型规范不同的适配接口。计算执行模块接口提供算子开发或映射、子图或整图接入、编
译器后端接入3种适配接口,硬件平台根据环境类型选择接口:
1) 算子开发或映射:见图1接口b(训练侧定义见6.2.2.1,推理侧定义见6.3.2.1),若硬件支
持可编程算子内核开发语言,或硬件具备对应的AI算子库,则选择该方式接入;
2) 子图或整图接入:见图1接口c(训练侧定义见6.2.2.2,推理侧定义见6.3.2.2),若硬件支
持图引擎,则选择该方式进行子图或整图接入;
3) 神经网络编译器:见图1接口d(训练侧定义见6.2.2.3,推理侧定义见6.3.2.3),若硬件支
持编译器后端,或硬件支持代码生成器,则选择该方式进行神经网络编译器的算子接入。
c) 分布式通信模块接口:见图1接口e(训练侧定义见6.2.3,推理侧定义见6.3.3),对硬件平台集
合通信库接入框架的接口进行封装与抽象,为上层框架提供一致的分布式通信模块接口,硬件
自行实现相应接口接入框架。
6.2 训练场景适配接口要求
6.2.1 设备管理模块接口
6.2.1.1 设备管理接口
设备管理接口定义见表1。
表1 设备管理接口
接口名称 英文名称 必选/可选 接口说明
获取设备名称 get_device_name 可选 获取设备名称
获取设备型号 get_device_type 可选 获取设备型号
获取驱动版本号 get_driver_version 可选 获取驱动版本号
获取运行时版本号 get_runtime_version 可选 获取运行时版本号
指定任务运行使用的设备 set_device 必选 后续任务执行在该指定设备上
获取当前使用的设备ID get_device 必选 获取当前任务使用的硬件设备ID
设备同步等待 synchronize_device 必选 阻塞程序直到设备上所有任务完成
获取可用设备数量 get_device_count 必选 获取当前可用设备数量
获取可用设备列表 get_device_list 可选 获取当前可用设备号列表
获取设备算力 get_compute_capability 可选 获取设备算力
初始化硬件 initialize 可选 初始化硬件后端
去初始化硬件 finalize 可选 去初始化硬件后端
初始化设备 init_device 可选 初始化指定硬件设备
去初始化设备 deinit_device 可选 去初始化指定硬件设备
6.2.1.2 内存管理接口
内存管理的接口定义见表2。
表2 内存管理接口
接口名称 英文名称 必选/可选 接口说明
申请设备内存 device_memory_alocate 可选 申请设备内存
释放设备内存 device_memory_dealocate 可选 释放设备内存
申请主机锁页内存 host_memory_alocate 可选 申请主机锁页内存
释放主机锁页内存 host_memory_dealocate 可选 释放主机锁页内存
申请统一地址内存 unified_memory_alocate 可选 申请统一地址内存
释放统一地址内存 unified_memory_dealocate 可选 释放统一地址内存
主机到设备同步内存拷贝 memory_copy_h2d 可选 主机到设备同步内存拷贝
设备到主机同步内存拷贝 memory_copy_d2h 可选 设备到主机同步内存拷贝
设备内同步内存拷贝 memory_copy_d2d 可选 设备内同步内存拷贝
设备间同步内存拷贝 memory_copy_p2p 可选 设备间同步内存拷贝
主机到设备异步内存拷贝 async_memory_copy_h2d 可选 主机到设备异步内存拷贝
设备到主机异步内存拷贝 async_memory_copy_d2h 可选 设备到主机异步内存拷贝
设备内异步内存拷贝 async_memory_copy_d2d 可选 设备内异步内存拷贝
设备间异步内存拷贝 async_memory_copy_p2p 可选 设备间异步内存拷贝
设备内存填充 device_memory_set 可选 使用值填充某块设备内存
查询设备内存状态 device_memory_stats 可选 设备内存使用情况查询
获取设备内存最小块大小 device_min_chunk_size 可选 获取设备内存最小块大小
获取设备内存最大块大小 device_max_chunk_size 可选 获取设备内存最大块大小
设备最多可分配内存大小 device_max_aloc_size 可选 设备最多可分配内存大小
分配设备内存的填充字节 device_extra_padding_size 可选 分配设备内存的填充字节
设备初始分配的内存大小 device_init_aloc_size 可选 设备初始分配的内存大小
设备重分配的内存大小 device_realoc_size 可选 设备重分配的内存大小
6.2.1.3 执行流管理接口
执行流管理的接口定义见表3。
表3 执行流管理接口
接口名称 英文名称 必选/可选 接口说明
创建设备执行流 create_stream 可选 创建设备执行流
销毁设备执行流 destroy_stream 可选 销毁设备执行流
查询设备执行流信息 query_stream 可选 查询设备执行流信息
表3 执行流管理接口 (续)
接口名称 英文名称 必选/可选 接口说明
同步设备执行流 synchronize_stream 可选 等待执行流所有任务完成
添加主机回调函数 stream_add_calback 可选 添加主机回调函数
等待执行流某个事件完成 stream_wait_event 可选 等待执行流某个事件完成
6.2.1.4 事件管理接口
事件管理的接口见表4。
表4 事件管理接口
接口名称 英文名称 必选/可选 接口说明
创建设备事件对象 create_event 必选 创建设备事件对象
销毁设备事件对象 destroy_event 必选 销毁设备事件对象
设备执行流上记录事件 record_event 必选 设备执行流上记录某事件
查询事件是否完成 query_event 可选 查询该设备事件是否完成
同步设备事件 synchronize_event 必选 阻塞直到该设备事件完成
6.2.2 计算执行模块
6.2.2.1 算子注册接口
深度学习框架应提供硬件算子的内核函数注册接口,供目标硬件进行内核函数或DNN算子库的
接入,见表5。
表5 硬件算子注册接口
项目 内容
接口名称 算子内核函数注册
建议英文名称 REGISTER_KERNEL
接口功能说明 注册框架算子的内核函数
接口输入参数 见表6
接口输出参数 无(void)
硬件算子注册接口所需的输入参数见表6。
表6 硬件算子注册接口输入参数
参数名称 输入/输出类型 数据类型 必选/可选 参数说明
算子名称 输入参数 字符串 必选 框架算子名称
硬件名称 输入参数 字符串 必选 硬件后端名称
表6 硬件算子注册接口输入参数 (续)
参数名称 输入/输出类型 数据类型 必选/可选 参数说明
布局类型 输入参数 枚举 可选 输入张量的数据布局类型
内核函数 输入参数 函数 必选 硬件算子内核函数
数据类型 输入参数 枚举 必选 算子支持的输入张量的数据类型
6.2.2.2 子图或整图接入接口
深度学习框架应提供整图或子图接入接口,由硬件平台的图引擎自行接管计算图的组网与执行并
返回计算结果,见表7。
表7 图生成与执行接口
接口名称 英文名称 必选/可选 接口说明
初始化图引擎 graph_engine_initialize 可选 初始化图引擎对象
去初始化图引擎 graph_engine_finalize 可选 去初始化图引擎对象
图生成 graph_engine_generate 必选 模型计算图生成
图执行 graph_engine_execute 必选 模型计算图执行
申请设备内存 device_alocate 可选 申请设备内存
释放设备内存 device_dealocate 可选 释放设备内存
6.2.2.3 神经网络编译器接口
在硬件支持编译器后端或硬件支持代码生成器的情况下,可采用神经网络编译器来实现适配。硬
件设备生产方为其硬件提供编译器后端,通过编译器将框架侧的计算图模型根据特定硬件目标产生编
译器端的低层中间表示,然后根据硬件后端再转化为某个具体硬件上的可执行代码。编译器可由深度
学习框架实现,也可采用第三方编译器接入。采用神经网络编译器进行适配,神经网络编译器后端接入
接口规范应满足如下的要求。
a) 若深度学习框架支持神经网络编译器后端接入,则训练框架应提供框架计算图转化为编译器
高层中间表示接口,见表8。
表8 框架计算图转化编译器高层中间表示的接口
接口名称 英文名称 必选/可选 接口说明
编译器高层中间表示构建 high_level_ir_compile 可选
根据框架计算图,构建编译器
高层中间表示
b) 在硬件厂商对接的后端,编译器应提供从高层中间表示的接口转化为低层中间表示的接口,见
表9。
表9 框编译器高层中间表示转为低层中间表示的接口
接口名称 英文名称 必选/可选 接口说明
编译器高层中间转为低层
中间表示接口
lower_ir 可选
根据编译器高层中间表示,转化和
构建低层中间表示
c) 在编译器后端底层,硬件厂商应根据各自不同的接入方式,对接编译器低层中间表示,生成相
应硬件指令。接入方式包含代码生成(Codegen),算子库接入、子图计算库接入、硬件方自己
设计的IR接入等,硬件厂商根据自己硬件的支持的方式选择其中一种接入。
6.2.3 分布式通信模块接口
深度学习训练框架应提供分布式通信模块接口供硬件平台的集合通信库接入,支持框架大规模分
布式训练功能,分布式通信模块接口定义见表10。
表10 分布式通信模块接口
接口名称 英文名称 必选/可选 接口说明
生成通信ID编号 xccl_get_unique_id 可选 生成通信ID编号
获取通信ID的数据量大小 xccl_get_unique_id_size 可选 获取通信ID的数据量大小
生成集合通信对象 xccl_comm_init_rank 可选 生成集合通信对象
销毁集合通信对象 xccl_destroy_comm 可选 销毁集合通信对象
全量聚合累加通信 xccl_al_reduce 可选 全量聚合累加通信
广播通信 xccl_broadcast 可选 广播通信
累加通信 xccl_reduce 可选 累加通信
聚合通信 xccl_al_gather 可选 聚合通信
累加分发通信 xccl_reduce_scatter 可选 累加分发通信
通信组合起始 xccl_group_start 可选 通信组合起始
通信组合结束 xccl_group_end 可选 通信组合结束
点对点发送 xccl_send 可选 点对点发送
点对点接收 xccl_recv 可选 点对点接收
获取集合通信版本 xccl_get_version 可选 获取集合通信版本
获取当前通信域序号 xccl_get_comm_rank 可选 获取当前通信域序号
获取当前通信域大小 xccl_get_comm_size 可选 获取当前通信域大小
同步进程组内的所有进程 xccl_barrier 可选 同步进程组内的所有进程
切分重聚合通信 xccl_altoal 可选 切分后重聚合分发
6.3 推理场景适配接口要求
6.3.1 设备管理模块接口
推理侧设备管理模块接口应符合6.2.1的规定。
6.3.2 计算执行模块接口
6.3.2.1 算子开发或映射接口
推理侧算子开发或映射接口应符合6.2.2.1的规定。
6.3.2.2 子图或整图接入接口
深度学习推理框架宜提供子图检测、融合和执行的能力,通过硬件抽象层接口,将框架层的图的中
间表示转化为硬件厂商软件层的图的中间表示,并调用厂商接口生成硬件可执行模型后在目标硬件上
执行。
a) 子图检测、融合和执行接口包括:子图检测接口、子图编译、执行接口。
1) 子图检测接口:根据硬件支持的算子,通过检测符合条件的所有子图,并将符合条件的子
图进行融合,实现将全图切分、融合生成若干子图。
2) ......
|