ในตอนเปิดเครื่อง StableHLO จาก MHLO เราได้รับช่วงนำสิ่งต่างๆ มาปรับใช้ โดย MHLO ซึ่งรวมถึงการพิมพ์การจัดรูปแบบ การตรวจสอบ และการอนุมานรูปร่าง ด้วยเหตุนี้ เราจึงมีทางเลือกให้ครอบคลุมทางเลือกต่างๆ ได้อย่างมีนัยสำคัญ แต่ยังมีอีกหลายสิ่งที่ต้องดำเนินการเพื่อตรวจสอบความครบถ้วนสมบูรณ์ของการติดตั้งใช้งาน และนำเสนอการติดตั้งใช้งานใหม่ๆ ในกรณีที่ไม่มี
เอกสารที่เผยแพร่นี้จัดทำขึ้นสำหรับนักพัฒนาซอฟต์แวร์และผู้ใช้เพื่อติดตามความคืบหน้าในด้านต่างๆ ของข้อโต้แย้ง เช่น ข้อกำหนด การยืนยัน การอนุมานประเภท การพิมพ์ด้วยเทคนิค อินเทอร์พรีเตอร์ ฯลฯ
วิธีการใช้งาน
ความคืบหน้าของการดำเนินการ StableHLO ตามที่ระบุไว้ในแถวที่เกี่ยวข้องในด้านที่เฉพาะเจาะจง ดังที่กล่าวถึงในคอลัมน์ที่เกี่ยวข้อง จะได้รับการติดตามโดยใช้ป้ายกำกับการติดตามรายการใดรายการหนึ่งต่อไปนี้
- ป้ายกำกับทั่วไป
- yes: มีการติดตั้งใช้งานที่ครอบคลุม
- no: ไม่มีการติดตั้งใช้งาน แต่การแก้ไขดังกล่าวเป็นส่วนหนึ่งของแผนกลยุทธ์ โปรดทราบว่าผู้ตรวจสอบจะติดป้ายกำกับ "ไม่" เป็น "ไม่" ไม่ได้ เนื่องจาก ODS ดำเนินการยืนยันบางอย่างอยู่แล้ว
- ป้ายกำกับที่กำหนดเองสำหรับผู้ตรวจสอบและการอนุมานประเภท
- yes: มีการใช้และสอดคล้องกับความหมายของ StableHLO
- yes*: มีการติดตั้งใช้งานและสอดคล้องกับความหมายของ XLA เนื่องจากอรรถศาสตร์ XLA มักไม่ได้รับการบันทึกข้อมูลไว้ เราจึงใช้ hlo_verifier.cc และ shape_inference.cc เป็นข้อมูลอ้างอิง
- revisit คือ มีการนำไปใช้แต่ไม่อยู่ภายใต้ "yes" หรือ "yes*" ซึ่งอาจเป็นเพราะเรายังไม่ได้ตรวจสอบหรือพบปัญหา
- ทำไม่ได้: ไม่มีการติดตั้งใช้งานเพราะทำไม่ได้ ตัวอย่างเช่น เนื่องจากประเภทผลลัพธ์ของ Op จะอนุมานจากตัวถูกดำเนินการและแอตทริบิวต์ไม่ได้
สถานะ
| StableHLO Op | ข้อมูลจำเพาะ | การยืนยัน | การอนุมานประเภท | การพิมพ์อย่างสวยงาม | ล่าม |
|---|---|---|---|---|---|
| abs | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| เพิ่ม | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| after_all | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| all_gather | ใช่ | ทบทวน | ไม่ | ไม่ | ใช่ |
| all_reduce | ใช่ | ทบทวน | ใช่ | ไม่ | ใช่ |
| all_to_all | ใช่ | ทบทวน | ใช่ | ไม่ | ใช่ |
| และ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| atan2 | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| batch_norm_grad | ใช่ | ทบทวน | ใช่ | ไม่ | ทบทวน |
| batch_norm_inference | ใช่ | ทบทวน | ใช่ | ไม่ | ทบทวน |
| batch_norm_training | ใช่ | ทบทวน | ใช่ | ไม่ | ทบทวน |
| bitcast_convert | ใช่ | ใช่ | ดำเนินการไม่ได้ | ใช่ | ใช่ |
| ประกาศ | ไม่ | ใช่* | ใช่* | ใช่ | ทบทวน |
| broadcast_in_dim | ใช่ | ใช่ | ดำเนินการไม่ได้ | ใช่ | ใช่ |
| เคส | ใช่ | ทบทวน | ใช่ | ไม่ | ใช่ |
| Cbrt | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| Ceil | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| Cholesky | ใช่ | ใช่ | ใช่ | ใช่ | ทบทวน |
| แคลมป์ | ใช่ | ทบทวน | ใช่ | ใช่ | ใช่ |
| collective_broadcast | ใช่ | ทบทวน | ใช่ | ไม่ | ใช่ |
| collective_permute | ใช่ | ทบทวน | ใช่ | ไม่ | ใช่ |
| เปรียบเทียบ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ซับซ้อน | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| การผสม | ใช่ | ใช่ | ดำเนินการไม่ได้ | ใช่ | ใช่ |
| concatenate | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ค่าคงที่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ทำให้เกิด Conversion | ใช่ | ใช่ | ดำเนินการไม่ได้ | ใช่ | ใช่ |
| Convolution | ใช่ | ใช่ | ดำเนินการไม่ได้ | ทบทวน | ใช่ |
| โคไซน์ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| count_leading_zeros | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| create_token | ไม่ | ใช่* | ใช่* | ใช่ | ทบทวน |
| ผลรวมของข้อมูลจำลอง | ไม่ | ทบทวน | ใช่* | ไม่ | ทบทวน |
| custom_call | ใช่ | ใช่ | ดำเนินการไม่ได้ | ใช่ | ใช่ |
| หาร | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| จุด | ไม่ | ทบทวน | ดำเนินการไม่ได้ | ใช่ | ทบทวน |
| dot_general | ใช่ | ทบทวน | ดำเนินการไม่ได้ | ไม่ | ใช่ |
| dynamic_broadcast_in_dim | ใช่ | ใช่ | ดำเนินการไม่ได้ | ใช่ | ทบทวน |
| dynamic_conv | ใช่ | ใช่ | ดำเนินการไม่ได้ | ทบทวน | ทบทวน |
| dynamic_gather | ใช่ | ใช่ | ดำเนินการไม่ได้ | ไม่ | ทบทวน |
| dynamic_iota | ใช่ | ใช่ | ดำเนินการไม่ได้ | ใช่ | ทบทวน |
| dynamic_pad | ใช่ | ใช่ | ดำเนินการไม่ได้ | ใช่ | ทบทวน |
| dynamic_reshape | ใช่ | ใช่ | ดำเนินการไม่ได้ | ใช่ | ทบทวน |
| dynamic_slice | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| dynamic_update_slice | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| einsum | ไม่ | ทบทวน | ไม่ | ใช่ | ทบทวน |
| เลขชี้กำลัง | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| exponential_minus_one | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| fft | ใช่ | ทบทวน | ใช่ | ใช่ | ไม่ |
| ชั้น | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| รวบรวม | ใช่ | ใช่ | ใช่ | ไม่ | ใช่ |
| get_dimension_size | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| get_tuple_element | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| if | ใช่ | ทบทวน | ใช่ | ไม่ | ใช่ |
| ภาพ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ในฟีด | ใช่ | ใช่ | ดำเนินการไม่ได้ | ไม่ | ใช่ |
| Iota | ใช่ | ใช่ | ดำเนินการไม่ได้ | ใช่ | ใช่ |
| is_finite | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| log | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| log_plus_one | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| โลจิสติกส์ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| map | ใช่ | ทบทวน | ใช่ | ไม่ | ใช่ |
| สูงสุด | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ขั้นต่ำ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| คูณ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| สลับเครื่องหมาย | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ไม่ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| optimization_barrier | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| หรือ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ฟีดนอก | ใช่ | ใช่ | ใช่ | ไม่ | ใช่ |
| Pad | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| partition_id | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| Popcnt | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| พาวเวอร์ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| เรียล | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| real_dynamic_slice | ไม่ | ทบทวน | ไม่ | ใช่ | ไม่ |
| รับ | ใช่ | ใช่ | ดำเนินการไม่ได้ | ไม่ | ใช่ |
| ลด | ใช่ | ทบทวน | ใช่ | ทบทวน | ใช่ |
| reduce_precision | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| reduce_scatter | ใช่ | ทบทวน | ไม่ | ไม่ | ใช่ |
| reduce_window | ใช่ | ทบทวน | ใช่ | ไม่ | ใช่ |
| เศษ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| replica_id | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ปรับรูปร่าง | ใช่ | ใช่ | ดำเนินการไม่ได้ | ใช่ | ใช่ |
| return | ไม่ | ทบทวน | ดำเนินการไม่ได้ | ใช่ | ใช่ |
| ย้อนกลับ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| คำตอบ | ใช่ | ใช่ | ใช่ | ใช่ | ทบทวน |
| rng_bit_generator | ใช่ | ทบทวน | ดำเนินการไม่ได้ | ใช่ | ทบทวน |
| round_nearest_afz | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| round_nearest_even | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| RSQrt | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| scatter | ใช่ | ทบทวน | ใช่ | ไม่ | ใช่ |
| เลือก | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| select_and_scatter | ใช่ | ทบทวน | ใช่ | ไม่ | ใช่ |
| ส่ง | ใช่ | ใช่ | ใช่ | ไม่ | ใช่ |
| set_dimension_size | ไม่ | ใช่* | ใช่* | ใช่ | ไม่ |
| shift_left | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| shift_right_arithmetic | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| shift_right_logical | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| เครื่องหมาย | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ไซน์ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ส่วนแบ่ง | ใช่ | ใช่ | ใช่ | ไม่ | ใช่ |
| จัดเรียง | ใช่ | ใช่ | ใช่ | ไม่ | ใช่ |
| sqrt | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ลบ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| แทนห์ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| torch_index_select | ไม่ | ทบทวน | ไม่ | ไม่ | ทบทวน |
| สลับตำแหน่ง | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| triangular_solve | ใช่ | ทบทวน | ใช่ | ไม่ | ทบทวน |
| tuple | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| unary_einsum | ไม่ | ทบทวน | ไม่ | ใช่ | ทบทวน |
| uniform_dequantize | ใช่ | ใช่ | ใช่ | ใช่ | ไม่ |
| uniform_quantize | ใช่ | ทบทวน | ดำเนินการไม่ได้ | ใช่ | ไม่ |
| ฟังขณะ | ใช่ | ทบทวน | ใช่ | ทบทวน | ใช่ |
| Xor | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
การอนุมานประเภทสำหรับการดำเนินการที่วัดปริมาณ
คอลัมน์ Type Inference จากตารางด้านบนมีจุดประสงค์เพื่อเน้นการดำเนินการที่ไม่ใช่จำนวน สำหรับการดำเนินการเชิงปริมาณส่วนใหญ่ เป็นไปไม่ได้ที่จะอนุมานประเภทผลลัพธ์เนื่องจากพารามิเตอร์การวัดปริมาณของประเภทผลลัพธ์อาจแตกต่างจากตัวถูกดำเนินการ ยกเว้นกรณีที่ตัวถูกดำเนินการและประเภทผลลัพธ์ต้องตรงกัน หรือ op/2/2/1/2/9/2/ , , , , , , , case, collective_permute,
compare, concatenate, constant, dynamic_slice,
dynamic_update_slice, gather, get_tuple_element, if, infeed,is_finite, all_gatherall_to_allmapoptimization_barrieroutfeedpadrecvreducereduce_scatterreduce_windowreversescatterselect_and_scattersendslicesorttransposetupleuniform_dequantizedwhile