สถานะ StableHLO

ในตอนเปิดเครื่อง 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