وضعیت StableHLO

هنگام راه‌اندازی 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 .