StableHLO durumu

StableHLO'yu MHLO'dan önyüklerken; hoş yazdırma, doğrulama ve şekil çıkarımı gibi pek çok şeyin MHLO uygulamasını devraldık. Bu sayede, işletim sistemini zaten kapsamlı bir şekilde ele alıyoruz, ancak mevcut uygulamaları bütünlük açısından gözden geçirmek ve mevcut uygulamaları olmayan yeni uygulamalar sunmak için hâlâ yapılacak çok şey var.

Bu canlı belge, geliştiricilerin ve kullanıcıların işlemin çeşitli yönleriyle ilgili ilerleme durumunu izlemesi (spesifikasyon, doğrulama, tür çıkarımı, düzgün yazdırma, çevirmen vb.) içindir.

Kullanım şekli

Bir StableHLO işleminin ilerlemesi, ilgili satırda belirtildiği gibi, ilgili sütunda belirtildiği gibi, belirli bir açıdan aşağıdaki izleme etiketlerinden biri kullanılarak izlenir.

  • Genel etiketler
    • yes: Kapsamlı bir uygulama mevcuttur.
    • no: herhangi bir uygulama yoktur ancak bunun üzerinde çalışmak yol haritasının bir parçasıdır. ODS'nin zaten birtakım doğrulamalar uyguladığından Doğrulayıcı'nın hiçbir zaman "hayır" olarak etiketlenemediğini unutmayın.
  • Doğrulayıcı ve Tür Çıkarımı için özelleştirilmiş etiketler
    • yes: Bir uygulama mevcuttur ve StableHLO semantiği ile uyumludur.
    • yes*: Bir uygulama mevcuttur ve XLA semantiği ile senkronize edilmiştir. XLA semantiği genellikle yeterince belgelenmediğinden, referans olarak hlo_verifier.cc ve shape_inference.cc öğelerini kullanırız.
    • revisit: Bir uygulama vardır, ancak "evet" veya "evet*" kapsamına girmiyor. Bunu henüz denetlemediğimiz ya da sorunlar tespit ettiğimiz için
    • infeasible (uygulanabilir): Uygulanabilir olmadığı için hiçbir uygulama da söz konusu değildir. Örneğin, bir işlemin sonuç türü, işlem görenlerinden ve özelliklerinden tahmin edilemez.

Durum

