In diesem Leitfaden erfahren Sie, wie Sie mit der Entwicklung des XLA-Projekts beginnen.
Bevor Sie beginnen, müssen die folgenden Voraussetzungen erfüllt sein:
- Rufen Sie die Seite „Beiträge leisten“ auf und lesen Sie sich den Beitragsprozess durch.
- Wenn Sie es noch nicht getan haben, unterzeichnen Sie die Contributor License Agreement.
- Installieren oder konfigurieren Sie die folgenden Abhängigkeiten:
Folgen Sie dann der Anleitung unten, um den Quellcode abzurufen, eine Umgebung einzurichten, das Repository zu erstellen und eine Pull-Anfrage zu erstellen.
Code abrufen
- Erstellen Sie eine Fork des XLA-Repositorys.
Klonen Sie Ihre Fork des Repositorys und ersetzen Sie dabei
{USER}durch Ihren GitHub-Nutzernamen:git clone <a href="https://github.com/">https://github.com/</a>{USER}/xla.gitWechseln Sie in das
xlaVerzeichnis:cd xlaKonfigurieren Sie das Remote-Upstream-Repository:
git remote add upstream <a href="https://github.com/openxla/xla.git">https://github.com/openxla/xla.git</a>
Umgebung einrichten
Installieren Sie Bazel.
Zum Erstellen von XLA muss Bazel installiert sein. Die empfohlene Methode zum Installieren von Bazel ist die Verwendung von Bazelisk, das automatisch die richtige Bazel-Version für XLA herunterlädt. Wenn Bazelisk nicht verfügbar ist, können Sie Bazel manuell installieren.
Erstellen und führen Sie den Docker-Container für ML-Builds aus.
Führen Sie den folgenden Befehl aus, um einen Docker-Container für das Erstellen von XLA mit Unterstützung für CPU und GPU einzurichten:
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 \ bashWenn Sie mit GPU-/CUDA-Unterstützung erstellen, fügen Sie
--gpus allhinzu, um dem Container Zugriff auf alle verfügbaren GPUs zu gewähren. Dadurch wird die automatische Erkennung der CUDA-Rechenfunktionen aktiviert.
Build
Für CPU konfigurieren:
docker exec xla ./configure.py --backend=CPU
Für GPU konfigurieren:
docker exec xla ./configure.py --backend=CUDA
Die CUDA-Rechenfunktionen werden automatisch durch Ausführen von nvidia-smi erkannt. Wenn während des Builds keine GPUs verfügbar sind, müssen Sie die Rechenfunktionen manuell angeben. Beispiel:
# 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"
Build:
docker exec xla bazel build \
--spawn_strategy=sandboxed \
--test_output=all \
//xla/...
- Verwenden Sie beim Starten des Docker-Containers nicht das Flag
--gpus all. - Geben Sie während
./configure.pydie CUDA-Rechenfunktionen manuell mit dem Flag--cuda_compute_capabilitiesan.
# 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/...
Der erste Build dauert eine Weile, da der gesamte Stack erstellt werden muss, einschließlich XLA, MLIR und StableHLO.
Weitere Informationen zum Erstellen von XLA finden Sie unter Aus Quelle erstellen.
Pull-Anfrage erstellen
Wenn Sie bereit sind, Änderungen zur Überprüfung zu senden, erstellen Sie eine Pull-Anfrage.
Informationen zur XLA-Codeüberprüfung finden Sie unter Überprüfungsprozess.
Statische Analyse (Clang-Tidy)
Zur Aufrechterhaltung der Codequalität verwendet XLA clang-tidy für die statische Analyse und die Überprüfung von Includes.
Ausführen
Es gibt zwei Möglichkeiten, Prüfungen auszuführen. Die Ausführung für bestimmte Ziele kann mit Folgendem erfolgen:
bazel build --config=clang-tidy //path/to:target1 //path/to:target2
Es gibt ein Hilfsskript, das auch in CI-Workflows verwendet wird und für das Git-Diff vom Feature-Branch zum Upstream-Main ausgeführt wird.
# Make sure the main is updated.
git fetch origin main
bazel run //build_tools/ci:run_clang_tidy