MHLO에서 StableHLO를 부트스트랩하면 프리프린팅, 검증, 도형 추론을 비롯한 많은 항목의 MHLO 구현을 상속했습니다. 그 덕분에 이미 추천사항이 상당 부분 접수되고 있지만 기존 구현이 완전한지 검토하고 존재하지 않는 경우 새로운 구현을 제공해야 할 일이 여전히 많이 있습니다.
이 실시간 문서는 개발자와 사용자가 opset의 다양한 측면(사양, 검증, 유형 추론, 프리티 프린팅, 인터프리터 등)의 진행 상황을 추적할 수 있도록 작성되었습니다.
활용 방법
해당 열에서 언급된 특정 관점에 대한 StableHLO 작업의 진행 상황은 다음 추적 라벨 중 하나를 사용하여 추적됩니다.
- 일반 라벨
- 예: 포괄적인 구현이 있습니다.
- 아니요: 구현은 없지만, 이를 해결하기 위한 작업은 로드맵의 일부입니다. ODS에서 이미 일부 인증을 구현했으므로 인증 도구에 '아니요'라는 라벨을 지정할 수 없습니다.
- 인증 도구 및 유형 추론을 위한 맞춤설정된 라벨
- 예: 구현이 있으며 StableHLO 시맨틱스와 동기화됩니다.
- yes*: 구현이 있으며 XLA 시맨틱스와 동기화됩니다. XLA 의미 체계가 문서화되지 않는 경우가 많으므로 hlo_verifier.cc와 shape_inference.cc를 참조로 사용합니다.
- revisit: 구현이 있지만 'yes' 또는 'yes*'에 해당하지 않습니다. 아직 감사하지 않았거나 문제를 발견했기 때문입니다.
- infeasible: 실행이 불가능하기 때문에 구현이 없습니다. 예를 들어 피연산자와 속성에서 연산의 결과 유형을 추론할 수 없기 때문입니다.
상태
| StableHLO 작업 | 사양 | 인증 | 유형 추론 | 프리티 프린팅 | 통역 |
|---|---|---|---|---|---|
| abs | 예 | 예 | 예 | 예 | 예 |
| 추가 | 예 | 예 | 예 | 예 | 예 |
| 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 | 예 | 예 | 예 | 예 | 예 |
| 복잡함 | 예 | 예 | 예 | 예 | 예 |
| 복합 | 예 | 예 | 실행할 수 없음 | 예 | 예 |
| 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_plus_one | 예 | 예 | 예 | 예 | 예 |
| 물류 | 예 | 예 | 예 | 예 | 예 |
| 지도 | 예 | 재방문 | 예 | 아니요 | 예 |
| 최대 | 예 | 예 | 예 | 예 | 예 |
| 최소 | 예 | 예 | 예 | 예 | 예 |
| 곱하기 | 예 | 예 | 예 | 예 | 예 |
| negate | 예 | 예 | 예 | 예 | 예 |
| 않는 | 예 | 예 | 예 | 예 | 예 |
| optimization_barrier | 예 | 예 | 예 | 예 | 예 |
| 사용하여 | 예 | 예 | 예 | 예 | 예 |
| 아웃피드 | 예 | 예 | 예 | 아니요 | 예 |
| 패드 | 예 | 예 | 예 | 예 | 예 |
| partition_id | 예 | 예 | 예 | 예 | 예 |
| 팝컨트 | 예 | 예 | 예 | 예 | 예 |
| 전력 | 예 | 예 | 예 | 예 | 예 |
| real | 예 | 예 | 예 | 예 | 예 |
| real_dynamic_slice | 아니요 | 재방문 | 아니요 | 예 | 아니요 |
| Recv | 예 | 예 | 실행할 수 없음 | 아니요 | 예 |
| reduce | 예 | 재방문 | 예 | 재방문 | 예 |
| reduce_precision | 예 | 예 | 예 | 예 | 예 |
| reduce_scatter | 예 | 재방문 | 아니요 | 아니요 | 예 |
| reduce_window | 예 | 재방문 | 예 | 아니요 | 예 |
| 나머지 | 예 | 예 | 예 | 예 | 예 |
| replica_id | 예 | 예 | 예 | 예 | 예 |
| 형태 변경 | 예 | 예 | 실행할 수 없음 | 예 | 예 |
| return | 아니요 | 재방문 | 실행할 수 없음 | 예 | 예 |
| reverse | 예 | 예 | 예 | 예 | 예 |
| RNG | 예 | 예 | 예 | 예 | 재방문 |
| rng_bit_generator | 예 | 재방문 | 실행할 수 없음 | 예 | 재방문 |
| round_nearest_afz | 예 | 예 | 예 | 예 | 예 |
| round_nearest_even | 예 | 예 | 예 | 예 | 예 |
| RQRT | 예 | 예 | 예 | 예 | 예 |
| scatter | 예 | 재방문 | 예 | 아니요 | 예 |
| select | 예 | 예 | 예 | 예 | 예 |
| select_and_scatter | 예 | 재방문 | 예 | 아니요 | 예 |
| 보내기 | 예 | 예 | 예 | 아니요 | 예 |
| set_dimension_size | 아니요 | 예* | 예* | 예 | 아니요 |
| shift_left | 예 | 예 | 예 | 예 | 예 |
| shift_right_arithmetic | 예 | 예 | 예 | 예 | 예 |
| shift_right_logical | 예 | 예 | 예 | 예 | 예 |
| 표지판 | 예 | 예 | 예 | 예 | 예 |
| 사인 | 예 | 예 | 예 | 예 | 예 |
| slice | 예 | 예 | 예 | 아니요 | 예 |
| sort | 예 | 예 | 예 | 아니요 | 예 |
| sqrt | 예 | 예 | 예 | 예 | 예 |
| 빼기 | 예 | 예 | 예 | 예 | 예 |
| 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, if, infeed, is_finite, {2/case, map, optimization_barrieroutfeedpadrecvreducereduce_scatterreduce_windowreversescatterselect_and_scattersendslicesorttransposetupleuniform_dequantizedwhile