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, ,
map
all_gather
all_to_all
case
collective_permute
compare
concatenate
constant
dynamic_slice
dynamic_update_slice
gather
get_tuple_element
if
infeed
optimization_barrier
outfeed
pad
recv
reduce
reduce_scatter
reduce_window
reverse
scatter
select_and_scatter
send
slice
sort
transpose
tuple
uniform_dequantized
while