人工智能模型(软件)与算力(硬件)之间,存在一个由算子、编程语言和编译器构成的开发工具生态,关系如下图:

something-about-ai-programming-languages-and-compilers-1.png

为了增强软硬件之间的协作效率,出现了一类专用的 AI 编程语言和针对 AI 场景优化的编译器,作用是方便开发者使用和协作,并能针对不同硬件做专有的优化。在 NVDIA 的专有生态体系中,这部分是大名鼎鼎的 CUDA,而在开放体系中,有更多的玩家参与其中,下面介绍一部分:

1、OpenAI 发布的 Triton

something-about-ai-programming-languages-and-compilers-2.png

上图来自:「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 TritonGoogle OpenXLAModular Mojo
设计理念类似 Python 的 GPU 编程语言统一机器学习编译器AI 领域的系统编程语言
目标应用简化深度学习模型在 GPU 上的部署编译和优化来自所有领先 ML 框架的模型解决 AI 开发中的各种挑战
语言特性自动内存管理、自动优化执行配置支持多种硬件、多种框架强类型检查、内存安全、兼容 Python 语法
性能优化专家级 GPU 性能优化模型性能、自动化并行计算利用 MLIR 技术进行编译时优化
开发难度低,无需 CUDA 经验中,需要理解编译器原理中,结合了 Python 和系统编程特性
社区和支持OpenAI 支持,开源社区贡献社区驱动,多家公司合作开发Modular 公司支持,正在发展社区
内存管理自动自动手动和自动结合
多维数组操作支持支持支持,兼容 Numpy 等库
自动调优支持支持支持,语言集成自动调优
兼容性主要针对 NVIDIA GPU支持多种硬件设备,包括 GPU、CPU 等与 Python 生态系统兼容
开源情况开源开源,Apache 2.0 许可证开源,具体许可证未提及

不同点

  1. Triton 专注于 GPU 上的深度学习模型部署和执行,OpenXLA 旨在统一不同框架和硬件上的机器学习编译,而 Mojo 作为系统编程语言,强调 Python 兼容性和 AI 生态统一
  2. Triton 和 OpenXLA 更专注于编译器和运行时优化,Mojo 更强调语言特性和开发体验
  3. Triton 主要由 OpenAI 支持,OpenXLA 由多家行业领导者共同开发,Mojo 由 Modular 公司开发
  4. Mojo 作为 Python 的超集,具有更广泛的 Python 生态兼容性,而 Triton 和 OpenXLA 则更注重与多种 ML 框架的集成
  5. Mojo 目前还在发展中,社区和生态系统正在构建,Triton 和 OpenXLA 已经有活跃的社区和行业支持

AI 专属编程语言的特点

  • Python 友好,最大限度兼容生态和降低学习难度
  • 支持异构算力,不限于 GPU、CPU
  • 内存安全和高性能

国内的玩家

  1. 中科加禾:以编译器切入的AI生态软件基础设施服务商
  2. 译芯科技:RISC-V 生态,专注于高性能编译器设计、RISC-V AI指令集/SIMD指令集开发
  3. 清醒异构:基于异构感知自动并行技术研发编译技术
  4. 太极图形:主导开发开源基础设施太极(Taichi)编程语言,能够自动生成兼容各平台的CPU/GPU代码,实现了程序的高性能和可移植性
  5. MoonBit:月兔语言,是一种超级胶水语言,涵盖了编译器、构建系统、集成开发环境(IDE)、调试器,部署工具等各个方面,在可视化开发和支持 WebAssembly 方面有优势,很有想象空间的语言
  6. CoCoPIE:项目在美国,华人团队,针对CPU、GPU等主流芯片

标签:产品, AI

评论已关闭