راهنمای توسعه دهنده XLA

این راهنما به شما نشان می دهد که چگونه توسعه پروژه XLA را شروع کنید.

قبل از شروع، پیش نیازهای زیر را کامل کنید:

  1. به صفحه مشارکت بروید و روند مشارکت را بررسی کنید.
  2. اگر قبلاً این کار را نکرده‌اید، موافقت‌نامه مجوز مشارکت‌کننده را امضا کنید.
  3. وابستگی های زیر را نصب یا پیکربندی کنید:

سپس مراحل زیر را دنبال کنید تا کد منبع را دریافت کنید، یک محیط راه اندازی کنید، مخزن را بسازید و یک درخواست کشش ایجاد کنید.

کد را دریافت کنید

  1. یک فورک از مخزن XLA ایجاد کنید.
  2. فورک مخزن خود را کلون کنید و نام کاربری GitHub خود را جایگزین {USER} کنید:

    git clone <a href="https://github.com/">https://github.com/</a>{USER}/xla.git
    
  3. به دایرکتوری xla تغییر دهید: cd xla

  4. مخزن بالادستی راه دور را پیکربندی کنید:

    git remote add upstream <a href="https://github.com/openxla/xla.git">https://github.com/openxla/xla.git</a>
    

یک محیط تنظیم کنید

  1. Bazel را نصب کنید.

    برای ساخت XLA باید Bazel را نصب کرده باشید. روش توصیه شده برای نصب Bazel استفاده از Bazelisk است که به طور خودکار نسخه صحیح Bazel را برای XLA دانلود می کند. اگر Bazelisk در دسترس نیست، می توانید Bazel را به صورت دستی نصب کنید .

  2. ظرف ml-build Docker را ایجاد و اجرا کنید.

    برای راه اندازی یک Docker Container برای ساخت XLA با پشتیبانی از CPU و GPU، دستور زیر را اجرا کنید:

    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
    

    اگر با پشتیبانی GPU/CUDA ساخته می‌شوید، --gpus all اضافه کنید تا به کانتینر دسترسی به تمام GPUهای موجود داده شود. این امکان تشخیص خودکار قابلیت های محاسباتی CUDA را فراهم می کند.

ساخت

پیکربندی برای CPU:

docker exec xla ./configure.py --backend=CPU

پیکربندی برای GPU:

docker exec xla ./configure.py --backend=CUDA

قابلیت های محاسباتی CUDA با اجرای nvidia-smi به طور خودکار شناسایی می شود. اگر پردازنده‌های گرافیکی در طول ساخت در دسترس نیستند، باید قابلیت‌های محاسباتی را به صورت دستی مشخص کنید. به عنوان مثال:

# 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 flag استفاده نکنید .
  • در طول ./configure.py ، قابلیت های محاسبه CUDA را با استفاده از پرچم --cuda_compute_capabilities به صورت دستی مشخص کنید.
# 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، به ساخت از منبع مراجعه کنید.

یک درخواست کشش ایجاد کنید

وقتی برای ارسال تغییرات برای بررسی آماده شدید، یک درخواست کشش ایجاد کنید.

برای آشنایی با فلسفه بررسی کد XLA، به فرآیند بررسی مراجعه کنید.