هنگام راهاندازی StableHLO از MHLO، پیادهسازی بسیاری از موارد از جمله چاپ زیبایی، تأیید و استنتاج شکل را از MHLO به ارث بردهایم. به لطف آن، ما در حال حاضر پوشش قابل توجهی از opset داریم، اما هنوز کارهای زیادی برای بررسی کامل پیادهسازیهای موجود و ارائه پیادهسازیهای جدید در جایی که وجود ندارد، وجود دارد.
این سند زنده برای توسعه دهندگان و کاربران است تا پیشرفت را در جنبه های مختلف opset - مشخصات، تأیید، استنتاج نوع، چاپ زیبا، مفسر و غیره دنبال کنند.
نحوه استفاده از آن
پیشرفت یک عملیات StableHLO، همانطور که در ردیف مربوطه ذکر شد، در یک جنبه خاص، همانطور که در ستون مربوطه ذکر شد، با استفاده از یکی از برچسب های ردیابی زیر ردیابی می شود.
- برچسب های عمومی
- بله : یک پیاده سازی جامع وجود دارد.
- خیر : هیچ اجرایی وجود ندارد، اما کار بر روی آن بخشی از نقشه راه است. توجه داشته باشید که Verifier هرگز نمی تواند به عنوان "نه" برچسب گذاری شود زیرا ODS قبلاً برخی از تأیید را اجرا می کند.
- برچسبهای سفارشیشده برای تأییدکننده و استنتاج نوع
- بله : یک پیاده سازی وجود دارد و با معنای StableHLO همگام است.
- بله* : یک پیاده سازی وجود دارد و با معنای XLA همگام است. از آنجایی که معنای XLA اغلب مستند نیست، ما از hlo_verifier.cc و shape_inference.cc به عنوان مرجع استفاده می کنیم.
- revisit : یک پیاده سازی وجود دارد، اما در "بله" یا "بله*" قرار نمی گیرد - یا به این دلیل که هنوز آن را بررسی نکرده ایم، یا به این دلیل که مشکلاتی را داریم و پیدا کرده ایم.
- غیر قابل اجرا : هیچ اجرایی وجود ندارد، زیرا غیر ممکن است. به عنوان مثال، به این دلیل که نوع نتیجه یک op را نمی توان از عملوندها و ویژگی های آن استنتاج کرد.
وضعیت
StableHLO Op | مشخصات | تایید | نوع استنتاج | چاپ زیبا | مترجم |
---|---|---|---|---|---|
عضلات شکم | آره | آره | آره | آره | آره |
اضافه کردن | آره | آره | آره | آره | آره |
گذشته از همه اینها | آره | آره | آره | آره | آره |
همه_جمع آوری | آره | بازدید مجدد | نه | نه | آره |
all_reduce | آره | بازدید مجدد | آره | نه | آره |
all_to_all | آره | بازدید مجدد | آره | نه | آره |
و | آره | آره | آره | آره | آره |
آتان 2 | آره | آره | آره | آره | آره |
batch_norm_grad | آره | بازدید مجدد | آره | نه | بازدید مجدد |
دسته_هنجار_استنتاج | آره | بازدید مجدد | آره | نه | بازدید مجدد |
آموزش هنجارهای دسته ای | آره | بازدید مجدد | آره | نه | بازدید مجدد |
bitcast_convert | آره | آره | غیر قابل اجرا | آره | آره |
پخش | نه | آره* | آره* | آره | بازدید مجدد |
broadcast_in_dim | آره | آره | غیر قابل اجرا | آره | آره |
مورد | آره | بازدید مجدد | آره | نه | آره |
cbrt | آره | آره | آره | آره | آره |
سقف | آره | آره | آره | آره | آره |
کلسکی | آره | آره | آره | آره | بازدید مجدد |
گیره | آره | بازدید مجدد | آره | آره | آره |
پخش_جمعی | آره | بازدید مجدد | آره | نه | آره |
collective_permute | آره | بازدید مجدد | آره | نه | آره |
مقایسه کنید | آره | آره | آره | آره | آره |
مجتمع | آره | آره | آره | آره | آره |
کامپوزیت | آره | آره | غیر قابل اجرا | آره | آره |
به هم پیوستن | آره | آره | آره | آره | آره |
ثابت | آره | آره | آره | آره | آره |
تبدیل | آره | آره | غیر قابل اجرا | آره | آره |
پیچیدگی | آره | آره | غیر قابل اجرا | بازدید مجدد | آره |
کسینوس | آره | آره | آره | آره | آره |
count_leading_صفرها | آره | آره | آره | آره | آره |
ایجاد_توکن | نه | آره* | آره* | آره | بازدید مجدد |
جمع ماکت متقابل | نه | بازدید مجدد | آره* | نه | بازدید مجدد |
سفارشی_تماس | آره | آره | غیر قابل اجرا | آره | آره |
تقسیم کنید | آره | آره | آره | آره | آره |
نقطه | نه | بازدید مجدد | غیر قابل اجرا | آره | بازدید مجدد |
dot_general | آره | بازدید مجدد | غیر قابل اجرا | نه | آره |
dynamic_broadcast_in_dim | آره | آره | غیر قابل اجرا | آره | بازدید مجدد |
dynamic_conv | آره | آره | غیر قابل اجرا | بازدید مجدد | بازدید مجدد |
پویا_جمع آوری | آره | آره | غیر قابل اجرا | نه | بازدید مجدد |
dynamic_iota | آره | آره | غیر قابل اجرا | آره | بازدید مجدد |
dynamic_pad | آره | آره | غیر قابل اجرا | آره | بازدید مجدد |
dynamic_reshpe | آره | آره | غیر قابل اجرا | آره | بازدید مجدد |
dynamic_slice | آره | آره | آره | آره | آره |
dynamic_update_slice | آره | آره | آره | آره | آره |
einsum | نه | بازدید مجدد | نه | آره | بازدید مجدد |
نمایی | آره | آره | آره | آره | آره |
نمایی_منهای_یک | آره | آره | آره | آره | آره |
fft | آره | بازدید مجدد | آره | آره | نه |
کف | آره | آره | آره | آره | آره |
جمع آوری | آره | آره | آره | نه | آره |
get_dimension_size | آره | آره | آره | آره | آره |
get_tuple_element | آره | آره | آره | آره | آره |
اگر | آره | بازدید مجدد | آره | نه | آره |
تصویر | آره | آره | آره | آره | آره |
تغذیه | آره | آره | غیر قابل اجرا | نه | آره |
یوتا | آره | آره | غیر قابل اجرا | آره | آره |
متناهی است | آره | آره | آره | آره | آره |
ورود به سیستم | آره | آره | آره | آره | آره |
log_plus_one | آره | آره | آره | آره | آره |
لجستیکی | آره | آره | آره | آره | آره |
نقشه | آره | بازدید مجدد | آره | نه | آره |
بیشترین | آره | آره | آره | آره | آره |
کمترین | آره | آره | آره | آره | آره |
تکثیر کردن | آره | آره | آره | آره | آره |
نفی کردن | آره | آره | آره | آره | آره |
نه | آره | آره | آره | آره | آره |
بهینه سازی_مانع | آره | آره | آره | آره | آره |
یا | آره | آره | آره | آره | آره |
غذا خوردن | آره | آره | آره | نه | آره |
پد | آره | آره | آره | آره | آره |
partition_id | آره | آره | آره | آره | آره |
popcnt | آره | آره | آره | آره | آره |
قدرت | آره | آره | آره | آره | آره |
واقعی | آره | آره | آره | آره | آره |
real_dynamic_slice | نه | بازدید مجدد | نه | آره | نه |
recv | آره | آره | غیر قابل اجرا | نه | آره |
كاهش دادن | آره | بازدید مجدد | آره | بازدید مجدد | آره |
کاهش_دقت | آره | آره | آره | آره | آره |
کاهش_پراکندگی | آره | بازدید مجدد | نه | نه | آره |
کاهش_پنجره | آره | بازدید مجدد | آره | نه | آره |
باقی مانده | آره | آره | آره | آره | آره |
replica_id | آره | آره | آره | آره | آره |
تغییر شکل دادن | آره | آره | غیر قابل اجرا | آره | آره |
برگشت | نه | بازدید مجدد | غیر قابل اجرا | آره | آره |
معکوس | آره | آره | آره | آره | آره |
rng | آره | آره | آره | آره | بازدید مجدد |
rng_bit_generator | آره | بازدید مجدد | غیر قابل اجرا | آره | بازدید مجدد |
round_nearest_afz | آره | آره | آره | آره | آره |
دور_نزدیکترین_حتی | آره | آره | آره | آره | آره |
rsqrt | آره | آره | آره | آره | آره |
پراکنده کردن | آره | بازدید مجدد | آره | نه | آره |
انتخاب کنید | آره | آره | آره | آره | آره |
select_and_scatter | آره | بازدید مجدد | آره | نه | آره |
ارسال | آره | آره | آره | نه | آره |
مجموعه_بعد_اندازه | نه | آره* | آره* | آره | نه |
shift_left | آره | آره | آره | آره | آره |
shift_right_arithmetic | آره | آره | آره | آره | آره |
shift_right_logical | آره | آره | آره | آره | آره |
امضا کردن | آره | آره | آره | آره | آره |
سینوسی | آره | آره | آره | آره | آره |
تکه | آره | آره | آره | نه | آره |
مرتب سازی | آره | آره | آره | نه | آره |
sqrt | آره | آره | آره | آره | آره |
تفریق کردن | آره | آره | آره | آره | آره |
برنزه | آره | آره | آره | آره | آره |
tanh | آره | آره | آره | آره | آره |
torch_index_select | نه | بازدید مجدد | نه | نه | بازدید مجدد |
جابجا کردن | آره | آره | آره | آره | آره |
مثلثی_حل | آره | بازدید مجدد | آره | نه | بازدید مجدد |
چندتایی | آره | آره | آره | آره | آره |
unary_einsum | نه | بازدید مجدد | نه | آره | بازدید مجدد |
uniform_dequantize | آره | آره | آره | آره | آره |
uniform_quantize | آره | بازدید مجدد | غیر قابل اجرا | آره | آره |
در حالی که | آره | بازدید مجدد | آره | بازدید مجدد | آره |
xor | آره | آره | آره | آره | آره |
نوع استنتاج برای عملیات کوانتیزه شده
ستون Type Inference
از جدول بالا برای تمرکز بر عملیات غیر کوانتیزه در نظر گرفته شده است. برای اکثر عملیاتهای کوانتیشده، استنتاج نوع نتیجه امکانپذیر نیست، زیرا پارامترهای کوانتیزاسیون انواع نتیجه ممکن است با پارامترهای عملوند متفاوت باشد. به استثنای موارد معدودی که نوع عملوند و نتیجه باید به طور یکسان مطابقت داشته باشند، یا عملیات دارای محدودیتهایی مفید برای استنتاج نوع نتیجه است، این عملیات در زیر فهرست شده است: all_gather
، all_to_all
، case
، collective_permute
، compare
، concatenate
، constant
، dynamic_slice
، dynamic_update_slice
, gather
, get_tuple_element
, if
, infeed
, is_finite
, map
, optimization_barrier
, outfeed
, pad
, recv
, reduce
, reduce_scatter
, reduce_window
tuple
reverse
, scatter
, select_and_scatter
, send
, slice
while
, transpose
uniform_dequantized
sort
.