MLIR

ภาพรวม

MLIR หรือ Multi-Level Intermediate Representation คือรูปแบบการนำเสนอและไลบรารีของยูทิลิตี้คอมไพลเลอร์ที่อยู่ระหว่างการแสดงโมเดลกับคอมไพเลอร์/เอ็กซีคิวเตอร์ระดับต่ำที่สร้างโค้ดเฉพาะฮาร์ดแวร์

หัวใจสำคัญของ MLIR คือโครงสร้างพื้นฐานที่ยืดหยุ่นสำหรับคอมไพเลอร์ที่ได้รับการปรับให้เหมาะสมสมัยใหม่ ซึ่งหมายความว่าประกอบด้วยข้อกำหนดสำหรับการเป็นตัวแทนระดับกลาง (IR) และชุดเครื่องมือโค้ดเพื่อทำการแปลงการเป็นตัวแทนนั้น (ในสำนวนคอมไพเลอร์ เมื่อคุณย้ายจากการเป็นตัวแทนระดับสูงกว่าไปสู่การเป็นตัวแทนระดับล่าง การแปลงเหล่านี้สามารถเรียกว่า "การลดระดับ")

MLIR ได้รับอิทธิพลอย่างมากจาก LLVM และนำแนวคิดดีๆ มากมายกลับมาใช้ใหม่อย่างไม่สะทกสะท้าน มีระบบประเภทที่ยืดหยุ่น และช่วยให้สามารถแสดง วิเคราะห์ และแปลงกราฟที่รวมนามธรรมหลายระดับไว้ในหน่วยการคอมไพล์เดียวกัน นามธรรมเหล่านี้รวมถึงการดำเนินการ TensorFlow, ขอบเขตของลูปโพลีฮีดรัลแบบซ้อน และแม้แต่คำสั่ง LLVM และการดำเนินการและประเภทของฮาร์ดแวร์แบบคงที่

เราคาดหวังว่า MLIR จะเป็นที่สนใจของหลายกลุ่ม รวมถึง:

  • นักวิจัยและผู้ดำเนินการคอมไพเลอร์ที่ต้องการเพิ่มประสิทธิภาพและการใช้หน่วยความจำของโมเดลการเรียนรู้ของเครื่อง
  • ผู้ผลิตฮาร์ดแวร์กำลังมองหาวิธีเชื่อมต่อฮาร์ดแวร์กับ TensorFlow เช่น TPU, ฮาร์ดแวร์ประสาทแบบพกพาในโทรศัพท์ และ ASIC แบบกำหนดเองอื่นๆ
  • ผู้ที่เขียนการเชื่อมโยงภาษาที่ต้องการใช้ประโยชน์จากการปรับแต่งคอมไพเลอร์และการเร่งความเร็วด้วยฮาร์ดแวร์

ระบบนิเวศของ TensorFlow ประกอบด้วยคอมไพเลอร์และเครื่องมือเพิ่มประสิทธิภาพจำนวนหนึ่งที่ทำงานบนสแต็กซอฟต์แวร์และฮาร์ดแวร์หลายระดับ เราคาดหวังว่าการนำ MLIR มาใช้อย่างค่อยเป็นค่อยไปจะทำให้ทุกแง่มุมของสแต็กนี้ง่ายขึ้น

แผนภาพภาพรวม MLIR