Bu belgede, XLA bileşenlerinin nasıl oluşturulacağı açıklanmaktadır.
XLA deposunu klonlamadıysanız veya Bazel'i yüklemediyseniz XLA Geliştirici Kılavuzu'nun ilk bölümlerine göz atın.
Linux
Yapılandır
XLA derlemeleri, kod deposunun kök dizinindeki .bazelrc dosyasıyla yapılandırılır. ./configure.py komut dosyası, yaygın ayarları düzenlemek için kullanılabilir.
Yapılandırmayı değiştirmeniz gerekirse ./configure.py komut dosyasını
deponun kök dizininden çalıştırın. Bu komut dosyasında, XLA bağımlılıklarının konumu ve ek derleme yapılandırma seçenekleri (örneğin, derleyici işaretleri) için işaretler bulunur. Ayrıntılı bilgi için Örnek oturum bölümüne bakın.
CPU desteği
XLA'yı oluşturmak ve test etmek için uygun bir Docker görüntüsü (ör. GitHub'daki XLA'nın CI iş akışlarında da kullanılan ml-build) kullanmanızı öneririz. ml-build görüntüsünde Clang 18 önceden yüklenmiş olarak gelir.
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
Docker container'ı kullanarak aşağıdaki komutları çalıştırarak CPU desteğiyle XLA'yı oluşturabilirsiniz:
docker exec xla ./configure.py --backend=CPU
docker exec xla bazel build \
--spawn_strategy=sandboxed \
--test_output=all \
//xla/...
CPU desteğiyle Docker kullanmadan XLA hedefleri oluşturmak istiyorsanız Clang'i yüklemeniz gerekir. XLA şu anda CI'da Clang 18 ile oluşturulmuştur ancak önceki sürümler de çalışmalıdır.
Hedefleri yapılandırmak ve oluşturmak için aşağıdaki komutları çalıştırın:
./configure.py --backend=CPU
bazel build \
--spawn_strategy=sandboxed \
--test_output=all \
//xla/...
GPU desteği
GPU desteğiyle XLA'yı oluşturmak için yukarıda bahsedilen Docker kapsayıcısının kullanılmasını öneririz.
Tüm GPU'lara erişimi olan Docker container'ı başlatmak için aşağıdaki komutu çalıştırın:
docker run -itd --rm \
--gpus all \
--name xla_gpu \
-w /xla \
-v $PWD:/xla \
us-docker.pkg.dev/ml-oss-artifacts-published/ml-public-container/ml-build:latest \
bash
GPU desteğiyle XLA'yı oluşturmak için aşağıdaki komutları çalıştırın:
docker exec xla_gpu ./configure.py --backend=CUDA
docker exec xla_gpu bazel build \
--spawn_strategy=sandboxed \
--test_output=all \
//xla/...
- Docker kapsayıcısını başlatırken
--gpus allişaretini kullanmayın. - CUDA işlem yeteneklerini manuel olarak belirtin. Örneğin:
docker exec xla_gpu ./configure.py --backend=CUDA \
--cuda_compute_capabilities="9.0"
TensorFlow'un GPU Docker görüntüleri hakkında daha fazla bilgi için bu belgeyi inceleyebilirsiniz.
Docker olmadan GPU destekli XLA hedefleri de oluşturabilirsiniz. Aşağıdaki komutları kullanarak hedefleri yapılandırın ve oluşturun:
./configure.py --backend=CUDA
bazel build \
--spawn_strategy=sandboxed \
--test_output=all \
//xla/...
Hermetik CUDA ile ilgili daha fazla bilgi için bu belgeyi inceleyebilirsiniz.
JAX CI/Release Container'ı kullanarak CUDA/cuDNN desteğiyle XLA'yı oluşturma
XLA, JAX tarafından dahili olarak kullanılan bir derleyicidir. JAX, PyPI tekerlekleri aracılığıyla dağıtılır. JAX Sürekli Entegrasyon belgelerinde, tensorflow/ml-build:latest Docker container'ı kullanılarak JAX tekerleklerinin nasıl oluşturulacağı açıklanmaktadır.
Bu talimatları, JAX container'ında XLA hedefleri oluşturmak için de kullanabilirsiniz. Bu, XLA hedeflerinin derleme yapılandırmasının JAX/XLA derleme yapılandırmasıyla tutarlı olmasını sağlar. Bu, başlangıçta JAX'te oluşturulan XLA araçlarını kullanarak iş yükü sonuçlarını yeniden üretmek istediğimizde yararlı olabilir.
JAX CI kapsayıcısında XLA hedefleri oluşturma
- JAX deposunu klonlayın ve "jax" dizinine gidin.
git clone <a href="https://github.com/jax-ml/jax.git">https://github.com/jax-ml/jax.git</a>
cd jax
- Aşağıdaki komutu çalıştırarak JAX CI/Release Docker kapsayıcısını başlatın:
./ci/utilities/run_docker_container.sh
Bu işlem, "jax" adlı bir Docker kapsayıcısı başlatır.
- Aşağıdaki komutu kullanarak jax-cuda-plugin hedefini kapsayıcının içinde oluşturun:
docker exec jax ./ci/build_artifacts.sh jax-cuda-plugin
Bu işlem, CUDA/cuDNN desteği de dahil olmak üzere gerekli derleme yapılandırmasıyla .jax_configure.bazelrc dosyasını oluşturur.
- Container'ın içinde etkileşimli bir kabuğa erişin:
docker exec -ti jax /bin/bash
Artık kapsayıcıdaki /jax dizininde olmalısınız.
- Aşağıdaki komutla XLA hedefini oluşturun (ör. şu komutla):
/usr/local/bin/bazel build \
--config=cuda_libraries_from_stubs \
--verbose_failures=true \
@xla//xla/tools/multihost_hlo_runner:hlo_runner_main
İsteğe bağlı olarak, HERMETIC ortam değişkenlerinin üzerine yazabilirsiniz. Örneğin:
--repo_env=HERMETIC_CUDA_COMPUTE_CAPABILITIES="sm_90"
- Gerekirse ana makine işletim sisteminden erişmek için ortaya çıkan yapıtları
/jax/distkonumuna kopyalayın.
cp bazel-bin/external/xla/xla/tools/multihost_hlo_runner/hlo_runner_main \
./dist/
- Etkileşimli kabuktan çıkın:
exit