1. 简介

驭算TopsRider是燧原科技自主知识产权的计算及编程平台,通过软硬件协同架构设计,充分释放邃思2.0芯片的性能。基于算子泛化技术及图优化策略,支持主流深度学习框架下的各类模型训练和推理任务,自研推理框架;利用Horovod分布式训练框架与GCU-LARE互联技术相互配合,为超大规模集群高效运行提供解决方案。开放升级的编程模型和可扩展的算子接口,为客户提供自定义的开发能力。

2. 版本历史

表 2.1 版本历史

文档版本

文档日期

文档说明

V1.0

2023年1月12日

基于TopsRider2.2软件栈组件功能、各平台介绍文档进行写作和修订

3. 词汇表

表 3.1 词汇表

术语

描述

TopsRider

燧原科技驭算软件栈

GCU

General Compute Unit, 燧原科技通用计算单元

GCU-LARE

General Compute Unit - Link All Round Engine,燧原科技互联引擎

RDMA

Remote Direct Memory Access

Enflame Driver

GCU驱动程序

UMD

User Mode Driver

KMD

Kernel Mode Driver

KVM

Kernel-based Virtual Machine

Enflame Driver Virt

燧原科技GCU虚拟化软件

EFSMI

燧原科技GCU系统管理界面

TopsRuntime

燧原科技运行时库

TopsEngine

燧原科技编程模型和编译器的总称

TopsFactor

燧原科技下一代编程模型和编译器

TopsCC

燧原科技编程模型和编译器

EDSL

Embedded domain specific language

TopsVisualProfiler

燧原科技可视化性能分析工具

TopsKit

燧原科技开发者工具包

TopsProf

燧原科技命令行性能分析工具

TopsPTI

燧原科技高级自定义分析接口

TopsGDB

燧原科技TopsCC程序调试工具

Tops-X

燧原科技应用开发扩展库的总称

TopsGraph

燧原科技图编译器

TopsDNN

燧原科技神经网络静态算子库

ECCL

燧原科技集合通信库

TopsInference

燧原科技推理加速引擎

TopsExec

燧原科技推理加速引擎的命令行工具

TopsModel

燧原科技模型仓库

EGC

Enflame GCU Container,燧原科技官方容器镜像库

TopsCloud

燧原科技GCU Kubernates集群部署运维工具套件

TopsStation

燧原科技端到端应用开发与管理平台套件

TopsDL

燧原科技可视化算法开发平台

TopsMine

燧原科技算法仓库管理平台

TopsView

业务数据管理平台

TopsStack

燧原科技异构算力调度平台

TopsDiscover

燧原科技智能运维平台

4. 软件栈简介

驭算TopsRider是燧原科技自主知识产权的计算及编程平台,通过软硬件协同架构设计,充分释放邃思2.0芯片性能。 目前已经历多次迭代,具有云边端一体、训推融合的软件架构,具备10项关键技术:

  • 灵活易用的全新编程模型

  • 高效自动的AI编译器

  • 强大的动态特性动态tensor形状和动态batch输入

  • 泛化算子实现

  • 灵活的自定义算子支持

  • 分布式训练

  • 多种虚拟硬件资源池化方式

  • 良好的AI生态兼容,支持主流框架和Kubernetes部署运维

  • 广泛的国产化软硬件环境支持

  • 开箱即用的SaaS级AI应用开发平台

5. 软件栈架构

驭算TopsRider 主要包括4层组件:

  • Enflame Driver:GCU驱动程序,内核态驱动实现设备文件描述和操作接口,提供虚拟化资源切分、多进程调度、分布式通信能力,用户态驱动封装抽象接口,同时集成了设备管理工具。

  • TopsRider SDK作为软件栈核心,提供运行时调度管理、多层IR转述优化的编译器、编程模型、基础算子库以及计算图构建和优化,包含一套开发者工具。

  • Tops-X:提供一系列深度学习及周边领域计算库和通信库,支持计算图构建和优化,帮助开发者降低对接的成本和难度。

  • Framework:GCU适配的主流深度学习框架,同时提供燧原自研的推理框架,增强动态能力和图优化,加速应用部署。

软硬件生态兼容方面,除支持Intel、AMD、Ubuntu、CentOS、RHEL等业界标配,目前已经完成多个主流国产CPU和众多操作系统(麒麟、UOS、欧拉、龙蜥等)的适配。

在核心软件栈之上的平台和应用工具集也日趋完善。目前有官方模型库TopsModel和官方镜像库EGC、高度集成的AI开发平台TopsStaion、Kubernetes部署运维工具套件TopsCloud,为开发者在技术调研、部署运维、场景落地等方面带来诸多便利。

