Trạng thái StableHLO

Khi tự khởi động StableHLO từ MHLO, chúng tôi đã kế thừa cách triển khai của MHLO về nhiều tính năng, bao gồm cả việc in hình rất đẹp, xác minh và dự đoán hình dạng. Nhờ đó, chúng ta đã có phạm vi bao phủ đáng kể của điện thoại thông minh, nhưng vẫn còn nhiều việc cần làm để xem lại các phương thức triển khai hiện có để đảm bảo tính hoàn chỉnh và cung cấp các phương thức triển khai mới chưa có.

Tài liệu trực tiếp này dành cho các nhà phát triển và người dùng để theo dõi tiến trình về các khía cạnh khác nhau của thiết bị điều khiển – như quy cách, hoạt động xác minh, suy luận kiểu, in đẹp, thông dịch viên, v.v.

Cách sử dụng

Tiến trình của một hoạt động StableHLO (như đã đề cập trong hàng tương ứng) trên một khía cạnh cụ thể (như đã đề cập trong cột tương ứng) được theo dõi bằng một trong các nhãn theo dõi sau.

  • Nhãn chung
    • yes: có cách triển khai toàn diện.
    • no: không có cách triển khai nào, nhưng việc triển khai như vậy là một phần trong lộ trình phát triển. Xin lưu ý rằng bạn không thể gắn nhãn Người xác minh là "không" vì ODS đã triển khai một số quy trình xác minh.
  • Các nhãn tuỳ chỉnh cho Trình xác minh và Dự đoán loại
    • yes: đã có một cách triển khai và đồng bộ hoá với ngữ nghĩa StableHLO.
    • yes*: có một cách triển khai và đồng bộ hoá với ngữ nghĩa XLA. Vì ngữ nghĩa XLA thường không được ghi nhận trong tài liệu, nên chúng tôi dùng hlo_verifier.ccshape_inference.cc làm tệp tham chiếu.
    • revisit: có cách triển khai, nhưng không thuộc trường "yes" (có) hoặc "yes*" (có) – do chúng tôi chưa kiểm tra, hoặc do chúng tôi đã phát hiện và phát hiện ra vấn đề.
    • không khả thi: không có cách triển khai nào vì không khả thi. Ví dụ: vì hệ thống không thể suy ra loại kết quả của một op từ các toán hạng và thuộc tính của toán hạng đó.

Trạng thái

Hoạt động StableHLO Thông số kỹ thuật Xác minh Suy luận kiểu dữ liệu Tạo bản in đẹp Phiên dịch viên
abs
thêm
after_all
all_gather xem lại no no
all_reduce xem lại no
all_to_all xem lại no
atan2
batch_norm_grad xem lại no xem lại
batch_norm_inference xem lại no xem lại
batch_norm_training xem lại no xem lại
bitcast_convert không khả thi
truyền tin no có* có* xem lại
broadcast_in_dim không khả thi
ốp lưng xem lại no
cbrt
câu lạc bộ ceil
sặc sỡ xem lại
kẹp xem lại
collective_broadcast xem lại no
collective_permute xem lại no
so sánh
phức tạp
tổng hợp không khả thi
concatenate
hằng số
chuyển đổi không khả thi
tích chập không khả thi xem lại
cosin
count_leading_zeros
create_token no có* có* xem lại
tổng lặp lại no xem lại có* no xem lại
custom_call không khả thi
chia
chấm no xem lại không khả thi xem lại
dot_general xem lại không khả thi no
dynamic_broadcast_in_dim không khả thi xem lại
dynamic_conv không khả thi xem lại xem lại
dynamic_gather không khả thi no xem lại
dynamic_iota không khả thi xem lại
dynamic_pad không khả thi xem lại
dynamic_reshape không khả thi xem lại
dynamic_slice
dynamic_update_slice
einsum no xem lại no xem lại
hàm mũ
exponential_minus_one
fft xem lại no
phần nguyên gần nhất bên trái
tập hợp no
get_dimension_size
get_tuple_element
if xem lại no
hình ảnh
nguồn cấp dữ liệu không khả thi no
ô tô iota không khả thi
is_finite
log
log_plus_one
hậu cần
map xem lại no
tối đa
tối thiểu
nhân
phủ định
không
optimization_barrier
hoặc
nguồn cấp dữ liệu bên ngoài no
đệm
partition_id
Popcnt
công suất
thực
real_dynamic_slice no xem lại no no
nhận tín hiệu không khả thi no
giảm xem lại xem lại
reduce_precision
reduce_scatter xem lại no no
reduce_window xem lại no
phần còn lại
replica_id
đổi hình dạng không khả thi
return no xem lại không khả thi
đảo ngược
RNG xem lại
rng_bit_generator xem lại không khả thi xem lại
round_nearest_afz
round_nearest_even
giải đấu rsqrt
scatter xem lại no
chọn
select_and_scatter xem lại no
gửi no
set_dimension_size no có* có* no
shift_left
shift_right_arithmetic
shift_right_logical
biển báo
sin
lát cắt no
sắp xếp no
sqrt
trừ
tanh
torch_index_select no xem lại no no xem lại
hoán vị
triangular_solve xem lại no xem lại
tuple
unary_einsum no xem lại no xem lại
uniform_dequantize no
uniform_quantize xem lại không khả thi no
trong khi xem lại xem lại
xor

Suy luận kiểu dữ liệu cho các phép toán tử lượng tử

Cột Type Inference trong bảng ở trên được dùng để tập trung vào các thao tác không có lượng tử. Đối với phần lớn các phép toán lượng tử, bạn không thể suy luận ra loại kết quả vì tham số lượng tử hoá của các loại kết quả có thể khác với tham số của các toán hạng. Ngoại trừ một số trường hợp, toán hạng và loại kết quả phải khớp giống nhau, hoặc toán hạng có các hạn chế hữu ích để suy ra loại kết quả, các hoạt động đó được liệt kê dưới đây: all_gather, all_to_all, case, collective_permute, compare, concatenate, constant, dynamic_slice, dynamic_update_slice, gather, get_tuple_element, if, infeed, is_finite, all_to_all, all_to_all, all_to_all, all_to_all, all_to_all, all_to_all, all_to_all, all_to_all, all_to_all, all_to_all, all_to_all, all_to_all, all_to_all, all_to_allmapoptimization_barrieroutfeedpadrecvreducereduce_scatterreduce_windowreversescatterselect_and_scattersendslicesorttransposetupleuniform_dequantizedwhile