1. 简介

驭算TopsRider软件栈是燧原科技自主知识产权的计算及编程平台,通过软硬件协同架构设计,充分释放邃思GCU芯片性能。

2. 版本历史

表 2.1 版本历史

V1.0

2023年1月12日

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

V2.0:

2024年6月28日

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

3. 词汇表

表 3.1 词汇表

GCU

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

TopsRider

燧原科技驭算软件栈

Enflame Driver

燧原科技GCU驱动程序

EFSMI

燧原科技GCU设备管理界面

TopsRuntime

燧原科技运行时库

TopsCodec

燧原科技GCU编解码运行时接口

TopsCC

燧原科技异构计算编译器

TopsKit

燧原科技开发者工具包

TopsProf

燧原科技查看GCU和CPU活动的命令行性能分析工具

TopsVisualProfiler

燧原科技查看GCU和CPU活动的可视化性能分析工具

TopsPTI

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

TopsGDB

燧原科技异构编程调试器

TopsTX

燧原科技记录GCU程序调用过程上下文信息的工具

TopsGraph

燧原科技计算图AI编译器

TopsATen

燧原科技对齐Pytorch Aten语义的预编译计算库

TopsCV

燧原科技图像处理工具

FFmpeg-GCU

燧原科技视频编解码工具

ECCL

燧原科技集合通信库

TopsInference

燧原科技推理加速框架

TopsCompressor

燧原科技模型压缩工具

TopsIDEAS

燧原科技模型推理调试工具

TopsModelGraph

燧原科技模型可视化开发调试工具

TopsAIserver

燧原科技服务化推理部署工具

EGC

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

TopsCloud

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

TopsStation

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

LumiCanvas

燧原科技支持文生图文生视频业务的应用工具

LumiVerse

燧原科技支持文生文业务的应用工具

4. 软件栈简介

驭算TopsRider软件栈是燧原科技自主知识产权的计算及编程平台,通过软硬件协同架构设计,充分释放邃思GCU芯片性能。

目前软件栈已全面支持燧原第三代推理芯片Enflame S60。完整推出界面更加友好的GCU异构计算编译器TopsCC和开发工具链。持续扩大预编译算子语义覆盖面,增强泛化能力。自上而下对接方兴未艾的AIGC技术生态,大量适配Huggingface社区、支持热门的LLM开源推理框架及服务,在算法、量化混精、存储、分布式通信、推理服务等多环节采用高效策略。

全新的驭算TopsRider带来以下主要进展和新特性:

  • 众多效果领先的AIGC文生图、文生文开源模型完成适配调优

  • 编程模型增加C语言原生函数编程接口,提升易用性并更好地融入生态

  • 高效自动的AI编译器在代码执行性能和代码尺寸的深度优化

  • 算子语义覆盖面扩大,泛化性能提升,支撑框架的计算图和动态图推理

  • 分布式通信库性能显著提升,带来低延迟的张量并行、流水并行等分布式技术

  • 基于SRIOV技术实现高隔离的硬件虚拟化功能

  • 片上集成视频编解码和图像处理接口,支持很多视觉任务的ALL GCU端到端部署

  • 深度融入AI生态,对接主流深度学习框架、热门开源库和Kubernetes

  • 广泛的软硬件适配,驱动和编译器支持多个国产CPU 架构和Linux发行版

  • 开箱即用的SaaS/MaaS级AI应用开发部署平台

5. 软件栈架构

