وضعیت StableHLO

هنگام بوت‌استرپ کردن StableHLO از MHLO، ما پیاده‌سازی MHLO را در بسیاری از موارد، از جمله prettyprinting، تأیید و استنتاج شکل، به ارث برده‌ایم. به لطف این، ما پوشش قابل توجهی از opset داریم، اما هنوز کارهای زیادی برای بررسی کامل بودن پیاده‌سازی‌های موجود و ارائه پیاده‌سازی‌های جدید در مواردی که وجود ندارند، وجود دارد.

این سند زنده برای توسعه‌دهندگان و کاربران است تا پیشرفت جنبه‌های مختلف آپست - مشخصات، تأیید، استنتاج نوع، چاپ زیبا، مفسر و غیره - را پیگیری کنند.

نحوه استفاده از آن

پیشرفت یک عملیات StableHLO، همانطور که در ردیف مربوطه ذکر شده است، در یک جنبه خاص، همانطور که در ستون مربوطه ذکر شده است، با استفاده از یکی از برچسب‌های ردیابی زیر ردیابی می‌شود.

  • برچسب‌های عمومی
    • بله : یک پیاده‌سازی جامع وجود دارد.
    • خیر : هیچ پیاده‌سازی وجود ندارد، اما کار بر روی آن بخشی از نقشه راه است. توجه داشته باشید که Verifier هرگز نمی‌تواند به عنوان "خیر" برچسب‌گذاری شود زیرا ODS از قبل برخی از تأییدها را پیاده‌سازی کرده است.
  • برچسب‌های سفارشی برای تأییدکننده و استنتاج نوع
    • بله : یک پیاده‌سازی وجود دارد، و با معانی StableHLO هماهنگ است.
    • بله* : یک پیاده‌سازی وجود دارد و با معانی XLA هماهنگ است. از آنجایی که معانی XLA اغلب به اندازه کافی مستندسازی نشده است، ما از hlo_verifier.cc و shape_inference.cc به عنوان مرجع استفاده می‌کنیم.
    • revisit : پیاده‌سازی وجود دارد، اما در دسته «بله» یا «بله*» قرار نمی‌گیرد - یا به این دلیل که هنوز آن را حسابرسی نکرده‌ایم، یا به این دلیل که مشکلاتی داریم و آنها را پیدا کرده‌ایم.
    • infeasible : هیچ پیاده‌سازی وجود ندارد، زیرا infeasible است. به عنوان مثال، به این دلیل که نوع نتیجه یک op را نمی‌توان از عملوندها و ویژگی‌های آن استنباط کرد.

وضعیت

