โปรดดู vhlo_checklist.md
สำหรับขั้นตอนที่ต้องปฏิบัติตาม
ที่เปลี่ยนเป็น VHLO
ภาษา VHLO คืออะไร
ภาษาถิ่น VHLO (Versioned StableHLO) ใช้เพื่อการเรียงอันดับและมีความเสถียร ซึ่งจะแสดงภาพรวมของภาษาถิ่น StableHLO ในช่วงเวลาที่ระบุโดย การกำหนดเวอร์ชันขององค์ประกอบแต่ละรายการของโปรแกรม
VHLO คือภาษาเพิ่มเติมที่มีการดำเนินการที่มีเวอร์ชัน ประเภท และแอตทริบิวต์ ซึ่งหมายความว่าเมื่อเพิ่มสถานที่ลงในภาษาถิ่นแล้ว จะไม่สามารถปรับเปลี่ยน ในลักษณะที่ส่งผลต่ออรรถศาสตร์
การเปลี่ยนแปลงการดำเนินการ ประเภท หรือแอตทริบิวต์จะต้องมีเวอร์ชันใหม่ให้เพิ่ม
ภาษาถิ่น ตัวอย่างเช่น หากเพิ่ม my_op
สมมติลงใน StableHLO ใน
0.9.0 แต่มีการเปลี่ยนแปลงใน 0.11.0 เราจะได้โค้ดต่อไปนี้ใน VHLO
// This represents the StableHLO version of the op from 0.9.0 -> 0.10.0
// Both the lower and the upper bound of versions are inclusive
def VHLO_MyOpV1 : VHLO_Op<"my_op_v1", "0.9.0", "0.10.0"> {
let arguments = (ins
VHLO_AnyType:$operand
);
let results = (outs VHLO_AnyType:$result);
}
// This represents the StableHLO version of the op from 0.11.0 -> current
def VHLO_MyOpV2 : VHLO_Op<"my_op_v2", "0.11.0", "current"> {
let arguments = (ins
VHLO_AnyType:$operand,
VHLO_AnyAttr:$attr // New attribute added to StableHLO in 0.11.0
);
let results = (outs VHLO_AnyType:$result);
}
ภาษา StableHLO จะมี Ops เวอร์ชันล่าสุดเท่านั้น ระหว่างการแข่งขัน
ตัวอย่างเช่น ภาษา StableHLO ที่ v0.11.0 จะมีเฉพาะ StableHLO_MyOp
ที่มี operand
และ attr
ขณะที่ VHLO จับภาพของแต่ละเฟส
วิวัฒนาการ
ทำไม VHLO จึงมีประโยชน์
การมีภาษาที่มีเวอร์ชันทำให้เราสามารถกำหนดเป้าหมายของ ตัวเลือก StableHLO ซึ่งสรุปความเข้ากันได้แบบไปข้างหน้าและย้อนหลังใน Conversion ระหว่างการดำเนินการในภาษา VHLO
ความเข้ากันได้แบบส่งต่อ: ความเข้ากันได้แบบส่งต่อมาจากการแปลง เป็น VHLO และดาวน์เกรดการดำเนินการเป็นเวอร์ชันเป้าหมาย หากทุก op/type/attr ใน คุณสามารถดาวน์เกรดโปรแกรม VHLO เป็นเวอร์ชันเป้าหมายได้อย่างแน่นอน ดีซีเรียลลิสได้และแปลงเป็น StableHLO สำหรับผู้ใช้ที่ใช้เวอร์ชัน มากกว่าหรือเท่ากับเวอร์ชันเป้าหมาย เนื่องจาก VHLO มีสแนปชอตของ ในช่วงเวลานั้น
การแปลงแบบปรับลดรุ่นนี้จะล้มเหลวหากการดำเนินการหรือคุณลักษณะที่ไม่มีอยู่ใน ของตัวเลือกครั้งก่อน ซึ่งหมายความว่าความเข้ากันได้แบบส่งต่อ ถูกค้นพบในผู้สร้าง ไม่ใช่ที่รันไทม์
ความเข้ากันได้แบบย้อนหลัง: ความเข้ากันได้แบบย้อนหลังจะให้บริการโดยการอัปเกรด การดำเนินการ VHLO เป็นเวอร์ชันล่าสุด (หากจำเป็น) จากนั้นเปลี่ยนการดำเนินการกลับเป็น StableHLO โปรแกรม VHLO ทั้งหมดภายในหน้าต่างความเข้ากันได้สามารถอัปเกรดได้ ไปยัง StableHLO หมายความว่าผู้บริโภคแต่ละเวอร์ชันสามารถดีซีเรียลไลซ์เดียวกันได้ เพย์โหลด VHLO จากเวอร์ชันก่อนหน้า
ยิ่งไปกว่านั้น VHLO ยังอยู่เบื้องหลังการเรียงอันดับ ซึ่งหมายความว่า ML เฟรมเวิร์ก (ผู้ผลิต) เพียงต้องกำหนดเป้าหมายการดำเนินการ StableHLO และคอมไพเลอร์ แบ็กเอนด์ (ผู้บริโภค) จะรองรับเฉพาะเวอร์ชันล่าสุด ซึ่งเป็น ชุดการดำเนินการ StableHLO การแปลงไปยังและมาจาก VHLO จะได้รับการดูแลด้วยเครื่องจักร ที่เก็บรักษาไว้ในที่เก็บ StableHLO
เวอร์ชันของรูปแบบไบต์ MLIR
เพื่อรักษาความเข้ากันได้ไว้ต่อไป เวอร์ชัน StableHLO จะมีพร็อพเพอร์ตี้ เวอร์ชันรูปแบบไบต์ของ MLIR ที่เกี่ยวข้อง นอกจากนี้ยังมี StableHLO จะใช้รูปแบบ MLIR Bytecode Format เวอร์ชันล่าสุด เมื่อ มีการเพิ่มเวอร์ชัน MLIR Bytecode Format รุ่นถัดไปของ StableHLO จะ เพิ่มเวอร์ชันย่อยและอัปเดต Version.cpp เพื่อใช้ MLIR Bytecode Format เวอร์ชันล่าสุด
สำหรับรายละเอียดเกี่ยวกับรูปแบบ MLIR Bytecode Format และเหตุผลในการใช้รูปแบบนี้ใน StableHLO ดู bytecode.md