与Enflame GCU硬件配套的软件生态矩阵包括核心异构加速计算平台(驱动、运行时、编译器、开发者工具)以及扩展开发库、计算图、框架、AI开发相关的工具集,上层还提供丰富的模型、镜像、解决方案和AI开发平台等。软件组件众多,可归为以下6大类别:

  • TopsPlatform即TopsRider核心异构加速计算平台,驱动层稳定兼容X86 & ARM平台,支持众多国内外常用的Linux发行版。驱动和运行时支持高效的设备管理、资源管理&虚拟化、多流&多进程调度等。编译层包括TopsCC异构编译器和编程模型、性能分析/调试工具,帮助用户灵活快速地编写自定义GCU程序。

  • 计算平台以上的扩展库包括预编译算子库、计算图编译器、通信库和多媒体库。TopsATen预编译算子库保持用户界面的稳定兼容并带来性能跃升。ECCL显著降低通信开销,同时降低对接复杂性。GCU新增加多媒体支持,软件提供适配FFmpeg库的解码接口;TopsCV图像处理接口。

  • AI Framework提供燧原稳定适配的主流深度学习框架和自定义推理框架Topsinference,联合下层组件实现诸多新功能和性能提升,在传统领域持续增强动态性支持和计算图加速。

  • AI Development Toolkit深度融入开源生态。一系列工具集涵盖了大模型开源推理引擎vLLM和Text Generation Interface(TGI)的GCU适配版本,持续支持Huggingface社区开源库低成本搭建运行AIGC任务,新推出支持大模型低精度量化的TopsCompressor,通过AI Toolbox支撑精度&性能调试以及传统模型的低精度量化。

  • Data Center Toolkit亦称为TopsCloud,提供Kubernetes集群下GCU部署运维的工具套件,有基础的设备和Kubernetes插件,集群自动化安装升级、调度、可视化监控告警,以及golang二次开发组件。

  • Enflame GCU Center提供的镜像库和解决方案支持更多的基础环境。AI Platform提供可视化AI开发部署平台,包括算法、数据集、服务部署管理和集群设备调度监控功能,重点推出了AIGC文生文、文生图、图生图场景的无代码应用平台。

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

图 5.1 燧原软件生态矩阵

6. 组件介绍

6.1. TopsPlatform(加速计算平台)

TopsPlatform是为GCU硬件设计的异构加速计算平台,在驱动之上,包含编译器、链接器、运行时库、调试器、性能分析工具等全套编程工具链。

Enflame Driver(驱动程序)

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

Enflame S60产品支持了基于SRIOV的硬件虚拟化技术,通过Driver SriovMgr允许用户将整卡切分为1/2/4个VF设备,映射到虚拟机或容器中使用。VF之间有强业务隔离和强故障隔离能力,提供更好的QoS。另外继续支持整卡Pass-through到虚拟机的工作方式。

Enflame Driver集成了命令行设备管理工具EFSMI。EFSMI可获取GCU设备基本信息和实时运行状态,比如设备的内存容量,温度、风扇、各进程的内存占用,算力利用率等。EFSMI还支持一些基础的设备管理,比如使能/禁止ECC、功耗模式切换、整卡重置等。

TopsRuntime(运行时库)

TopsRuntime提供运行时库API,支持Context、Memory、Module、Stream和Event等维度的配置管理。

TopsRuntime增加了一些新功能:

  • Graph Mode,使用stream capture或接口定义节点依赖的方式创建Graph,合并提交GCU的操作为图,以调用图的形式去除主机的重复操作,从而降低开销和延迟;

  • SC/PC模式配置为业务进程指定独占的计算SIPs和其他资源;

  • 内置一套运行时编译接口;

  • 内置一套运行时常量管理更新接口,支持weight refitting。

部分运行时重要特性有所增强,比如核函数下发性能优化,执行流之间的同步性能优化,设备内存分配释放性能优化等。

用户可以直接基于TopsRuntime接口高效地执行离线编译的模型,运行时库也支持深度学习框架的运行时逻辑开发。接口设计贴近AI计算生态的最佳范式,方便用户上手和迁移业务。

另外还有TopsCodec API,提供图像解码的运行时接口,方便用户利用stream、event提升并行度。

TopsCC(异构计算编译器)

TopsCC包括编程模型、编程语言接口和编译器,内置设备端运行时库,支持设备端和主机端混合编程,生成高效的可执行文件。

编程模型定义了GCU的执行模型、内存模型和线程模型。通过扩展C++语言提供了一套面向向量数据和张量数据的编程接口,包括重载部分C标准库的数学函数和向量运算符,让上层应用程序接入GCU 设备的难度降低,CUDA/SYCL用户易于上手,开发模型的过程中做动态调试会更容易。

编译器内部优化指令调度,最大化指令吞吐,展开到多线程并行执行,通过多级存储优化数据搬运和分配策略,充分利用算力和内存带宽,兼顾程序执行性能和代码尺寸。针对未来的GCU硬件平台,TopsCC会保证前向兼容能力。

Developer Tools(开发者工具)

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

性能分析核心组件是TopsProf命令行工具,包括高精度性能分析模块,在硬件上支持纳秒级的低开销性能数据采集,包括GCU Kernel启动和执行、IO、设备内存分配释放、主机运行时库等多层级组件的接口函数执行活动。支持在多进程、分布式、虚拟化设备场景下的单任务性能分析。采集和分析的数据显示在控制台中,也可以导出在TopsProf或TopsVisualProfiler查看。

