Bu kılavuzda, XLA projesini geliştirmeye nasıl başlayacağınız gösterilmektedir.
Başlamadan önce aşağıdaki ön koşulları tamamlayın:
- Katkıda bulunma sayfasına gidip katkıda bulunma sürecini inceleyin.
- Henüz yapmadıysanız Katkıda Bulunan Lisans Sözleşmesi'ni imzalayın.
- Aşağıdaki bağımlılıkları yükleyin veya yapılandırın:
Ardından, kaynak kodu almak, ortamı ayarlamak, depoyu oluşturmak ve pull isteği oluşturmak için aşağıdaki adımları uygulayın.
Kodu alın
- XLA deposunun bir çatalını oluşturun.
Deponun çatallanmış sürümünü kopyalayın.
{USER}yerine GitHub kullanıcı adınızı girin:git clone <a href="https://github.com/">https://github.com/</a>{USER}/xla.gitxladizinine geçin:cd xlaUzak yukarı akış deposunu yapılandırın:
git remote add upstream <a href="https://github.com/openxla/xla.git">https://github.com/openxla/xla.git</a>
Ortam oluşturma
Bazel'i yükleyin.
XLA'yı oluşturmak için Bazel'in yüklü olması gerekir. Bazel'i yüklemenin önerilen yolu, XLA için doğru Bazel sürümünü otomatik olarak indiren Bazelisk'i kullanmaktır. Bazelisk kullanılamıyorsa Bazel'i manuel olarak yükleyebilirsiniz.
ml-build Docker container'ını oluşturun ve çalıştırın.
Hem CPU hem de GPU desteğiyle XLA oluşturmak için bir Docker container'ı ayarlamak üzere aşağıdaki komutu çalıştırın:
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 desteğiyle derleme yapıyorsanız kapsayıcıya mevcut tüm GPU'lara erişim izni vermek için
--gpus allekleyin. Bu, CUDA işlem yeteneklerinin otomatik olarak algılanmasını sağlar.
Derleme
CPU için yapılandırma:
docker exec xla ./configure.py --backend=CPU
GPU için yapılandırma:
docker exec xla ./configure.py --backend=CUDA
CUDA işlem yetenekleri, nvidia-smi çalıştırılarak otomatik olarak algılanır. Derleme sırasında GPU'lar kullanılamıyorsa işlem yeteneklerini manuel olarak belirtmeniz gerekir. Örneğin:
# 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"
Oluştur:
docker exec xla bazel build \
--spawn_strategy=sandboxed \
--test_output=all \
//xla/...
- Docker kapsayıcısını başlatırken
--gpus allişaretini kullanmayın. ./configure.pysırasında,--cuda_compute_capabilitiesişaretini kullanarak CUDA işlem yeteneklerini manuel olarak belirtin.
# 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 ve StableHLO dahil olmak üzere tüm yığını oluşturması gerektiğinden ilk derlemeniz biraz zaman alacaktır.
XLA oluşturma hakkında daha fazla bilgi edinmek için Kaynaktan oluşturma başlıklı makaleyi inceleyin.
Pull isteği oluşturma
Değişiklikleri incelemeye göndermeye hazır olduğunuzda pull isteği oluşturun.
XLA kod inceleme felsefesi hakkında bilgi edinmek için İnceleme Süreci başlıklı makaleyi inceleyin.
Statik analiz (Clang-Tidy)
XLA, kod kalitesini korumak için statik analizde clang-tidy kullanır ve doğrulama içerir.
Nasıl Çalıştırılır?
Kontrolleri yürütmenin iki yolu vardır. Belirli hedeflere karşı çalıştırmak için:
bazel build --config=clang-tidy //path/to:target1 //path/to:target2
Ayrıca, CI iş akışlarında kullanılan ve bunu yukarı akış ana dalına karşı özellik dalından git diff ile çalıştıran bir yardımcı komut dosyası vardır.
# Make sure the main is updated.
git fetch origin main
bazel run //build_tools/ci:run_clang_tidy