이 가이드에서는 XLA 프로젝트 개발을 시작하는 방법을 보여줍니다.
시작하기 전에 다음의 사건 요건을 완료하세요.
- 참여 페이지로 이동하여 참여 절차를 검토합니다.
- 아직 서명하지 않은 경우 기여자 라이선스 계약에 서명합니다.
- 다음 종속 항목을 설치하거나 구성합니다.
그런 다음 아래 단계에 따라 소스 코드를 가져오고, 환경을 설정하고, 저장소를 빌드하고, pull 요청을 만듭니다.
코드 가져오기
- XLA 저장소의 포크를 만듭니다.
저장소의 포크를 클론하고
{USER}를 GitHub 사용자 이름으로 바꿉니다.git clone <a href="https://github.com/">https://github.com/</a>{USER}/xla.gitxla디렉터리로 변경합니다.cd xla원격 업스트림 저장소를 구성합니다.
git remote add upstream <a href="https://github.com/openxla/xla.git">https://github.com/openxla/xla.git</a>
환경 설정
Bazel을 설치합니다.
XLA를 빌드하려면 Bazel이 설치되어 있어야 합니다. Bazel을 설치하는 권장 방법은 Bazelisk를 사용하는 것입니다. 이 도구는 XLA에 올바른 Bazel 버전을 자동으로 다운로드합니다. Bazelisk 를 사용할 수 없는 경우 Bazel을 설치 수동으로 설치할 수 있습니다.
ml-build Docker 컨테이너를 만들고 실행합니다.
CPU와 GPU를 모두 지원하는 XLA를 빌드하기 위한 Docker 컨테이너를 설정하려면 다음 명령어를 실행합니다.
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 \ bashGPU/CUDA 지원을 포함해서 빌드하는 경우
--gpus all을 추가하여 컨테이너에 사용 가능한 모든 GPU에 대한 액세스 권한을 부여합니다. 이렇게 하면 CUDA 컴퓨팅 기능이 자동으로 감지됩니다.
빌드
CPU용으로 구성합니다.
docker exec xla ./configure.py --backend=CPU
GPU용으로 구성합니다.
docker exec xla ./configure.py --backend=CUDA
CUDA 컴퓨팅 기능은 nvidia-smi를 실행하여 자동으로 감지됩니다. 빌드 중에 GPU를 사용할 수 없는 경우 컴퓨팅 기능을 수동으로 지정해야 합니다. 예를 들면 다음과 같습니다.
# 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/...
- Docker 컨테이너를 시작할 때
--gpus all플래그를 사용하지 마세요. ./configure.py중에--cuda_compute_capabilities플래그를 사용하여 CUDA 컴퓨팅 기능을 수동으로 지정합니다.
# 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 빌드에 대한 자세한 내용은 소스에서 빌드를 참고하세요.
pull 요청 만들기
변경사항을 전송하여 검토받을 준비가 되면 pull 요청을 만듭니다.
XLA 코드 검토 철학에 대한 자세한 내용은 검토 절차를 참고하세요.
정적 분석 (Clang-Tidy)
코드 품질을 유지하기 위해 XLA는 정적 분석 및 포함 확인에 clang-tidy를 사용합니다.
실행 방법
검사를 실행하는 방법에는 두 가지가 있습니다. 특정 타겟에 대해 실행하는 방법은 다음과 같습니다.
bazel build --config=clang-tidy //path/to:target1 //path/to:target2
CI 워크플로에서도 사용되는 도우미 스크립트가 있으며, 이 스크립트는 기능 브랜치의 git diff를 업스트림 메인에 대해 실행합니다.
# Make sure the main is updated.
git fetch origin main
bazel run //build_tools/ci:run_clang_tidy