StableHLO のステータス

MHLO から StableHLO をブートストラップする場合、プリティプリント、検証、シェイプ推論など、多くの実装を MHLO が引き継いでいます。おかげで、Google はすでに opset の大部分をカバーしていますが、既存の実装の完全性を確認し、存在しない場合は新しい実装を提供する作業がまだたくさんあります。

このライブ ドキュメントは、デベロッパーとユーザーが opset のさまざまな側面(仕様、検証、型推論、プリティ プリント、インタープリタなど)に関する進捗状況を追跡するためのものです。

活用方法

対応する行に記載されている StableHLO 演算の進捗状況は、対応する列に記載されている特定のアスペクトに関するもので、次のいずれかのトラッキング ラベルを使用してトラッキングされます。

  • 汎用ラベル
    • yes: 包括的な実装があります。
    • no: 実装はありませんが、実装に向けた取り組みはロードマップの一部です。 ODS にはすでになんらかの検証が実装されているため、検証ツールに「no」というラベルは付けられません。
  • Verifier と型推論のカスタムラベル
    • yes: 実装があり、StableHLO セマンティクスと同期しています。
    • yes*: 実装があり、XLA セマンティクスと同期しています。XLA セマンティクスはドキュメントに記載されていないことが多いため、ここでは hlo_verifier.ccshape_inference.cc を参照しています。
    • 再検討: 実装がありますが、「はい」または「はい*」のいずれにも当てはまりません。まだ監査をしていないか、問題が見つかり、見つかったためです。
    • infeasible: 実行不可能なため、実装されません。たとえば、演算の結果の型をそのオペランドと属性から推測できないためです。

ステータス

StableHLO 演算 仕様 検証 型推論 プリティ プリント インタープリタ
abs あり はい はい はい あり
add あり はい はい はい あり
after_all あり はい はい はい あり
all_gather あり 再訪問 × × あり
all_reduce あり 再訪問 あり × あり
all_to_all あり 再訪問 あり × あり
および あり はい はい はい あり
atan2 あり はい はい はい あり
batch_norm_grad あり 再訪問 あり × 再訪問
batch_norm_inference あり 再訪問 あり × 再訪問
batch_norm_training あり 再訪問 あり × 再訪問
bitcast_convert あり あり 実現不可能 あり あり
ブロードキャスト × ○* ○* あり 再訪問
broadcast_in_dim あり あり 実現不可能 あり あり
ケース あり 再訪問 あり × あり
cbrt あり はい はい はい あり
ceil あり はい はい はい あり
コレスキー あり はい はい あり 再訪問
クランプ あり 再訪問 あり はい あり
collective_broadcast あり 再訪問 あり × あり
collective_permute あり 再訪問 あり × あり
compare あり はい はい はい あり
複雑 あり はい はい はい あり
composite あり あり 実現不可能 あり あり
concatenate あり はい はい はい あり
定数 あり はい はい はい あり
コンバージョン あり あり 実現不可能 あり あり
畳み込み あり あり 実現不可能 再訪問 あり
コサイン あり はい はい はい あり
count_leading_zeros あり はい はい はい あり
create_token × ○* ○* あり 再訪問
クロスレプリカ合計 × 再訪問 ○* × 再訪問
custom_call あり あり 実現不可能 あり あり
割る あり はい はい はい あり
ドット × 再訪問 実現不可能 あり 再訪問
dot_general あり 再訪問 実現不可能 × あり
dynamic_broadcast_in_dim あり あり 実現不可能 あり 再訪問
dynamic_conv あり あり 実現不可能 再訪問 再訪問
dynamic_gather あり あり 実現不可能 × 再訪問
dynamic_iota あり あり 実現不可能 あり 再訪問
dynamic_pad あり あり 実現不可能 あり 再訪問
dynamic_reshape あり あり 実現不可能 あり 再訪問
dynamic_slice あり はい はい はい あり
dynamic_update_slice あり はい はい はい あり
einsum × 再訪問 × あり 再訪問
指数 あり はい はい はい あり
exponential_minus_one あり はい はい はい あり
FFT あり 再訪問 あり あり ×
フロア あり はい はい はい あり
収集 あり はい あり × あり
get_dimension_size あり はい はい はい あり
get_tuple_element あり はい はい はい あり
if あり 再訪問 あり × あり
画像 あり はい はい はい あり
インフィード あり あり 実現不可能 × あり
イオタ あり あり 実現不可能 あり あり
is_finite あり はい はい はい あり
log あり はい はい はい あり
log_plus_one あり はい はい はい あり
ロジスティック あり はい はい はい あり
マップ あり 再訪問 あり × あり
最大 あり はい はい はい あり
最小 あり はい はい はい あり
乗算 あり はい はい はい あり
negate あり はい はい はい あり
いない あり はい はい はい あり
optimization_barrier あり はい はい はい あり
または あり はい はい はい あり
アウトフィード あり はい あり × あり
パッド あり はい はい はい あり
partition_id あり はい はい はい あり
ポップコンテンツ あり はい はい はい あり
電力 あり はい はい はい あり
real あり はい はい はい あり
real_dynamic_slice × 再訪問 × あり ×
受信 あり あり 実現不可能 × あり
reduce あり 再訪問 あり 再訪問 あり
reduce_precision あり はい はい はい あり
reduce_scatter あり 再訪問 × × あり
reduce_window あり 再訪問 あり × あり
残り あり はい はい はい あり
replica_id あり はい はい はい あり
reshape あり あり 実現不可能 あり あり
return × 再訪問 実現不可能 あり あり
reverse あり はい はい はい あり
RNG あり はい はい あり 再訪問
rng_bit_generator あり 再訪問 実現不可能 あり 再訪問
round_nearest_afz あり はい はい はい あり
round_nearest_even あり はい はい はい あり
rsqrt あり はい はい はい あり
scatter あり 再訪問 あり × あり
select あり はい はい はい あり
select_and_scatter あり 再訪問 あり × あり
送信 あり はい あり × あり
set_dimension_size × ○* ○* あり ×
shift_left あり はい はい はい あり
shift_right_arithmetic あり はい はい はい あり
shift_right_logical あり はい はい はい あり
揃えます。 あり はい はい はい あり
サイン あり はい はい はい あり
スライス あり はい あり × あり
並べ替え あり はい あり × あり
sqrt あり はい はい はい あり
subtract あり はい はい はい あり
tanh あり はい はい はい あり
torch_index_select × 再訪問 × × 再訪問
行 / 列の入れ替え あり はい はい はい あり
triangular_solve あり 再訪問 あり × 再訪問
tuple あり はい はい はい あり
unary_einsum × 再訪問 × あり 再訪問
uniform_dequantize あり はい はい あり ×
uniform_quantize あり 再訪問 実現不可能 あり ×
しばらく あり 再訪問 あり 再訪問 あり
XOR あり はい はい はい あり

量子化演算の型推論

上の表の Type Inference 列は、量子化されていないオペレーションに焦点を当てています。量子化演算の大半では、結果の型の量子化パラメータがオペランドの量子化パラメータと異なる場合があるため、結果の型を推測することは現実的ではありません。オペランドと結果の型が同一でなければならない、または演算に結果の型を推測するのに役立つ制約がある少数のケースを除き、all_gatherall_to_allcasecollective_permutecompareconcatenateconstantdynamic_slicedynamic_update_slicegatherget_tuple_elementifinfeedis_finite、{8/2}、infeedis_finitemapoptimization_barrieroutfeedpadrecvreducereduce_scatterreduce_windowreversescatterselect_and_scattersendslicesorttransposetupleuniform_dequantizedwhile