В этом руководстве показано, как приступить к разработке проекта XLA.
Прежде чем начать, выполните следующие предварительные условия:
- Перейдите на страницу «Внести свой вклад» и ознакомьтесь с процессом внесения вклада.
- Если вы еще этого не сделали, подпишите Лицензионное соглашение участника .
- Установите или настройте следующие зависимости:
Затем следуйте инструкциям ниже, чтобы получить исходный код, настроить среду, создать репозиторий и создать запрос на извлечение.
Получить код
- Создайте ответвление репозитория XLA .
Клонируйте свою ветку репозитория, заменив
{USER}
на свое имя пользователя GitHub:git clone <a href="https://github.com/">https://github.com/</a>{USER}/xla.git
Перейдите в каталог
xla
:cd xla
Настройте удаленный вышестоящий репозиторий:
git remote add upstream <a href="https://github.com/openxla/xla.git">https://github.com/openxla/xla.git</a>
Настройте среду
Установите Базель .
Для сборки XLA у вас должен быть установлен Bazel. Рекомендуемый способ установки Bazel — использовать Bazelisk , который автоматически загружает правильную версию Bazel для XLA. Если Bazelisk недоступен, вы можете установить Bazel вручную.
Создайте и запустите 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, см. раздел Процесс обзора .