Обзор и примеры использования приведены в проекте rules_ml_toolchain .
УСТАРЕЛО: Негерметичное использование CUDA/CUDNN
Хотя негерметичное использование CUDA/CUDNN устарело, его можно использовать для некоторых экспериментов, которые в настоящее время официально не поддерживаются (например, сборка колес в Windows с помощью CUDA).
Вот шаги для использования негерметичной CUDA, установленной локально в проектах Google ML:
Удалить вызовы правил герметичного репозитория CUDA из файла
WORKSPACE
проекта, зависящего от XLA.Добавьте вызовы правил негерметичного репозитория CUDA в конец файла
WORKSPACE
.Для XLA и JAX:
load("@xla//third_party/gpus:cuda_configure.bzl", "cuda_configure") cuda_configure(name = "local_config_cuda") load("@xla//third_party/nccl:nccl_configure.bzl", "nccl_configure") nccl_configure(name = "local_config_nccl")
Для Tensorflow:
load("@local_xla//third_party/gpus:cuda_configure.bzl", "cuda_configure") cuda_configure(name = "local_config_cuda") load("@local_xla//third_party/nccl:nccl_configure.bzl", "nccl_configure") nccl_configure(name = "local_config_nccl")
Задайте следующие переменные среды непосредственно в оболочке или в файле
.bazelrc
, как показано ниже:build:cuda --action_env=TF_CUDA_VERSION=<locally installed cuda version> build:cuda --action_env=TF_CUDNN_VERSION=<locally installed cudnn version> build:cuda --action_env=TF_CUDA_COMPUTE_CAPABILITIES=<CUDA compute capabilities> build:cuda --action_env=LD_LIBRARY_PATH=<CUDA/CUDNN libraries folder locations divided by “:” sign> build:cuda --action_env=CUDA_TOOLKIT_PATH=<preinstalled CUDA folder location> build:cuda --action_env=TF_CUDA_PATHS=<preinstalled CUDA/CUDNN folder locations divided by “,” sign> build:cuda --action_env=NCCL_INSTALL_PATH=<preinstalled NCCL library folder location>
Обратите внимание, что
TF_CUDA_VERSION
иTF_CUDNN_VERSION
должны состоять только из основных и дополнительных версий (например,12.3
для CUDA и9.1
для CUDNN).Теперь вы можете запустить команду
bazel
для использования локально установленных CUDA и CUDNN.Для XLA никаких изменений в параметрах команды не требуется.
Для JAX используйте флаг
--override_repository=tsl=<tsl_path>
в параметрах команды Bazel.Для Tensorflow используйте флаг
--override_repository=local_tsl=<tsl_path>
в параметрах команды Bazel.