উৎস থেকে তৈরি করুন

এই নথিটি বর্ণনা করে কিভাবে XLA উপাদানগুলি তৈরি করতে হয়।

আপনি যদি XLA সংগ্রহস্থল ক্লোন না করেন বা Bazel ইনস্টল না করেন, XLA বিকাশকারী গাইডের প্রাথমিক বিভাগগুলি দেখুন।

লিনাক্স

কনফিগার করুন

XLA বিল্ডগুলি সংগ্রহস্থলের রুট ডিরেক্টরিতে .bazelrc ফাইল দ্বারা কনফিগার করা হয়। ./configure.py স্ক্রিপ্টটি সাধারণ সেটিংস সামঞ্জস্য করতে ব্যবহার করা যেতে পারে।

আপনি যদি কনফিগারেশন পরিবর্তন করতে চান, সংগ্রহস্থলের রুট ডিরেক্টরি থেকে ./configure.py স্ক্রিপ্টটি চালান। এই স্ক্রিপ্টে XLA নির্ভরতার অবস্থান এবং অতিরিক্ত বিল্ড কনফিগারেশন বিকল্পগুলির জন্য পতাকা রয়েছে (উদাহরণস্বরূপ কম্পাইলার পতাকা)। বিস্তারিত জানার জন্য নমুনা অধিবেশন বিভাগে পড়ুন.

CPU সমর্থন

আমরা একটি উপযুক্ত ডকার ইমেজ ব্যবহার করার পরামর্শ দিই - যেমন ml-build , যা XLA-এর CI ওয়ার্কফ্লোতে GitHub-এও ব্যবহৃত হয় - XLA তৈরি এবং পরীক্ষা করার জন্য। এমএল-বিল্ড ইমেজটি ক্ল্যাং 18 পূর্বে ইনস্টল করা আছে।

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

একটি ডকার কন্টেইনার ব্যবহার করে, আপনি নিম্নলিখিত কমান্ডগুলি চালিয়ে CPU সমর্থন সহ XLA তৈরি করতে পারেন:

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

docker exec xla bazel build \
  --spawn_strategy=sandboxed \
  --test_output=all \
  //xla/...

আপনি যদি ডকার ব্যবহার না করে সিপিইউ সমর্থন সহ এক্সএলএ লক্ষ্যগুলি তৈরি করতে চান তবে আপনাকে ক্ল্যাং ইনস্টল করতে হবে। XLA বর্তমানে CI-তে ক্ল্যাং 18 দিয়ে তৈরি করা হয়েছে, তবে আগের সংস্করণগুলিও কাজ করা উচিত।

লক্ষ্যগুলি কনফিগার করতে এবং তৈরি করতে, নিম্নলিখিত কমান্ডগুলি চালান:

./configure.py --backend=CPU

bazel build \
  --spawn_strategy=sandboxed \
  --test_output=all \
  //xla/...

GPU সমর্থন

আমরা GPU সমর্থন সহ XLA তৈরি করতে উপরে উল্লিখিত একই ডকার কন্টেইনার ব্যবহার করার পরামর্শ দিই।

সমস্ত GPU-তে অ্যাক্সেস সহ ডকার কন্টেইনার শুরু করতে, নিম্নলিখিত কমান্ডটি চালান:

docker run -itd --rm \
  --gpus all \
  --name xla_gpu \
  -w /xla \
  -v $PWD:/xla \
  us-docker.pkg.dev/ml-oss-artifacts-published/ml-public-container/ml-build:latest \
  bash

GPU সমর্থন সহ XLA তৈরি করতে, নিম্নলিখিত কমান্ডগুলি চালান:

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

docker exec xla_gpu bazel build \
  --spawn_strategy=sandboxed \
  --test_output=all \
  //xla/...
  • ডকার কন্টেইনার শুরু করার সময় --gpus all পতাকা ব্যবহার করবেন না
  • CUDA গণনা ক্ষমতা ম্যানুয়ালি নির্দিষ্ট করুন, উদাহরণস্বরূপ:
docker exec xla_gpu ./configure.py --backend=CUDA \
  --cuda_compute_capabilities="9.0"

TensorFlow-এর GPU ডকার ইমেজ সংক্রান্ত আরও বিশদ বিবরণের জন্য আপনি এই নথিটি পরীক্ষা করে দেখতে পারেন।

