В контексте XLA, MLIR, LLVM и других смежных технологий используется несколько терминов. Ниже приведён частичный список этих терминов и их определений.
- OpenXLA
- OpenXLA — это открытая экосистема производительных, переносимых и расширяемых компонентов инфраструктуры машинного обучения (МО), которые упрощают разработку МО за счёт дефрагментации инструментов между фронтенд-фреймворками и аппаратными бэкендами. Она включает в себя компилятор XLA, StableHLO, VHLO, PJRT и другие компоненты.
- XLA
- XLA (Accelerated Linear Algebra) — компилятор с открытым исходным кодом для машинного обучения. Компилятор XLA использует модели из популярных фреймворков, таких как PyTorch, TensorFlow и JAX, и оптимизирует их для высокопроизводительного выполнения на различных аппаратных платформах, включая графические процессоры, центральные процессоры и ускорители машинного обучения. Компилятор XLA выводит часть кода в LLVM, часть — в «стандартный» MLIR, а часть — в Triton MLIR , который обрабатывается компилятором OpenAI Triton (на основе MLIR).
- ПЖРТ
- PJRT — это унифицированный API-интерфейс устройств, который упрощает выполнение растущей сложности задач машинного обучения на разных аппаратных платформах и фреймворках. Он предоставляет независимый от оборудования и фреймворка интерфейс для компиляторов и сред выполнения.
- StableHLO
- StableHLO — это открытый интерфейс к OpenXLA, стандартизированный диалект MLIR, который может использоваться различными фреймворками и компиляторами в экосистеме OpenXLA. XLA поддерживает StableHLO и немедленно преобразует его в HLO на входе. Некоторые проходы StableHLO в StableHLO реализованы с использованием фреймворка MLIR. Также возможно преобразование StableHLO в IR других компиляторов без использования HLO, например, в случаях, когда существующий IR более уместен.
- ХЛО
- CHLO — это набор операций более высокого уровня, которые при необходимости можно разложить на StableHLO.
- ВХЛО
- Диалект VHLO — это диалект MLIR, представляющий собой слой совместимости поверх StableHLO. Он предоставляет моментальный снимок диалекта StableHLO на заданный момент времени, управляя версиями отдельных элементов программы, и используется для сериализации и обеспечения стабильности.
- МХЛО
- MHLO — это автономное представление IR-диалекта HLO от XLA на базе MLIR. Диалект рассматривается на предмет устаревания, и новым пользователям рекомендуется использовать StableHLO.
- ХЛО
- HLO (High Level Optimizer) — это внутреннее графовое представление (IR) для компилятора XLA (а также поддерживаемые входные данные). Оно не основано на MLIR и имеет собственный текстовый синтаксис и двоичное (на основе Protobuf) представление.
- МЛИР
- MLIR — это гибридная инфраструктура IR, которая позволяет пользователям определять «диалекты» операций на разных уровнях абстракции и постепенно переходить от одного набора операций к другому, выполняя преобразования на каждом уровне детализации. StableHLO и CHLO — два примера диалектов MLIR.
- LLVM
- LLVM — это бэкенд компилятора и язык, который он принимает в качестве входных данных. Многие компиляторы генерируют код LLVM на первом этапе, а затем LLVM генерирует на его основе машинный код. Это позволяет разработчикам повторно использовать код, аналогичный для разных компиляторов, а также упрощает поддержку различных целевых платформ. Бэкенды XLA:GPU и CPU оснащены ИК-излучателями LLVM для нацеливания на определённое оборудование.