این راهنما به شما نشان میدهد که چگونه توسعه پروژه XLA را شروع کنید.
قبل از شروع، پیشنیازهای زیر را تکمیل کنید:
- به صفحه مشارکت بروید و فرآیند مشارکت را مرور کنید.
- اگر قبلاً این کار را نکردهاید، توافقنامه مجوز مشارکتکننده را امضا کنید.
- وابستگیهای زیر را نصب یا پیکربندی کنید:
سپس مراحل زیر را برای دریافت کد منبع، راهاندازی یک محیط، ساخت مخزن و ایجاد درخواست pull دنبال کنید.
کد را دریافت کنید
- یک انشعاب از مخزن XLA ایجاد کنید.
انشعاب مخزن خود را کلون کنید و
{USER}را با نام کاربری گیتهاب خود جایگزین کنید:git clone <a href="https://github.com/">https://github.com/</a>{USER}/xla.gitبه پوشه
xlaبروید:cd xlaمخزن بالادستی از راه دور را پیکربندی کنید:
git remote add upstream <a href="https://github.com/openxla/xla.git">https://github.com/openxla/xla.git</a>
یک محیط تنظیم کنید
بازل را نصب کنید.
برای ساخت XLA، باید Bazel را نصب کرده باشید. روش پیشنهادی برای نصب Bazel، استفاده از Bazelisk است که به طور خودکار نسخه صحیح Bazel را برای XLA دانلود میکند. اگر Bazelisk در دسترس نباشد، میتوانید Bazel را به صورت دستی نصب کنید .
کانتینر ml-build Docker را ایجاد و اجرا کنید.
برای راهاندازی یک کانتینر داکر برای ساخت 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 هستید، برای اعطای دسترسی کانتینر به تمام GPUهای موجود،
--gpus allرا اضافه کنید. این کار امکان تشخیص خودکار قابلیتهای محاسباتی CUDA را فراهم میکند.
ساختن
پیکربندی برای پردازنده:
docker exec xla ./configure.py --backend=CPU
پیکربندی برای پردازنده گرافیکی:
docker exec xla ./configure.py --backend=CUDA
قابلیتهای محاسباتی CUDA به طور خودکار با اجرای nvidia-smi شناسایی میشوند. اگر GPUها در طول ساخت در دسترس نباشند، باید قابلیتهای محاسباتی را به صورت دستی مشخص کنید. به عنوان مثال:
# 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/...
- هنگام شروع کانتینر داکر از فلگ
--gpus allاستفاده نکنید . - در طول
./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، به ساخت از منبع مراجعه کنید.
ایجاد درخواست pull
وقتی آماده ارسال تغییرات برای بررسی بودید، یک درخواست pull ایجاد کنید.
برای آشنایی با فلسفه بررسی کد XLA، به فرآیند بررسی مراجعه کنید.
تحلیل استاتیک (Clang-Tidy)
برای حفظ کیفیت کد، XLA clang-tidy برای تحلیل استاتیک و تأیید صحت کد استفاده میکند.
چگونه بدویم؟
پیکربندی clang-tidy مستلزم وجود فایل اجرایی clang-tidy در PATH است.
با استفاده از پروفایل اختصاصی، بررسیها را در سراسر اهداف خود انجام دهید:
bazel build //path/to:target --config=clang-tidy