TopsVisualProfiler支持通过本地和远程两种方式进行性能分析。提供统一的时间线视图,可以清晰地分析展示设备上的活动,同时为了方便分析Runtime时刻hotspot函数的行为,支持CPU端软件调用栈可视化分析。数据比较器方便用户对比不同的Profile Session的性能数据。

性能分析层面还有高级开发者接口:TopsPTI支持自定义运行时GCU行为的回调实现,通过一个独立于特定运行时分析器的通用分析器来跟踪API和异步活动,用于分析GCU应用程序的行为。TopsTX提供Trace API用于记录GCU程序调用过程上下文信息并且支持TopsVisualProfiler定制化显示,允许按组件domain维度选择信息输出的范围。

TopsGDB是Linux GDB 的扩展,支持主机端和设备端程序的调试,拥有常用的单步执行、插入断点、查看修改寄存器值、查看调用栈等功能,用户可以在VSCode中下载extension使用。

6.2. AI&HPC SDK(预编译计算库)

TopsATen是预先编译(AOT)的算子库,涵盖Pytorch 2.0以及之后版本的ATen native算子语义,关键的非Aten语义算子也有针对性的补充。除单算子外,也支持卷积/矩阵乘法和bias、激活函数的融合算子,以及注意力计算等融合算子。算子内部具备多种实现,以优化在各种参数下的性能。

TopsATen提供C++接口,支持多种数据类型、动态性、tensor view、non-continuous tensor、in-place、自动broadcast语义、混精运算,上层框架可方便地进行对接调用。

6.3. Graph Toolkit(计算图AI编译器)

TopsGraph是一款基于MLIR的AI编译器,通过TopsGraph Builder将各种AI框架中的GraphIR转换为统一的TopsGraph IR,并在此统一表达的基础上开展计算图的动态Shape编译优化,自动算子生成以及计算图的执行。在计算图的编译优化上支持常见的基于符号表达的代数优化,常量折叠,CSE等优化,以及多维度的自动算子融合;算子生成包括自动调度、自动调优、自动并行等关键技术;在将计算图编译为可以执行文件后,Graph Runtime以异构方式在GCU上完成该计算图高效调度与执行。

TopsGraph推出一些新特性:更好地支持动态性,包括输入形状的min-max区间指定、运行时动态形状推导、动态形状下算子自动融合,还支持用户自定义预编译算子的注册和相应的子图切分优化。

6.4. Multimedia Library(多媒体库)

多媒体方向包含两个组件:

FFmpeg-GCU将开源FFmpeg库运行在GCU视频编解码单元上,硬件支持的格式包括H.264/H.265/AV1/JPEG等。当前仅提供解码的底层硬件能力和编程接口,支持用户使用与FFmpeg相兼容的PyAV版本进行调用。

TopsCV支持图像处理,GCU支持CSC色彩空间转换、resize、find_contour等操作,当前仅提供C接口,接口命名和参数设计参考了OpenCV的实现。

6.5. Parallel Communication Toolkit(通信库)

目前主要推出ECCL集合通信库,支持LARE、PCIe、RDMA、TCP、共享内存等传输通道。ECCL支持常见的通信操作,比如Allreduce, Allgather等集合通信操作、send/recv, AlltoAll等点对点通信操作,支持通信管理和容错API。API原型和语义与开源及标杆通信库基本一致,方便开发者直接迁移、适配到AI框架。

ECCL使用fullmesh、meshdirect、ring等拓扑算法,根据数据量及带宽动态选择算法以达成高带宽、低延迟的目标。ECCL使用GCU kernel的实现方式,保障大模型所需的张量并行、流水并行等策略的低延迟。

6.6. AI Framework(AI框架)

软件栈支持主流AI框架,以GCU 插件注册方式支持Tensorflow和PyTorch的社区官方版本,并且通过插件接入TopsAten 算子和TopsGraph计算图AI编译器。用户安装社区官方版本和对应的GCU插件后,手动或使用迁移工具少量修改代码即可以运行模型。PaddlePaddle进行原生适配,代码合入社区官方源码库,TopsRider软件栈也会发布PaddlePaddle-GCU版本,有更加充分的测试质量保证。

