ภาพรวม
MLIR หรือ Multi-Level Intermediate Representation คือรูปแบบการนำเสนอและไลบรารีของยูทิลิตี้คอมไพลเลอร์ที่อยู่ระหว่างการแสดงโมเดลกับคอมไพเลอร์/เอ็กซีคิวเตอร์ระดับต่ำที่สร้างโค้ดเฉพาะฮาร์ดแวร์
หัวใจสำคัญของ MLIR คือโครงสร้างพื้นฐานที่ยืดหยุ่นสำหรับคอมไพเลอร์ที่ได้รับการปรับให้เหมาะสมสมัยใหม่ ซึ่งหมายความว่าประกอบด้วยข้อกำหนดสำหรับการเป็นตัวแทนระดับกลาง (IR) และชุดเครื่องมือโค้ดเพื่อทำการแปลงการเป็นตัวแทนนั้น (ในสำนวนคอมไพเลอร์ เมื่อคุณย้ายจากการเป็นตัวแทนระดับสูงกว่าไปสู่การเป็นตัวแทนระดับล่าง การแปลงเหล่านี้สามารถเรียกว่า "การลดระดับ")
MLIR ได้รับอิทธิพลอย่างมากจาก LLVM และนำแนวคิดดีๆ มากมายกลับมาใช้ใหม่อย่างไม่สะทกสะท้าน มีระบบประเภทที่ยืดหยุ่น และช่วยให้สามารถแสดง วิเคราะห์ และแปลงกราฟที่รวมนามธรรมหลายระดับไว้ในหน่วยการคอมไพล์เดียวกัน นามธรรมเหล่านี้รวมถึงการดำเนินการ TensorFlow, ขอบเขตของลูปโพลีฮีดรัลแบบซ้อน และแม้แต่คำสั่ง LLVM และการดำเนินการและประเภทของฮาร์ดแวร์แบบคงที่
เราคาดหวังว่า MLIR จะเป็นที่สนใจของหลายกลุ่ม รวมถึง:
- นักวิจัยและผู้ดำเนินการคอมไพเลอร์ที่ต้องการเพิ่มประสิทธิภาพและการใช้หน่วยความจำของโมเดลการเรียนรู้ของเครื่อง
- ผู้ผลิตฮาร์ดแวร์กำลังมองหาวิธีเชื่อมต่อฮาร์ดแวร์กับ TensorFlow เช่น TPU, ฮาร์ดแวร์ประสาทแบบพกพาในโทรศัพท์ และ ASIC แบบกำหนดเองอื่นๆ
- ผู้ที่เขียนการเชื่อมโยงภาษาที่ต้องการใช้ประโยชน์จากการปรับแต่งคอมไพเลอร์และการเร่งความเร็วด้วยฮาร์ดแวร์
ระบบนิเวศของ TensorFlow ประกอบด้วยคอมไพเลอร์และเครื่องมือเพิ่มประสิทธิภาพจำนวนหนึ่งที่ทำงานบนสแต็กซอฟต์แวร์และฮาร์ดแวร์หลายระดับ เราคาดหวังว่าการนำ MLIR มาใช้อย่างค่อยเป็นค่อยไปจะทำให้ทุกแง่มุมของสแต็กนี้ง่ายขึ้น