XLA की डेवलपर गाइड

इस गाइड में, XLA प्रोजेक्ट को डेवलप करने का तरीका बताया गया है.

शुरू करने से पहले, इन ज़रूरी शर्तों को पूरा करें:

  1. योगदान देने वाले पेज पर जाएं और योगदान देने की प्रोसेस की समीक्षा करें.
  2. अगर आपने पहले से ऐसा नहीं किया है, तो योगदान देने वाले व्यक्ति के लाइसेंस समझौते पर हस्ताक्षर करें.
  3. ये डिपेंडेंसी इंस्टॉल या कॉन्फ़िगर करें:

इसके बाद, सोर्स कोड पाने, एनवायरमेंट सेट अप करने, डेटाबेस बनाने, और पुल का अनुरोध करने के लिए, यहां दिया गया तरीका अपनाएं.

कोड प्राप्त करें

  1. XLA डेटाबेस का फ़ोर्क बनाएं.
  2. डेटाबेस के अपने फ़ोर्क का क्लोन बनाएं. साथ ही, {USER} को अपने GitHub उपयोगकर्ता नाम से बदलें:

    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 का इस्तेमाल किया जाए. यह XLA के लिए, Bazel का सही वर्शन अपने-आप डाउनलोड कर लेता है. अगर Bazelisk उपलब्ध नहीं है, तो Bazel को मैन्युअल तरीके से इंस्टॉल किया जा सकता है.

  2. ml-build Docker कंटेनर बनाएं और चलाएं.

    सीपीयू और जीपीयू, दोनों के लिए सहायता के साथ XLA बनाने के लिए, Docker कंटेनर सेट अप करने के लिए, यह निर्देश चलाएं:

    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
    

    अगर जीपीयू/CUDA की सहायता से बनाया जा रहा है, तो --gpus all जोड़ें, ताकि कंटेनर को सभी उपलब्ध जीपीयू का ऐक्सेस मिल सके. इससे, CUDA की कंप्यूटिंग क्षमताओं का पता अपने-आप लग जाता है.

बनाएं

सीपीयू के लिए कॉन्फ़िगर करें:

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

जीपीयू के लिए कॉन्फ़िगर करें:

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

nvidia-smi चलाने पर, CUDA की कंप्यूटिंग क्षमताओं का पता अपने-आप लग जाएगा. अगर बनाते समय जीपीयू उपलब्ध नहीं हैं, तो आपको कंप्यूटिंग क्षमताओं को मैन्युअल तरीके से तय करना होगा. उदाहरण के लिए:

# 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 फ़्लैग का इस्तेमाल करें.
  • ./configure.py के दौरान, --cuda_compute_capabilities फ़्लैग का इस्तेमाल करके, CUDA की कंप्यूटिंग क्षमताओं को मैन्युअल तरीके से तय करें.
# 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 के कोड की समीक्षा करने के तरीके के बारे में जानने के लिए, समीक्षा की प्रोसेस लेख पढ़ें.

स्टैटिक विश्लेषण (Clang-Tidy)

कोड की क्वालिटी बनाए रखने के लिए, XLA स्टैटिक विश्लेषण और शामिल करने की पुष्टि के लिए clang-tidy का इस्तेमाल करता है.

इसे कैसे चलाएं

चेक करने के दो तरीके हैं. खास टारगेट के लिए इसे चलाने के लिए, यह तरीका अपनाएं:

bazel build --config=clang-tidy //path/to:target1 //path/to:target2

एक हेल्पर स्क्रिप्ट भी है, जिसका इस्तेमाल सीआई वर्कफ़्लो में भी किया जाता है. यह अपस्ट्रीम मेन के मुकाबले, फ़ीचर ब्रांच से git diff के लिए इसे चलाती है.

# Make sure the main is updated.
git fetch origin main
bazel run //build_tools/ci:run_clang_tidy