图形用户界面 描述已自动生成

燧原软件生态矩阵

6. 组件介绍

6.1. Enflame Driver(驱动程序)

Enflame Driver是GCU驱动程序。KMD内核态驱动的接口层向用户程序提供设备文件节点、sysfs文件节点和debugfs节点,下层基于驱动架构,实现寄存器访问和硬件操作。逻辑层实现设备管理、内存管理、中断管理等核心功能。程序实现了硬件初始化和系统资源管理,支持多进程多任务并发、硬件状态重置、高效的存储共享。KMD还有3个核心功能模块:

  • 设备虚拟化:虚拟化模块支持片内/片间硬件资源切分使用,支持基于KVM虚拟机和容器化云上租户管理,包括三种方式:Pass-through单卡独占、按虚拟机将单卡资源分配多份的MIG(multi-instance GCU)和vGCU容器化的单卡资源分配。

  • 高速网络互联:Peer Memory组件支持RDMA远程直接内存访问。

  • 设备管理工具:集成EFSMI命令行工具,支持硬件检测,实时获取运行状态。

UMD用户态驱动程序,对上提供用户视角的抽象接口,对下路由任务。UMD封装简化了KMD硬件编程接口和系统调用,针对GCU硬件特性实现结构化数据、资源池抽象和自动调度。

6.2. TopsRuntime(运行时库)

TopsRuntime提供运行时库API,支持Context、Device Memory、Module、Stream、Event等运行配置管理。 编译接口支持动态任务,包括动态编译执行的Eager模式、Tensor动态形状等。

Runtime开发者既可以直接基于运行时库接口运行神经网络离线模型,也可以协同上层的编程模型、算子库开发框架和模型应用。接口设计更加贴近AI计算生态,方便用户学习上手和迁移已有的代码。

6.3. TopsEngine(编程模型和编译器)

TopsEngine 是燧原软件栈编译工具的总称,主要由编程模型和编译器两个子系统构成,提供两款相互独立的产品 TopsFactor 和 TopsCC 供用户使用。从编程模型视角对比,TopsFactor 偏于底层,可以从硬件结构入手,允许用户做更细粒度的性能优化。相比较而言,TopsCC 是更高级的语言,用户友好性和可编程性更高。

TopsFactor也被称作Factor DSL,一个可以操作标量和多维数组的通用编程接口库。它以C++ EDSL的方式提供编程接口,同时定义了一套执行模型和存储模型,用于简化数据切片和数据流操作。TopsFactor之下的编译器层面针对数据切片做数据流分析、优化和调度,降低CPU负载,生成硬件亲和的资源分配。采用TopsFactor开发算子,可兼顾性能和开发难度。其设计如下:

表 6.3.1 TopsFactor编程模型

目标

说明

具体功能

通用性

能满足各种 GCU应用代码(例如 AI算子)的开发需求

通过C++ EDSL的方式(重载C++运算符、提供C++函数),给GCU应用开发者使用

性能

提供足够的特性,能针对 GCU 硬件架构开发的 应用代码

1)支持C++ EDSL/编译器intrinsic/GCU汇编的混合编程,用于代码的手动优化

2)提供必要的细粒度硬件控制(例如控制具体某一个DMA)

硬件封装

隐藏硬件细节,提升应用代码迁移性和易用性

1)抽象C++ EDSL的方式(重载C++运算符、提供C++函数),给GCU应用开发者

2)抽象了“多存储级别”的数据搬移操作

3)抽象了“数据流”的同步操作

4)隐藏了“指令流”的同步操作

TopsCC 是新一代的编程平台,集成了编程模型和编译器。它的编程模型让习惯于 SYCL/OpenCL/CUDA编程的用户可以方便地上手使用,上层应用程序更容易接入 GCU 设备;C/C++编译器支持设备端和主机端混合编程, 支持动态编译执行,对于模型训练过程的动态调试更加友好。TopsCC有一套更完整的编程工具集支持,包括新一代主机端运行时库、设备端运行时库、调试和性能分析工具。

6.4. Developer Tools(开发者工具包)

开发者工具包,亦被称作TopsKit,由Profiler性能分析和Debugger调试等工具组成。

性能分析工具TopsProf和可视化界面TopsVisualProfiler,profiling模块在硬件上支持纳秒等级高精度、低开销的性能数据采集,增加了更为丰富的性能分析事件,方便用户通过各种角度定位性能问题。