پایدارHLO عملیات مشخصات تأیید استنتاج نوع چاپ زیبا مترجم
عضلات شکم بله بله بله بله بله
اضافه کردن بله بله بله بله بله
بعد از همه بله بله بله بله بله
همه_جمع_آوری بله دوباره مراجعه کردن خیر خیر بله
all_reduce بله دوباره مراجعه کردن بله خیر بله
همه_به_همه بله دوباره مراجعه کردن بله خیر بله
و بله بله بله بله بله
آتان2 بله بله بله بله بله
batch_norm_grad بله دوباره مراجعه کردن بله خیر دوباره مراجعه کردن
استنتاج هنجار_دسته‌ای بله دوباره مراجعه کردن بله خیر دوباره مراجعه کردن
batch_norm_training بله دوباره مراجعه کردن بله خیر دوباره مراجعه کردن
bitcast_convert بله بله نشدنی بله بله
پخش خیر بله* بله* بله دوباره مراجعه کردن
broadcast_in_dim بله بله نشدنی بله بله
مورد بله دوباره مراجعه کردن بله خیر بله
سی‌بی‌آر‌تی بله بله بله بله بله
سقف بله بله بله بله بله
چولسکی بله بله بله بله دوباره مراجعه کردن
گیره بله دوباره مراجعه کردن بله بله بله
پخش_جمعی بله دوباره مراجعه کردن بله خیر بله
collective_permute بله دوباره مراجعه کردن بله خیر بله
مقایسه بله بله بله بله بله
پیچیده بله بله بله بله بله
کامپوزیت بله بله نشدنی بله بله
به هم پیوند دادن بله بله بله بله بله
ثابت بله بله بله بله بله
تبدیل کردن بله بله نشدنی بله بله
کانولوشن بله بله نشدنی دوباره مراجعه کردن بله
کسینوس بله بله بله بله بله
تعداد صفرهای اصلی بله بله بله بله بله
ایجاد_توکن خیر بله* بله* بله دوباره مراجعه کردن
جمع متقابل المثنی خیر دوباره مراجعه کردن بله* خیر دوباره مراجعه کردن
تماس_سفارشی بله بله نشدنی بله بله
تقسیم کردن بله بله بله بله بله
نقطه خیر دوباره مراجعه کردن نشدنی بله دوباره مراجعه کردن
نقطه عمومی بله دوباره مراجعه کردن نشدنی خیر بله
پخش_پویا_در_نور بله بله نشدنی بله دوباره مراجعه کردن
پویا_محتوای بله بله نشدنی دوباره مراجعه کردن دوباره مراجعه کردن
پویا_جمع‌آوری بله بله نشدنی خیر دوباره مراجعه کردن
پویا_یوتا بله بله نشدنی بله دوباره مراجعه کردن
پد_پویا بله بله نشدنی بله دوباره مراجعه کردن
تغییر شکل پویا بله بله نشدنی بله دوباره مراجعه کردن
برش_پویا بله بله بله بله بله
برش_به_روزرسانی_پویا بله بله بله بله بله
اینسوم خیر دوباره مراجعه کردن خیر بله دوباره مراجعه کردن
نمایی بله بله بله بله بله
نمایی_منهای_یک بله بله بله بله بله
اف اف تی بله دوباره مراجعه کردن بله بله بله
کف بله بله بله بله بله
جمع کردن بله بله بله خیر بله
دریافت_ابعاد_اندازه بله بله بله بله بله
دریافت_تاپل_عنصر بله بله بله بله بله
اگر بله دوباره مراجعه کردن بله خیر بله
تصویر بله بله بله بله بله
تغذیه بله بله نشدنی خیر بله
یوتا بله بله نشدنی بله بله
is_finite بله بله بله بله بله
ورود به سیستم بله بله بله بله بله
log_plus_one بله بله بله بله بله
لجستیک بله بله بله بله بله
نقشه بله دوباره مراجعه کردن بله خیر بله
حداکثر بله بله بله بله بله
حداقل بله بله بله بله بله
ضرب کردن بله بله بله بله بله
نفی کردن بله بله بله بله بله
نه بله بله بله بله بله
مانع بهینه‌سازی بله بله بله بله بله
یا بله بله بله بله بله
از تغذیه بیشتر بله بله بله خیر بله
پد بله بله بله بله بله
شناسه پارتیشن بله بله بله بله بله
پاپ بله بله بله بله بله
قدرت بله بله بله بله بله
واقعی بله بله بله بله بله
برش_پویای_واقعی خیر دوباره مراجعه کردن خیر بله خیر
بازیابی بله بله نشدنی خیر بله
کاهش دادن بله دوباره مراجعه کردن بله دوباره مراجعه کردن بله
کاهش_دقت بله بله بله بله بله
reduce_scatter بله دوباره مراجعه کردن خیر خیر بله
reduce_window بله دوباره مراجعه کردن بله خیر بله
باقیمانده بله بله بله بله بله
replica_id بله بله بله بله بله
تغییر شکل دادن بله بله نشدنی بله بله
بازگشت خیر دوباره مراجعه کردن نشدنی بله بله
معکوس بله بله بله بله بله
آرنگ بله بله بله بله دوباره مراجعه کردن
مولد بیت rng بله دوباره مراجعه کردن نشدنی بله دوباره مراجعه کردن
round_nearest_afz بله بله بله بله بله
گرد_نزدیکترین_حتی بله بله بله بله بله
آر اس کیو آر تی بله بله بله بله بله
پراکنده بله دوباره مراجعه کردن بله خیر بله
انتخاب کنید بله بله بله بله بله
انتخاب_و_پراکنده‌سازی بله دوباره مراجعه کردن بله خیر بله
ارسال بله بله بله خیر بله
اندازه_بعد_تنظیم خیر بله* بله* بله خیر
شیفت_چپ بله بله بله بله بله
شیفت_به_راست_حسابی بله بله بله بله بله
shift_right_logical بله بله بله بله بله
علامت بله بله بله بله بله
سینوس بله بله بله بله بله
برش بله بله بله خیر بله
مرتب سازی بله بله بله خیر بله
مربع بله بله بله بله بله
تفریق کردن بله بله بله بله بله
برنزه شدن بله بله بله بله بله
تان بله بله بله بله بله
torch_index_select خیر دوباره مراجعه کردن خیر خیر دوباره مراجعه کردن
جابجایی بله بله بله بله بله
حل مثلثی بله دوباره مراجعه کردن بله خیر دوباره مراجعه کردن
چندتایی بله بله بله بله بله
unary_einsum خیر دوباره مراجعه کردن خیر بله دوباره مراجعه کردن
uniform_dequantize بله بله بله بله بله
uniform_quantize بله دوباره مراجعه کردن نشدنی بله بله
در حالی که بله دوباره مراجعه کردن بله دوباره مراجعه کردن بله
خُر بله بله بله بله بله

استنتاج نوع برای عملیات کوانتیزه

ستون 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 ، reverse ، scatter ، select_and_scatter ، send ، slice ، sort ، transpose ، tuple ، uniform_dequantized ، while .