Руководство разработчика XLA

В этом руководстве показано, как приступить к разработке проекта XLA.

Прежде чем начать, выполните следующие предварительные условия:

  1. Перейдите на страницу «Внести свой вклад» и ознакомьтесь с процессом внесения вклада.
  2. Если вы еще этого не сделали, подпишите Лицензионное соглашение участника .
  3. Установите или настройте следующие зависимости:

Затем следуйте инструкциям ниже, чтобы получить исходный код, настроить среду, создать репозиторий и создать запрос на извлечение.

Получить код

  1. Создайте ответвление репозитория XLA .
  2. Клонируйте свою ветку репозитория, заменив {USER} на свое имя пользователя GitHub:

    git clone <a href="https://github.com/">https://github.com/</a>{USER}/xla.git
    
  3. Перейдите в каталог xla : cd xla

  4. Настройте удаленный вышестоящий репозиторий:

    git remote add upstream <a href="https://github.com/openxla/xla.git">https://github.com/openxla/xla.git</a>
    

Настройте среду

  1. Установите Базель .

    Для сборки XLA у вас должен быть установлен Bazel. Рекомендуемый способ установки Bazel — использовать Bazelisk , который автоматически загружает правильную версию Bazel для XLA. Если Bazelisk недоступен, вы можете установить Bazel вручную.

  2. Создайте и запустите Docker-контейнер ml-build .

    Чтобы настроить контейнер Docker для сборки XLA с поддержкой как CPU, так и GPU, выполните следующую команду:

    docker run -itd --rm \
      --name xla \
      -w /xla \
      -v $PWD:/xla \
      us-docker.pkg.dev/ml-oss-artifacts-published/ml-public-container/ml-build:latest \
      bash
    

    Если сборка осуществляется с поддержкой GPU/CUDA, добавьте --gpus all , чтобы предоставить контейнеру доступ ко всем доступным GPU. Это позволяет автоматически определять вычислительные возможности CUDA.

Строить

Конфигурация для ЦП:

docker exec xla ./configure.py --backend=CPU

Конфигурация для графического процессора:

docker exec xla ./configure.py --backend=CUDA

Возможности вычислений CUDA будут обнаружены автоматически при запуске nvidia-smi . Если во время сборки графические процессоры недоступны, необходимо вручную указать возможности вычислений. Например:

# Automatically detects compute capabilities (requires GPUs)
./configure.py --backend=CUDA

# Manually specify compute capabilities (for builds without GPUs)
./configure.py --backend=CUDA --cuda_compute_capabilities="9.0"

Строить:

docker exec xla bazel build \
  --spawn_strategy=sandboxed \
  --test_output=all \
  //xla/...
  • Не используйте флаг --gpus all при запуске контейнера Docker.
  • Во время ./configure.py вручную укажите вычислительные возможности CUDA с помощью флага --cuda_compute_capabilities .
# Automatically detects compute capabilities (requires GPUs)
./configure.py --backend=CUDA

# Manually specify compute capabilities (for builds without GPUs)
./configure.py --backend=CUDA --cuda_compute_capabilities="9.0"

bazel build \
  --spawn_strategy=sandboxed \
  --test_output=all \
  //xla/...

Первая сборка займет довольно много времени, поскольку необходимо собрать весь стек, включая XLA, MLIR и StableHLO.

Дополнительную информацию о сборке XLA см. в разделе Сборка из исходного кода .

Создать запрос на извлечение

Когда вы будете готовы отправить изменения на проверку, создайте запрос на извлечение .

Чтобы узнать о философии обзора кода XLA, см. раздел Процесс обзора .