大模型行研:模型与算力的优化大师 - AI 编程语言与编译器
人工智能模型(软件)与算力(硬件)之间,存在一个由算子、编程语言和编译器构成的开发工具生态,关系如下图:
为了增强软硬件之间的协作效率,出现了一类专用的 AI 编程语言和针对 AI 场景优化的编译器,作用是方便开发者使用和协作,并能针对不同硬件做专有的优化。在 NVDIA 的专有生态体系中,这部分是大名鼎鼎的 CUDA,而在开放体系中,有更多的玩家参与其中,下面介绍一部分:
1、OpenAI 发布的 Triton
上图来自:「OpenAI/Triton MLIR 迁移工作简介」
OpenAI 发布的 Triton 是一个深度学习推理服务化框架,它支持多种深度学习框架,例如 TensorFlow 和 PyTorch,使得模型能够轻松部署到生产环境中,并实现高并发、低延迟的推理服务。
同时,Triton 也是一个语言和编译器,用于并行编程,旨在为现代 GPU 硬件上以最大吞吐量运行的自定义深度神经网络(DNN)计算核心提供基于 Python 的编程环境。Triton 的设计目标是提供一个开放源代码的环境,用于编写快速的代码,其生产力高于 CUDA,同时比现有的其他特定领域语言(DSLs)具有更高的灵活性。
NVDIA也有一个产品叫做 Triton,是一款开源推理服务软件,它是 NVIDIA AI
平台的一部分,用于标准化模型的部署和执行,并提供快速且可扩展的 AI 推理服务,支持多种算力和公有云部署,并提供 K8s 集成
2、Google 发布的 OpenXLA
OpenXLA 是一个开源项目,旨在创建一个统一的机器学习编译器,以加速机器学习应用的交付并提供更大的代码可移植性。
- 允许开发人员编译和优化来自所有领先机器学习框架的模型,以便在各种硬件上高效运行,包括 GPU、CPU 和机器学习加速器
- 支持多种硬件设备和操作系统,包括 AMD 和 NVIDIA GPU、x86 CPU、ARM 架构以及 Google TPU、AWS Trainium、Inferentia、Graphcore IPU 等
- 通过整体模型优化,例如简化代数表达式、优化内存数据布局和改进调度,OpenXLA 有助于减少内存使用和通信开销,从而提高模型性能
3、Modular 发布的 Mojo
Mojo 语言是一种为 AI 开发者设计的编程语言,提供跨抽象层次、对初学者友好且可扩展多个用例的统一编程模型,从加速器到应用程序编程和脚本。
- 被设计为 Python 的超集,保留 Python 的动态特性,并添加系统编程原语,易于使用且具有 C++ 和 Rust 性能
- 利用集成缓存、多线程和云分布技术,以及自动调优和编译时元编程功能,实现高性能
Triton、OpenXLA 和 Mojo 的特点比较
特性/方面 | OpenAI Triton | Google OpenXLA | Modular Mojo |
---|---|---|---|
设计理念 | 类似 Python 的 GPU 编程语言 | 统一机器学习编译器 | AI 领域的系统编程语言 |
目标应用 | 简化深度学习模型在 GPU 上的部署 | 编译和优化来自所有领先 ML 框架的模型 | 解决 AI 开发中的各种挑战 |
语言特性 | 自动内存管理、自动优化执行配置 | 支持多种硬件、多种框架 | 强类型检查、内存安全、兼容 Python 语法 |
性能优化 | 专家级 GPU 性能 | 优化模型性能、自动化并行计算 | 利用 MLIR 技术进行编译时优化 |
开发难度 | 低,无需 CUDA 经验 | 中,需要理解编译器原理 | 中,结合了 Python 和系统编程特性 |
社区和支持 | OpenAI 支持,开源社区贡献 | 社区驱动,多家公司合作开发 | Modular 公司支持,正在发展社区 |
内存管理 | 自动 | 自动 | 手动和自动结合 |
多维数组操作 | 支持 | 支持 | 支持,兼容 Numpy 等库 |
自动调优 | 支持 | 支持 | 支持,语言集成自动调优 |
兼容性 | 主要针对 NVIDIA GPU | 支持多种硬件设备,包括 GPU、CPU 等 | 与 Python 生态系统兼容 |
开源情况 | 开源 | 开源,Apache 2.0 许可证 | 开源,具体许可证未提及 |
不同点
- Triton 专注于 GPU 上的深度学习模型部署和执行,OpenXLA 旨在统一不同框架和硬件上的机器学习编译,而 Mojo 作为系统编程语言,强调 Python 兼容性和 AI 生态统一
- Triton 和 OpenXLA 更专注于编译器和运行时优化,Mojo 更强调语言特性和开发体验
- Triton 主要由 OpenAI 支持,OpenXLA 由多家行业领导者共同开发,Mojo 由 Modular 公司开发
- Mojo 作为 Python 的超集,具有更广泛的 Python 生态兼容性,而 Triton 和 OpenXLA 则更注重与多种 ML 框架的集成
- Mojo 目前还在发展中,社区和生态系统正在构建,Triton 和 OpenXLA 已经有活跃的社区和行业支持
AI 专属编程语言的特点
- Python 友好,最大限度兼容生态和降低学习难度
- 支持异构算力,不限于 GPU、CPU
- 内存安全和高性能
国内的玩家
- 中科加禾:以编译器切入的AI生态软件基础设施服务商
- 译芯科技:RISC-V 生态,专注于高性能编译器设计、RISC-V AI指令集/SIMD指令集开发
- 清醒异构:基于异构感知自动并行技术研发编译技术
- 太极图形:主导开发开源基础设施太极(Taichi)编程语言,能够自动生成兼容各平台的CPU/GPU代码,实现了程序的高性能和可移植性
- MoonBit:月兔语言,是一种超级胶水语言,涵盖了编译器、构建系统、集成开发环境(IDE)、调试器,部署工具等各个方面,在可视化开发和支持 WebAssembly 方面有优势,很有想象空间的语言
- CoCoPIE:项目在美国,华人团队,针对CPU、GPU等主流芯片