1. 简介¶
驭算TopsRider是燧原科技自主知识产权的计算及编程平台,通过软硬件协同架构设计,充分释放邃思2.0芯片的性能。基于算子泛化技术及图优化策略,支持主流深度学习框架下的各类模型训练和推理任务,自研推理框架;利用Horovod分布式训练框架与GCU-LARE互联技术相互配合,为超大规模集群高效运行提供解决方案。开放升级的编程模型和可扩展的算子接口,为客户提供自定义的开发能力。
2. 版本历史¶
文档版本 |
文档日期 |
文档说明 |
---|---|---|
V1.0 |
2023年1月12日 |
基于TopsRider2.2软件栈组件功能、各平台介绍文档进行写作和修订 |
3. 词汇表¶
术语 |
描述 |
---|---|
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开发算子,可兼顾性能和开发难度。其设计如下:
目标 |
说明 |
具体功能 |
---|---|---|
通用性 |
能满足各种 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云服务、智慧城市、智慧政务、智慧金融、高校科研等众多行业场景的业务落地。