TopsProf让用户可以便捷地从CPU和GCU上收集和查看评测数据,包括GCU Kernel、IO、CPU Runtime API、Memory分配释放等行为。分析结果在收集分析数据后显示在控制台中,也可以导出在TopsProf或TopsVisualProfiler查看。

TopsVisualProfiler支持通过本地和远程两种方式进行性能分析。提供统一的时间线视图,可以清晰地分析CPU和GCU发生的活动,包括GCU Kernel、IO、CPU Runtime API、Memory分配释放等行为,同时为了方便分析Runtime时刻hotspot函数的行为,支持CPU端软件调用栈可视化分析。数据比较器方便用户在不同Profile Session内进行性能数据对比。

TopsPTI是高级开发者工具,支持自定义运行时GCU行为的回调实现。提供一个独立于特定运行时分析器的通用分析器来跟踪API和异步活动,用于分析GCU应用程序的行为。

TopsGDB是支持TopsCC程序的调试工具,支持常见的断点单步等功能。

6.5. Tops-X(扩展开发库)

TopsGraph包括AI框架算子和计算图的解析、转化和优化,使用统一的Graph IR适配AI框架。提供统一的opset解析不同框架下的AI语义算子。构建静态单赋值(SSA)计算图,完成一系列计算图优化,包括整图优化(控制流优化、剪枝量化、代数优化、Convert消除等)、子图优化(融合、向量化等),支撑多种编译执行模式。

TopsDNN是AOT预编译AI算子库,有不同配置(比如数据形状、数据类型等)的算子例程,方便框架和计算图调用。目前TopsDNN覆盖CV领域,包括多种卷积算子(Winograd Conv、Depth-wise Conv、Group Conv、3D Conv)、element-wise、激活函数、损失函数等。算法开发者直接调用TopsDNN算子,可以省去算子开发环节,专注于算法实现。

ECCL集合通信库除支持RDMA和LARE之外,还新增TCP网络、共享内存、PCIe链路类型的支持,已适配的AI框架均可调用。ECCL内置AllReduce、Broadcast、AllGather等经典集合通信算子,另外内置多Ring AllReduce及自适应AllReduce拓扑策略,帮助用户轻松触及分布式计算。

6.6. Framework(AI框架)

软件栈支持主流AI框架,包括Tensorflow、PyTorch、Paddle和分布式插件Horovod等。同时很好地兼容了ONNX生态,支持ONNX模型的直接推理,并且可以使用OnnxRuntime的生态接口实现推理。

推理框架TopsInference基于TopsGraph针对推理任务属性内建大量算子融合、常量折叠等计算图优化策略,支持读取解析ONNX格式模型,支持低精度和混合精度。TopsInference可以处理动态Tensor形状的输入、动态批量的任务下发。TopsInference集成了一定的服务化推理能力,在多模型调度、吐量和延迟上做了大量优化。另外用户还可以利用TopsExec命令行工具配置和调起推理任务。

6.7. Application&platform(应用工具&平台)

TopsModel模型库提供数量和类型丰富的模型,涵盖图像识别/分类、目标检测、图像分割、自然语言处理、语音识别/合成、推荐等AI场景,包括AI框架上经过严格验证的模型算法及高精度预训练模型,在不数据类型上性能表现优异。模型一键下载使用,方便用户部署或继续调优。

EGC为用户提供丰富的官方容器镜像资源,适用于训练和推理任务上的各种业务场景,内置完善的软件集合,并经过充分验证。用户可轻松挑选合适的软件版本,迅速创建容器并启动运行,减少与软件配置兼容相关的复杂问题。使用官方镜像能够精准复现官方模型的精度和性能。

TopsStation进一步提供整套集群SaaS级AI开发部署平台组件,可视化前端支持集群调度运维、训推一体应用开发、算法和业务数据管理。TopsStation助力公司级用户通过安装或镜像部署,迅速搭建端到端AI研发平台,支持大规模算法团队的研发协同。

对于需要自行开发大规模集群平台的用户,亦有Kubernetes集群部署运维的PaaS层工具TopsCloud可以满足需求。除了常规容器工具和K8S插件,TopsCloud内置裸机环境软件快速安装升级、打标签工具;支持Prometheus的数据输出、Volcano资源编排等常用的开源组件;提供Device Memory细粒度调度分配能力;同时允许用户基于Go语言进行二次开发。

目前,在GCU硬件基础设施之上,驭算TopsRider软件栈和平台产品已支撑起AI云服务、智慧城市、智慧政务、智慧金融、高校科研等众多行业场景的业务落地。