XLA-терминология

В контексте 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 для нацеливания на определённое оборудование.