Stato StableHLO

Durante il bootstrap di StableHLO da MHLO, abbiamo ereditato l'implementazione di MHLO di molte cose, tra cui la stampa del grazia, la verifica e l'inferenza della forma. Grazie a ciò, abbiamo già una copertura significativa dell'opset, ma c'è ancora molto da fare per esaminare la completezza delle implementazioni esistenti e fornire nuove implementazioni dove non ne esistono.

Questo documento in tempo reale è destinato a sviluppatori e utenti per tenere traccia dei progressi relativi a vari aspetti dell'opset: specifica, verifica, inferenza del tipo, stampa, interprete e così via.

Modalità d'uso

L'avanzamento di un'operazione StableHLO, come indicato nella riga corrispondente, su un determinato aspetto, come indicato nella colonna corrispondente, viene monitorato utilizzando una delle seguenti etichette di monitoraggio.

  • Etichette generiche
    • yes: l'implementazione è completa.
    • no: non è prevista alcuna implementazione, ma lavorarci fa parte della tabella di marcia. Tieni presente che Verifier non può mai essere etichettata come "no" perché l'ODS implementa già alcune verifiche.
  • Etichette personalizzate per verificatore e inferenza dei tipi
    • yes: esiste un'implementazione ed è sincronizzata con la semantica StableHLO.
    • yes*: esiste un'implementazione ed è sincronizzata con la semantica dell'XLA. Poiché la semantica XLA è spesso sottodocumentata, usiamo hlo_verifier.cc e shape_inference.cc come riferimento.
    • revisit: esiste un'implementazione, ma non rientra tra "sì" o "sì*", perché non l'abbiamo ancora verificata o perché sono stati rilevati problemi.
    • infeasible (non fattibile): non c'è alcuna implementazione perché è impossibile. Ad esempio, poiché il tipo di risultato di un'operazione non può essere dedotto dai suoi operandi e attributi.

Stato

Op StableHLO Specifiche Verifica Tipo di inferenza Graziosa stampa Interprete
abs
add
after_all
all_gather rivedere no no
all_reduce rivedere no
all_to_all rivedere no
e
atan2
batch_norm_grad rivedere no rivedere
batch_norm_inference rivedere no rivedere
batch_norm_training rivedere no rivedere
bitcast_convert impossibile
annuncio no sì* sì* rivedere
broadcast_in_dim impossibile
richiesta rivedere no
CBRT
ceil
Cholesky rivedere
clampare rivedere
collective_permute rivedere no
compare
complesso
compute_reshape_shape no rivedere no no
concatenate
costante
effettuare una conversione impossibile
convoluzione impossibile rivedere no
coseno
count_leading_zeros
create_token no sì* sì* rivedere
somma di replica incrociata no rivedere sì* no rivedere
cstr_reshapable no rivedere no no
custom_call impossibile
divisione
punto no rivedere impossibile rivedere
dot_general rivedere impossibile no
dynamic_broadcast_in_dim no rivedere impossibile no no
dynamic_conv no rivedere no no no
dynamic_gather no rivedere rivedere no no
dynamic_iota no rivedere impossibile no
dynamic_pad no rivedere no no
dynamic_reshape no rivedere impossibile no
dynamic_slice
dynamic_update_slice
einsum no rivedere no rivedere
esponenziale
exponential_minus_one
fft rivedere no
floor
raccogliere no
get_dimension_size
get_tuple_element
if rivedere no
immaginazione
annuncio in-feed impossibile no
iota impossibile
is_finite
log
log_plus_one
logistica
mappa rivedere no
massima
minima
moltiplicazione
negare
non
optimization_barrier
o
outfeed no
cuscinetto
partition_id
popcnt
potenza
reale
real_dynamic_slice no rivedere no no
recv impossibile no
reduce rivedere rivedere
reduce_precision
reduce_scatter rivedere no no
reduce_window rivedere no
resto
replica_id
rimodellare impossibile
return no rivedere impossibile
inverti
rng rivedere
rng_bit_generator rivedere impossibile rivedere
round_nearest_afz
round_nearest_even
rsqrt
scatter rivedere no
seleziona
select_and_scatter rivedere no
Invia no
set_dimension_size no sì* sì* no
shift_left
shift_right_arithmetic
shift_right_logical
firmare
seno
sezione no
ordinare no
sqrt
subtract
Tanh
torch_index_select no rivedere no no rivedere
trace no rivedere no rivedere
trasponi
triangular_solve rivedere no rivedere
tuple
unary_einsum no rivedere no rivedere
uniform_dequantize no
uniform_quantize rivedere impossibile no
mentre rivedere rivedere
Xor