StableHLO Op Spesifikasyon Doğrulama Tür Çıkarımı Kaliteli Baskı Çevirmen
abs evet evet evet evet evet
add evet evet evet evet evet
after_all evet evet evet evet evet
all_gather evet yeniden ziyaret et no no evet
all_reduce evet yeniden ziyaret et evet no evet
all_to_all evet yeniden ziyaret et evet no evet
ve evet evet evet evet evet
atan2 evet evet evet evet evet
batch_norm_grad evet yeniden ziyaret et evet no yeniden ziyaret et
batch_norm_inference evet yeniden ziyaret et evet no yeniden ziyaret et
batch_norm_training evet yeniden ziyaret et evet no yeniden ziyaret et
bitcast_convert evet evet uygulanabilir değil evet evet
duyuru no evet* evet* evet yeniden ziyaret et
broadcast_in_dim evet evet uygulanabilir değil evet evet
kılıf evet yeniden ziyaret et evet no evet
crtb evet evet evet evet evet
ceil evet evet evet evet evet
Cholesky evet evet evet evet yeniden ziyaret et
kıskaç evet yeniden ziyaret et evet evet evet
collective_broadcast evet yeniden ziyaret et evet no evet
collective_permute evet yeniden ziyaret et evet no evet
compare evet evet evet evet evet
karmaşık evet evet evet evet evet
birleşik evet evet uygulanabilir değil evet evet
concatenate evet evet evet evet evet
sabit evet evet evet evet evet
Dönüşüm gerçekleştirme evet evet uygulanabilir değil evet evet
konvolüsyon evet evet uygulanabilir değil yeniden ziyaret et evet
kosinüs evet evet evet evet evet
count_leading_zeros evet evet evet evet evet
create_token no evet* evet* evet yeniden ziyaret et
çapraz-replika-toplam no yeniden ziyaret et evet* no yeniden ziyaret et
custom_call evet evet uygulanabilir değil evet evet
bölme evet evet evet evet evet
nokta no yeniden ziyaret et uygulanabilir değil evet yeniden ziyaret et
dot_general evet yeniden ziyaret et uygulanabilir değil no evet
dynamic_broadcast_in_dim evet evet uygulanabilir değil evet yeniden ziyaret et
dynamic_conv evet evet uygulanabilir değil yeniden ziyaret et yeniden ziyaret et
dynamic_gather evet evet uygulanabilir değil no yeniden ziyaret et
dynamic_iota evet evet uygulanabilir değil evet yeniden ziyaret et
dynamic_pad evet evet uygulanabilir değil evet yeniden ziyaret et
dynamic_reshape evet evet uygulanabilir değil evet yeniden ziyaret et
dynamic_slice evet evet evet evet evet
dynamic_update_slice evet evet evet evet evet
einsum no yeniden ziyaret et no evet yeniden ziyaret et
üstel evet evet evet evet evet
exponential_minus_one evet evet evet evet evet
fff evet yeniden ziyaret et evet evet no
floor evet evet evet evet evet
toplamak evet evet evet no evet
get_dimension_size evet evet evet evet evet
get_tuple_element evet evet evet evet evet
if evet yeniden ziyaret et evet no evet
hayal etmek evet evet evet evet evet
feed içi evet evet uygulanabilir değil no evet
Iota evet evet uygulanabilir değil evet evet
is_finite evet evet evet evet evet
log evet evet evet evet evet
log_plus_one evet evet evet evet evet
lojistik evet evet evet evet evet
harita evet yeniden ziyaret et evet no evet
maksimum evet evet evet evet evet
minimum evet evet evet evet evet
Çarpma evet evet evet evet evet
işareti değiştir evet evet evet evet evet
değil evet evet evet evet evet
optimization_barrier evet evet evet evet evet
veya evet evet evet evet evet
feed dışı evet evet evet no evet
düzlem evet evet evet evet evet
partition_id evet evet evet evet evet
Popcnt evet evet evet evet evet
güç evet evet evet evet evet
gerçek evet evet evet evet evet
real_dynamic_slice no yeniden ziyaret et no evet no
geri evet evet uygulanabilir değil no evet
reduce evet yeniden ziyaret et evet yeniden ziyaret et evet
reduce_precision evet evet evet evet evet
reduce_scatter evet yeniden ziyaret et no no evet
reduce_window evet yeniden ziyaret et evet no evet
kalan evet evet evet evet evet
replica_id evet evet evet evet evet
şekillendirmek evet evet uygulanabilir değil evet evet
return no yeniden ziyaret et uygulanabilir değil evet evet
geri al evet evet evet evet evet
rg evet evet evet evet yeniden ziyaret et
rng_bit_generator evet yeniden ziyaret et uygulanabilir değil evet yeniden ziyaret et
round_nearest_afz evet evet evet evet evet
round_nearest_even evet evet evet evet evet
rsqrt evet evet evet evet evet
scatter evet yeniden ziyaret et evet no evet
seç evet evet evet evet evet
select_and_scatter evet yeniden ziyaret et evet no evet
gönder evet evet evet no evet
set_dimension_size no evet* evet* evet no
shift_left evet evet evet evet evet
shift_right_arithmetic evet evet evet evet evet
shift_right_logical evet evet evet evet evet
işaret evet evet evet evet evet
sinüs evet evet evet evet evet
dilim evet evet evet no evet
sıralama evet evet evet no evet
sqrt evet evet evet evet evet
çıkar evet evet evet evet evet
Tanh evet evet evet evet evet
torch_index_select no yeniden ziyaret et no no yeniden ziyaret et
ters çevir evet evet evet evet evet
triangular_solve evet yeniden ziyaret et evet no yeniden ziyaret et
tuple evet evet evet evet evet
unary_einsum no yeniden ziyaret et no evet yeniden ziyaret et
uniform_dequantize evet evet evet evet no
uniform_quantize evet yeniden ziyaret et uygulanabilir değil evet no
süre evet yeniden ziyaret et evet yeniden ziyaret et evet
Xor evet evet evet evet evet

Ölçülü işlemler için çıkarımı yazın

Yukarıdaki tabloda yer alan Type Inference sütununun amacı, ölçülmemiş işlemlere odaklanmaktır. Sonuç türlerinin niceleme parametreleri, işlenenlerin parametrelerinden farklı olabileceğinden, ölçülmüş işlemlerin çoğunda sonuç türünü tahmin etmek uygun değildir. {2,/ {2, / } {2, / } {2, / } {2, / } {2, / } {2, {2, / } {2, {2, {2, {2, / {2, {2,/ } {2, is_finite {2, {2, {2, is_finite {2, is_finite map {2, is_finite {2, map {2, map {2, map {2, map {2, is_finite map {2, , mapall_gatherall_to_allcasecollective_permutecompareconcatenateconstantdynamic_slicedynamic_update_slicegatherget_tuple_elementifinfeedoptimization_barrieroutfeedpadrecvreducereduce_scatterreduce_windowreversescatterselect_and_scattersendslicesorttransposetupleuniform_dequantizedwhile