产品介绍 ========================================================================= 什么是Lyngor ------------------------------------------------------------------------- Lyngor是由北京灵汐科技有限公司基于自研KA200类脑芯片处理器(简称KA200) 提供的计算图编程框架,提供了丰富的基本算子,支持常用的机器学习、深度 学习、类脑计算算法及模型。Lyngor支持对多种深度学习框架提供的模型文件 进行解析和编译,生成KA200所需的指令文件作为计算图推理引擎,在KA200上 加载该引擎即可进行计算图加速计算。 支持的深度学习框架包括Tensorflow、Pytorch、Keras、Caffe、MXNet、ONNX 和PaddlePaddle。 系统框架 ------------------------------------------------------------------------- .. figure:: _images/Lyngor系统框架.png :alt: Lyngor系统框架 图 Lyngor系统框架 功能支持 ------------------------------------------------------------------------- **计算图构建** - 支持使用Lyngor算子逐层构建计算图网络,进行加速计算。 - 支持将第三方框架模型转换为计算图。 **计算图编译及优化** - 支持Python接口进行计算图编译。 - 支持计算图融合等图优化方法。 - 支持计算图异构拆分。 - 提供编译工具,支持直接输入模型路径进行编译。 - 支持输入JSON格式配置文件进行编译。 - 支持对编译生成的计算图推理引擎进行序列化/反序列化。 **模型转换** 支持将第三方框架模型转换为KA200支持的模型。 **模型量化** 支持对计算图中的卷积算子进行INT8量化。 .. note:: 模型量化可将部分卷积的权重体积减少1倍,在保证精度的情况下,提升模型运行速度。 **模型修改** - 支持增加前/后处理,在输入/输出阶段修改计算图。 - 前处理包括数据类型转换和归一化操作。 - 后处理包括数据类型转换和排序操作。 - 数据类型转换支持UNIT8/INT8/FLOAT16/FLOAT32。 **异构计算** - 支持多种架构硬件平台,包括ARM(KA200)和APU(KA200)。 - 支持2种运算场景(包含1种异构运算场景),包括: - 神经网络模型全部运行在APU中。 - 神经网络模型大部分运行在APU中,少部分运行在ARM中。 .. note:: 上述APU,即KA200中的APU计算单元。同理,ARM,即KA200的ARM计算单元。 **自定义算子插件** - 提供超100个基础算子。 - 支持用户通过基础算子进行组合,自定义新算子;新算子可在APU上运行。 .. note:: 自定义算子的开发操作说明参见《Lyngor自定义算子开发指南》。 框架支持 ------------------------------------------------------------------------- 表 第三方框架支持 +--------------+------------------------------------------------------------+ | 框架 | 说明 | +==============+============================================================+ | Tensorflow | 支持Tensorflow 1.12~1.15,2.0~2.4。 | | | | | | 推荐使用Tensorflow 1.15。 | +--------------+------------------------------------------------------------+ | Keras | 推荐安装最新版本。 | +--------------+------------------------------------------------------------+ | MXNet | 推荐安装最新版本。 | +--------------+------------------------------------------------------------+ | Pytorch | 支持torch1.5.0~1.9.0。 | | | | | | 推荐使用torch 1.7.0;torchvision 0.8.0。 | +--------------+------------------------------------------------------------+ | Caffe | 推荐编译安装最新版本。 | +--------------+------------------------------------------------------------+ | ONNX | 推荐使用ONNX 1.7;opset 11及以下。 | +--------------+------------------------------------------------------------+ | PaddlePaddle | Python 3.6场景:推荐使用PaddlePaddle 2.4.2; | | | | | | Python 3.8场景:推荐使用PaddlePaddle 2.6.2。 | +--------------+------------------------------------------------------------+ 设备支持 ------------------------------------------------------------------------- - 支持使用APU库算子编译,并在KA200中的APU设备上运行。 - 支持部分算子的ARM编译,并在KA200中的ARM设备上运行。 算子支持 ------------------------------------------------------------------------- - 支持第三方框架算子。具体内容参见:《Tensorflow/Caffe/Pytorch/ONNX/Keras/MXNet/PaddlePaddle算子说明书》 - 支持开发自定义算子。具体内容参见:《Lyngor自定义算子开发指南》和《LynLang算子编程平台开发指南》 基本概念 ------------------------------------------------------------------------- 表 基本概念 +---------------+------------------------------------------------------+ | 术语 | 说明 | +===============+======================================================+ | KA200类 | 简称KA200,指由北京灵汐科技有限公司自主研发, | | 脑芯片处理器 | 应用众核类脑计算架构的SoC边缘计算芯片,用于实现人工 | | | 智能推理和类脑计算。 | +---------------+------------------------------------------------------+ | KA200衍生产品 | 指由北京灵汐科技有限公司自主研发,以KA200为核心, | | | 具有不同形态,适用于不同场景的计算产品, | | | 包括板卡和模组。 | +---------------+------------------------------------------------------+ | HP系列产品 | 指由北京灵汐科技有限公司自主研发,以KA200为核心, | | | 具有不同形态,适用于不同场景的类脑计算加速卡。 | +---------------+------------------------------------------------------+ | HM系列产品 | 指由北京灵汐科技有限公司自主研发,以KA200为核心, | | | 具有不同形态,适用于不同场景的类脑计算模组。 | +---------------+------------------------------------------------------+ | Lyngor | 是由北京灵汐科技有限公司基于自研KA200提供的计算图 | | | 编程框架,提供了丰富的基本算子,支持常用的机器学习、 | | | 深度学习、类脑计算算法及模型。 | +---------------+------------------------------------------------------+ | Lyngor库 | 是Lyngor提供计算图相关操作的Python接口。 | +---------------+------------------------------------------------------+ | 第三方框架 | 指由其他企业公司或组织开发的神经网络框架, | | | 目前Lyngor可支持Tensorflow/Caffe/Pytorch/Keras/ | | | MXNet/ONNX/PaddlePaddle。 | +---------------+------------------------------------------------------+ | 设备 | 指HP/HM系列产品上搭载的KA200。 | +---------------+------------------------------------------------------+ | 网络 | 指由算子节点构成的计算图的网络结构。 | +---------------+------------------------------------------------------+ | 节点 | 构成计算图的算子,即为网络的一个节点。 | +---------------+------------------------------------------------------+ | 模型 | 指由1个或多个算子组成实现特定功能的函数。 | +---------------+------------------------------------------------------+ | 计算图 | 用于表示AI模型前向和后向传播的过程,由算子和边组成。 | +---------------+------------------------------------------------------+ | 算子 | 指一个运算或者一组运算。 | +---------------+------------------------------------------------------+ | 基础算子 | 指Lyngor已提供的算子,包括math模块(常用数学计算 | | | 算子)、nn模块(常用神经网络模型算子)和transform模 | | | 块(常用数据变换算子)。 | +---------------+------------------------------------------------------+ | 自定义算子 | 指当系统提供的算子不能满足用户个性化需求时, | | | 用户基于当前系统自行开发算子实现功能。 | +---------------+------------------------------------------------------+ | 字典 | 是Python内建的映射类型,通过名字引用值的数据结构。 | +---------------+------------------------------------------------------+ | 数据类型转换 | 指在不同数据类型之间切换,支持UNIT8/INT8/ | | | FLOAT16/FLOAT32。 | +---------------+------------------------------------------------------+ | 编译模型工具 | 是Lyngor内置工具,通过命令行对第三方框架模型进行 | | | 编译,通过参数设置,覆盖模型编译的绝大多数场景。 | +---------------+------------------------------------------------------+ | 精度对比工具 | 用于比较Lyngor和第三方框架模型的结果误差。 | +---------------+------------------------------------------------------+ | 单层对比 | 指基于模型最终推理结果,进行误差比对。如需比对结果 | | | 误差,推荐使用单层对比。 | +---------------+------------------------------------------------------+ | 多层对比 | 指基于模型中1个或多个层次,进行误差比对。如需定位 | | | 问题原因,推荐使用多层对比进行逐层定位。 | +---------------+------------------------------------------------------+