คู่มือนี้จะแสดงวิธีเริ่มต้นพัฒนาโปรเจ็กต์ XLA
ก่อนเริ่มต้น ให้ทำตามข้อกำหนดเบื้องต้นต่อไปนี้
- ไปที่หน้าการมีส่วนร่วมและดูขั้นตอนการมีส่วนร่วม
- ลงนามในข้อตกลงอนุญาตให้ใช้ผลงานของผู้มีส่วนร่วม หากยังไม่ได้ดำเนินการ
- ติดตั้งหรือกําหนดค่าการอ้างอิงต่อไปนี้
จากนั้นทำตามขั้นตอนด้านล่างเพื่อรับซอร์สโค้ด ตั้งค่าสภาพแวดล้อม สร้างที่เก็บ และสร้าง Pull Request
รับโค้ด
- สร้าง Fork ของที่เก็บ XLA
โคลน Fork ของที่เก็บ โดยแทนที่
{USER}ด้วยชื่อผู้ใช้ GitHub ของคุณ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>
ตั้งค่าสภาพแวดล้อม
ติดตั้ง Bazel
หากต้องการสร้าง XLA คุณต้องติดตั้ง Bazel วิธีที่แนะนำในการติดตั้ง Bazel คือการใช้ Bazelisk ซึ่งจะดาวน์โหลด Bazel เวอร์ชันที่ถูกต้องสำหรับ XLA โดยอัตโนมัติ หาก Bazelisk ไม่พร้อมใช้งาน คุณสามารถติดตั้ง Bazel ด้วยตนเองได้
สร้างและเรียกใช้คอนเทนเนอร์ Docker ของ 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 ให้เพิ่ม
--gpus allเพื่อให้คอนเทนเนอร์มีสิทธิ์เข้าถึง GPU ที่พร้อมใช้งานทั้งหมด ซึ่งจะเปิดใช้การตรวจหาความสามารถในการประมวลผล CUDA โดยอัตโนมัติ
สร้าง
กำหนดค่าสำหรับ CPU ดังนี้
docker exec xla ./configure.py --backend=CPU
กำหนดค่าสำหรับ GPU
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/...
- อย่าใช้ Flag
--gpus allเมื่อเริ่มต้นคอนเทนเนอร์ Docker - ในระหว่าง
./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 Request
เมื่อพร้อมส่งการเปลี่ยนแปลงเพื่อรับการตรวจสอบแล้ว ให้สร้างPull Request
ดูข้อมูลเกี่ยวกับปรัชญาการตรวจสอบโค้ด XLA ได้ที่ กระบวนการตรวจสอบ
การวิเคราะห์แบบคงที่ (Clang-Tidy)
XLA ใช้ clang-tidy สำหรับการวิเคราะห์แบบคงที่และรวมการยืนยันเพื่อรักษาคุณภาพของโค้ด
วิธีเรียกใช้
การตรวจสอบทำได้ 2 วิธี การทดสอบกับเป้าหมายที่เฉพาะเจาะจงสามารถทำได้โดยใช้สิ่งต่อไปนี้
bazel build --config=clang-tidy //path/to:target1 //path/to:target2
มีสคริปต์ตัวช่วยที่ใช้ในเวิร์กโฟลว์ CI ด้วย ซึ่งจะเรียกใช้กับ git diff จากกิ่งของฟีเจอร์เทียบกับกิ่งหลักของต้นทาง
# Make sure the main is updated.
git fetch origin main
bazel run //build_tools/ci:run_clang_tidy