StableHLO คือชุดการดำเนินการสําหรับการดำเนินการระดับสูง (HLO) ในโมเดลแมชชีนเลิร์นนิง (ML) โดยพื้นฐานแล้ว นี่เป็นเลเยอร์การย้ายข้อมูลระหว่างเฟรมเวิร์ก ML ต่างๆ กับคอมไพเลอร์ ML โดยเฟรมเวิร์ก ML ที่ผลิตโปรแกรม StableHLO จะเข้ากันได้กับคอมไพเลอร์ ML ที่ใช้โปรแกรม StableHLO
เป้าหมายของเราคือการลดความซับซ้อนและเร่งการพัฒนา ML โดยการสร้างความสามารถในการทำงานร่วมกันมากขึ้นระหว่างเฟรมเวิร์ก ML ต่างๆ (เช่น TensorFlow, JAX และ PyTorch) กับคอมไพเลอร์ ML (เช่น XLA และ IREE)
ฟีเจอร์และการเริ่มต้นใช้งาน
StableHLO เวอร์ชันปัจจุบันมีฟีเจอร์และเหตุการณ์สำคัญมากมาย ดังนี้
- ระบุอย่างสมบูรณ์: ข้อกำหนด StableHLO ได้รับการกำหนดไว้สำหรับการดำเนินการทั้งหมดประมาณ 100 รายการที่มีโปรแกรมตรวจสอบและการอนุมานประเภท รวมถึงความสามารถด้านความยืดหยุ่นและการแปลงค่าเป็นจำนวนเต็ม
- ความเข้ากันได้รับประกันความเข้ากันได้แบบย้อนหลัง 5 ปีและแบบไปข้างหน้า 2 ปี ซึ่งช่วยให้สามารถติดตั้งใช้งานเซิร์ฟเวอร์ / อุปกรณ์เอดจ์ได้ในระยะยาวและดำเนินการตามรอบการอัปเดตประจำปี
- โปรแกรมตีความข้อมูลอ้างอิงที่รองรับการดำเนินการแบบคงที่และแบบไดนามิก รวมถึง C++ และ Python API
- ความสามารถในการขยายผ่านการดำเนินการแบบคอมโพสิตและการเรียกใช้ที่กำหนดเองเพื่อเปิดใช้การทดสอบอย่างรวดเร็วหรือเพื่อจำลองการดำเนินการเฉพาะของผู้ให้บริการ
- API ของ C++/Python สําหรับฟีเจอร์หลักและไฟล์ nightly dev-wheel เพื่อการเริ่มต้นใช้งานที่ง่ายขึ้น
- บทแนะนำ Colab เพื่อสาธิต Python API สำหรับการดึงข้อมูล StableHLO จากเฟรมเวิร์กต่างๆ รวมถึงฟังก์ชันยูทิลิตีอื่นๆ
- ชุดข้อมูลทดสอบของไฟล์ทดสอบ 3,000 ไฟล์ รวมถึงโปรแกรมแบบไดนามิกและแบบเชิงปริมาณ รวมถึงผลลัพธ์ที่ต้องการสำหรับการทดสอบการผสานรวมกับผู้ให้บริการ การทดสอบความเข้ากันได้แบบย้อนหลัง / ไปข้างหน้า และการครอบคลุมโค้ดมากกว่า 90%
- การเปลี่ยนรูปแบบโปรแกรมเพื่อลดความซับซ้อนของโปรแกรมที่ไม่ขึ้นอยู่กับฮาร์ดแวร์ การปรับแต่งโปรแกรมที่มีรูปแบบแบบไดนามิกโดยใช้อาร์กิวเมนต์อินพุตที่เฉพาะเจาะจง และการเปลี่ยนรูปแบบเป็นรูปแบบ MLIR เวอร์ชันที่อัปเดตอยู่ด้านบน เช่น linalg หรือ tosa
- ขับเคลื่อนโดยชุมชนที่มีการมีส่วนร่วมจากหลายระบบนิเวศสําหรับการเปลี่ยนรูปแบบ รวมถึง RFC สําหรับการเปลี่ยนแปลงชุดการดำเนินการ ได้แก่ ประเภท FP8 ใหม่, collective_broadcast, การดำเนินการรวบรวม / กระจายแบบเป็นกลุ่ม, การแปลงค่าแบบผสม, API ของโปรแกรมแปลภาษา, การแยก CHLO, การเปลี่ยนรูปแบบแบบง่ายของ StableHLO และอื่นๆ
นักพัฒนาโมเดลที่ต้องการใช้ StableHLO หรือ XLA เพื่อคอมไพล์โปรเจ็กต์ ML ให้อ่านเอกสารประกอบที่เกี่ยวข้องสำหรับเฟรมเวิร์ก ML ของคุณ
นักพัฒนาคอมไพเลอร์ที่ต้องการผสานรวม StableHLO โปรดดูเอกสารประกอบเกี่ยวกับการเริ่มต้นใช้งานในเว็บไซต์นี้ รวมถึงบทแนะนำและรายละเอียดสำหรับนักพัฒนาซอฟต์แวร์ ดูส่วนชุมชนของหน้านี้เพื่อรับการสนับสนุนเกี่ยวกับการเริ่มต้นใช้งาน คำถาม หรือปัญหาที่พบ
วิธีการสร้าง
ดูวิธีการสร้างได้ที่ StableHLO ใน GitHub
ชุมชน
การสร้างเลเยอร์การย้ายข้อมูลอันน่าทึ่งระหว่างเฟรมเวิร์ก ML กับคอมไพเลอร์ ML ต้องอาศัยการทำงานร่วมกันของอุตสาหกรรม ML ทั้งหมด เราจึงยินดีที่ได้คุณมาช่วยในโปรเจ็กต์ StableHLO
เราใช้ปัญหา / คำขอดึงใน GitHub เพื่อจัดระเบียบการพัฒนา และ openxla-discuss เพื่อพูดคุยกันแบบยาวๆ นอกจากนี้ เรายังมี#stablehlo
แชแนลในเซิร์ฟเวอร์ Discord ของ OpenXLA ด้วย