আপনি ডকার ছাড়াই জিপিইউ সমর্থন সহ XLA লক্ষ্যগুলি তৈরি করতে পারেন। নিম্নলিখিত কমান্ডগুলি ব্যবহার করে লক্ষ্যগুলি কনফিগার করুন এবং তৈরি করুন:

./configure.py --backend=CUDA

bazel build \
  --spawn_strategy=sandboxed \
  --test_output=all \
  //xla/...

হারমেটিক CUDA সম্পর্কিত আরও বিশদ বিবরণের জন্য আপনি এই নথিটি দেখতে পারেন।

JAX CI/রিলিজ কন্টেইনার ব্যবহার করে CUDA/cuDNN সমর্থন সহ XLA তৈরি করুন

XLA হল একটি কম্পাইলার যা অভ্যন্তরীণভাবে JAX দ্বারা ব্যবহৃত হয়। JAX PyPI চাকার মাধ্যমে বিতরণ করা হয়। JAX কন্টিনিউয়াস ইন্টিগ্রেশন ডকুমেন্টেশন ব্যাখ্যা করে যে কীভাবে টেনসরফ্লো/এমএল-বিল্ড: লেটেস্ট ডকার কন্টেইনার ব্যবহার করে JAX চাকা তৈরি করা যায়।

আমরা JAX কন্টেইনারের মধ্যেও XLA লক্ষ্যগুলি তৈরি করতে এই নির্দেশাবলী প্রসারিত করতে পারি। এটি নিশ্চিত করে যে XLA লক্ষ্যগুলির বিল্ড কনফিগারেশন JAX/XLA বিল্ড কনফিগারেশনের সাথে সামঞ্জস্যপূর্ণ, যা কার্যকর হতে পারে যদি আমরা XLA সরঞ্জামগুলি ব্যবহার করে কাজের চাপের ফলাফলগুলি পুনরুত্পাদন করতে চাই যা মূলত JAX-এ তৈরি করা হয়েছিল৷

JAX CI কন্টেইনারে XLA টার্গেট তৈরি করুন

  1. JAX সংগ্রহস্থল ক্লোন করুন এবং 'jax' ডিরেক্টরিতে নেভিগেট করুন
git clone <a href="https://github.com/jax-ml/jax.git">https://github.com/jax-ml/jax.git</a>

cd jax
  1. চালানোর মাধ্যমে JAX CI/রিলিজ ডকার কন্টেইনার শুরু করুন:
./ci/utilities/run_docker_container.sh

এটি 'জ্যাক্স' নামে একটি ডকার কন্টেইনার শুরু করবে।

  1. ব্যবহার করে পাত্রের ভিতরে jax-cuda-plugin টার্গেট তৈরি করুন:
docker exec jax ./ci/build_artifacts.sh jax-cuda-plugin

এটি CUDA/cuDNN সমর্থন সহ প্রয়োজনীয় বিল্ড কনফিগারেশন সহ .jax_configure.bazelrc ফাইল তৈরি করবে

  1. পাত্রের ভিতরে একটি ইন্টারেক্টিভ শেল অ্যাক্সেস করুন:
docker exec -ti jax /bin/bash

আপনার এখন কন্টেইনারের মধ্যে /jax ডিরেক্টরিতে থাকা উচিত

  1. নিম্নলিখিত কমান্ড দিয়ে XLA টার্গেট তৈরি করুন, যেমন:
/usr/local/bin/bazel build \
  --config=cuda_libraries_from_stubs \
  --verbose_failures=true \
  @xla//xla/tools/multihost_hlo_runner:hlo_runner_main

ঐচ্ছিকভাবে, আপনি HERMETIC envs ওভাররাইট করতে পারেন, যেমন:

--repo_env=HERMETIC_CUDA_COMPUTE_CAPABILITIES="sm_90"
  1. প্রয়োজনে হোস্ট ওএস থেকে সেগুলি অ্যাক্সেস করতে /jax/dist এ ফলাফলের নিদর্শনগুলি অনুলিপি করুন
cp bazel-bin/external/xla/xla/tools/multihost_hlo_runner/hlo_runner_main \
  ./dist/
  1. ইন্টারেক্টিভ শেল থেকে প্রস্থান করুন:
exit