MHLO から StableHLO をブートストラップする場合、プリティプリント、検証、シェイプ推論など、多くの実装を MHLO が引き継いでいます。おかげで、Google はすでに opset の大部分をカバーしていますが、既存の実装の完全性を確認し、存在しない場合は新しい実装を提供する作業がまだたくさんあります。
このライブ ドキュメントは、デベロッパーとユーザーが opset のさまざまな側面(仕様、検証、型推論、プリティ プリント、インタープリタなど)に関する進捗状況を追跡するためのものです。
活用方法
対応する行に記載されている StableHLO 演算の進捗状況は、対応する列に記載されている特定のアスペクトに関するもので、次のいずれかのトラッキング ラベルを使用してトラッキングされます。
- 汎用ラベル
- yes: 包括的な実装があります。
- no: 実装はありませんが、実装に向けた取り組みはロードマップの一部です。 ODS にはすでになんらかの検証が実装されているため、検証ツールに「no」というラベルは付けられません。
- Verifier と型推論のカスタムラベル
- yes: 実装があり、StableHLO セマンティクスと同期しています。
- yes*: 実装があり、XLA セマンティクスと同期しています。XLA セマンティクスはドキュメントに記載されていないことが多いため、ここでは hlo_verifier.cc と shape_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_gather、all_to_all、case、collective_permute、compare、concatenate、constant、dynamic_slice、dynamic_update_slice、gather、get_tuple_element、if、infeed、is_finite、{8/2}、infeed、is_finite、mapoptimization_barrieroutfeedpadrecvreducereduce_scatterreduce_windowreversescatterselect_and_scattersendslicesorttransposetupleuniform_dequantizedwhile