ในตอนเปิดเครื่อง 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_gather
all_to_all
map
optimization_barrier
outfeed
pad
recv
reduce
reduce_scatter
reduce_window
reverse
scatter
select_and_scatter
send
slice
sort
transpose
tuple
uniform_dequantized
while