XLA বিকাশকারী গাইড

এই নির্দেশিকাটি আপনাকে দেখাবে কীভাবে XLA প্রজেক্টটির উন্নয়ন শুরু করতে হয়।

শুরু করার আগে, নিম্নলিখিত পূর্বশর্তগুলি পূরণ করুন:

  1. অনুদান পৃষ্ঠায় যান এবং অনুদান প্রক্রিয়াটি পর্যালোচনা করুন।
  2. আপনি যদি ইতিমধ্যে তা না করে থাকেন, তাহলে অবদানকারী লাইসেন্স চুক্তিতে স্বাক্ষর করুন।
  3. নিম্নলিখিত নির্ভরতাগুলি ইনস্টল বা কনফিগার করুন:

এরপর সোর্স কোড পেতে, এনভায়রনমেন্ট সেট আপ করতে, রিপোজিটরি বিল্ড করতে এবং পুল রিকোয়েস্ট তৈরি করতে নিচের ধাপগুলো অনুসরণ করুন।

কোডটি নিন

  1. XLA রিপোজিটরিটির একটি ফর্ক তৈরি করুন।
  2. রিপোটির আপনার ফর্কটি ক্লোন করুন, এবং {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 ব্যবহার করা, যা স্বয়ংক্রিয়ভাবে XLA-এর জন্য সঠিক Bazel সংস্করণটি ডাউনলোড করে। যদি Bazelisk উপলব্ধ না থাকে, তবে আপনি ম্যানুয়ালি Bazel ইনস্টল করতে পারেন।

  2. ml-build ডকার কন্টেইনারটি তৈরি করুন এবং চালান।

    সিপিইউ এবং জিপিইউ উভয় সমর্থনসহ এক্সএলএ (XLA) বিল্ড করার জন্য একটি ডকার কন্টেইনার সেট আপ করতে, নিম্নলিখিত কমান্ডটি চালান:

    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

nvidia-smi চালানোর মাধ্যমে CUDA কম্পিউট ক্যাপাবিলিটি স্বয়ংক্রিয়ভাবে শনাক্ত করা হবে। বিল্ডের সময় যদি 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_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 তৈরি করার বিষয়ে আরও জানতে, 'Build from source' দেখুন।

একটি পুল রিকোয়েস্ট তৈরি করুন

পর্যালোচনার জন্য পরিবর্তনগুলো পাঠাতে প্রস্তুত হলে, একটি পুল রিকোয়েস্ট তৈরি করুন।

XLA কোড পর্যালোচনার দর্শন সম্পর্কে জানতে, পর্যালোচনা প্রক্রিয়া দেখুন।

স্থির বিশ্লেষণ (ক্ল্যাং-টাইডি)

কোডের মান বজায় রাখতে, XLA স্ট্যাটিক অ্যানালাইসিস ও ইনক্লুড ভেরিফিকেশনের জন্য clang-tidy ব্যবহার করে।

কীভাবে দৌড়াতে হয়

clang-tidy কনফিগারেশনের জন্য PATH-এ clang-tidy এক্সিকিউটেবলটি উপস্থিত থাকা আবশ্যক।

নির্দিষ্ট প্রোফাইলটি ব্যবহার করে আপনার টার্গেটগুলোতে চেকগুলো সম্পাদন করুন:

bazel build //path/to:target --config=clang-tidy