自研推理框架TopsInference对接ONNX生态,支持读取解析ONNX模型,然后通过TopsGraph针对推理任务属性内建计算图优化。TopsInference集成INT8量化校准功能和混精推理、支持自定义预编译算子注册,支持动态形状、动态批任务下发,可集成服务化部署,优化多任务调度、高吞吐低延迟。TopsInference还增加了推理部署的weight refiting功能,通过贯通多层软件栈接口,允许用户在TopsGraph编译的可执行文件中更新特定命名的权重常量。TopsInference提供Python, C++接口和TopsExec命令行工具。

OnnxRuntime-TopsInference在开源OnnxRuntime上添加GCU Execution Provider ,底层对接TopsInference推理库接口,用户的OnnxRuntime脚本修改Provider后即可在GCU上运行。

6.7. AI Development Toolkit(AI应用开发工具)

软件栈全面支持发展迅速的AIGC算法和应用,大规模适配了Stable Diffusion、Llama、ChatGLM、Baichuan、Qwen、Mistral、Bloomz等数十种代表性的模型算法。传统领域继续扩大覆盖图像分类/检测/分割/OCR、自然语言处理、语音识别/合成、推荐等方向的常用模型。

围绕AIGC大模型社区生态,提供多个层面的工具组件:

  • 在LLM推理引擎层面,适配业界广泛采用的vLLM和Text Generation Interface(TGI),并且在下层软件栈支持Paged Attention, Flash Attention, Continuous Batching, KV cache等众多存储/算法/服务上的优化。

  • 推出TopsCompressor,支持大模型推理部署前的低比特量化加速,吸收并兼容AWQ、GPT-Q的量化算法,还提出具有更高精度符合GCU硬件特性的校准算法和权重,支持W8A16、W8A8、W4A16等方案。

  • 支持Huggingface社区的多个组件,包括diffusers, transformers, peft, accelerate, safetensors等。

Model Samples提供上百个深度学习模型的下载。除了大量的AIGC模型,推理框架的丰富度有所提升,推荐、OCR、token embedding在内的模型算法的丰富度也有提升,用户选择的灵活性更大。

AI Toolbox中,TopsIdeas和TopsModelGraph帮助用户做整网分析,调试模型精度性能。TopsAIServer提供一套推理服务部署方案。

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

LumiCanvas, LumiVerse是MaaS级别的文生图、文生视频和文生文工具,允许没有任何技术背景的用户使用可视化界面进行创作和产出,底层由GCU算力支持模型推理服务。

6.8. Data Center Toolkit(集群运维管理工具集)

Data Center Toolkit是Kubernetes集群部署运维的PaaS层工具集,统一称为TopsCloud,有以下主要组件:

  • 基础的GCU container toolkit 和K8S device plugin,支持设备在容器内挂载并在K8S集群中被发现和调度,支持docker、containerd容器引擎,支持多个Kubernetes官方版本。

  • GCU operator 支持集群内TopsRider软件栈的自动化安装升级。

  • Node Feature Discovery + GCU Feature Discovery(NFD + GFD)提供节点和设备标签工具,可获取主机系统和GCU的基本特性和配置信息。

  • Node Exporter + GCU Exporter支持系统和GCU设备的数据可视化运维监控告警,Node Exporter版本经过内部充分的兼容性验证,在此基础上提供一套Prometheus + Grafana的示例。

  • Go - EFlib允许用户基于Golang进行二次开发。

  • GCUShare 支持云厂商在K8S POD内灵活申请GCU Memory容量(1GB~48GB)并调度分配给租户。

6.9. Enflame GCU Center(镜像和解决方案)

EGC官方网站为用户提供丰富的官方容器镜像资源,针对不同的框架、推理库或解决方案,提供经过严格验证的镜像,可以准确复现模型在GCU上的精度和性能。用户可轻松拉取符合需要的镜像,使用模型示例内置的脚本安装相匹配的依赖库,快速运行一个模型任务或自定义开发,杜绝复杂的环境准备和调试工作。

在新一代Enflame S60和上一代Enflame i20&T20硬件基础设施之上,驭算TopsRider软件栈已实际落地了AIGC模型支撑的智能问答、智能客服、代码生成、文生图、文生视频、内容审核等业务,传统的图像、NPL、推荐业务也在继续扩大使用GCU。未来TopsRider软件栈将在Enflame GCU平台上持续演进,助力互联网应用、云服务、智慧城市/政务/金融、高校科研以及更多行业的AI变革和增效。