-chlo-legalize-to-stablehlo

Hợp pháp hoá quy trình hoạt động CHLO sang hoạt động ổn định và hình dạng

-shape-legalize-to-stablehlo

Hợp pháp hoá các hoạt động liên quan đến hình dạng theo StableHLO.

Một thẻ thử nghiệm hợp pháp hoá hoạt động liên quan đến hình dạng thành hoạt động StableHLO.

Việc kết hợp các phép tính hình dạng và dữ liệu với nhau thông qua một lần truyền tuỳ chọn sẽ giúp hệ sinh thái StableHLO có thể tận dụng quy trình biên dịch sử dụng thao tác ổn định HLO để lập mô hình động lực.

-stablehlo-aggressive-folder

Folds ổn định hoạt độngHLO

Tùy chọn

-fold-float : Allow for potentially lossy computations using float type.

-stablehlo-aggressive-simplification

Chuẩn hoá các thao tác ổn địnhHLO

-stablehlo-canonicalize-dynamism

Chuẩn hoá hoạt động ổn định động thành hoạt động tĩnh.

Thay thế hoạt động ổn định động như DynamicReShapeOp bằng các thuộc tính tương ứng các đối tác tĩnh như ReshapeOp nếu tất cả các phần tử động của các hoạt động này thực sự không đổi.

Ví dụ: nếu toán hạng output_shape của DynamicReShapeOp là một hằng số , thì bạn có thể chuyển đổi thao tác này thành ReshapeOp.

-stablehlo-convert-to-signless

Truyền để biến đổi IR thành các số nguyên không có dấu.

-stablehlo-legalize-composite-to-call

Thay thế hoạt động tổng hợp bằng lệnh gọi đến quá trình phân ly

Thay thế hoạt động tổng hợp bằng lệnh gọi đến quá trình phân rã, ví dụ: bên dưới:

stablehlo.composite "my_namespace.my_op" %arg0, %arg1 {
  decomposition = @bar,
  version = 1,
  composite_attributes = {
    "my_attribute": "my_value"
  }
}

Sẽ trở thành:

func.call @bar(%arg0, %arg1)

Có thể loại trừ một tập hợp con tổng hợp khỏi phép biến đổi này bằng cách sử dụng phương thức "ngoại trừ" cờ, ví dụ:

stablehlo-opt --stablehlo-legalize-composite-to-call=except='foo.baz,foo.qux'

Tùy chọn

-except : Names of composites that should not be replaced with calls.

-stablehlo-legalize-deprecated-ops

Hợp pháp hoá các hoạt động không dùng nữa thành các hoạt động được hỗ trợ tốt.

RFC (#2283) không hỗ trợ hoạt động ổn định phiên bản 1.0 đề xuất loại bỏ một số hoạt động dư thừa. Lượt chuyển này giúp đánh giá tác động của những hoạt động này việc gỡ bỏ bằng nhiều quy trình biên dịch bằng cách hợp pháp hoá chúng thành những đối tác được hỗ trợ lâu dài.

Tùy chọn

-fail-on-unused : Fail on (mostly) unused ops that are deprecated without any fallback.

-stablehlo-legalize-qdq-to-quantized-op

Hợp nhất mẫu (loại bỏ lượng tử, hoạt động dấu phẩy động và định lượng) vào thao tác lượng tử hoá ổn địnhHLO

Kết hợp mẫu (Khử lượng tử, hoạt động dấu phẩy động và lượng tử hoá) vào hoạt động lượng tử hoá ổn địnhHLO Lưu ý: Thẻ/vé này không xoá bất kỳ hoạt động nào đã có trước đó. Ví dụ: chương trình sau

func.func @add(%arg0: tensor<16x16x!quant.uniform<ui8:f32, 34.0:16>>) -> tensor<16x16x!quant.uniform<ui8:f32, 34.0:16>> {
  %0 = stablehlo.uniform_dequantize %arg0 : (tensor<16x16x!quant.uniform<ui8:f32, 34.0:16>>) -> tensor<16x16xf32>
  %1 = stablehlo.abs %0 : tensor<16x16xf32>
  %2 = stablehlo.uniform_quantize %1 : (tensor<16x16xf32>) -> tensor<16x16x!quant.uniform<ui8:f32, 34.0:16>>
  func.return %2 : tensor<16x16x!quant.uniform<ui8:f32, 34.0:16>>
}

Sẽ trở thành:

func.func @add(%arg0: tensor<16x16x!quant.uniform<u8:f32, 3.400000e+01:16>>) -> tensor<16x16x!quant.uniform<u8:f32, 3.400000e+01:16>> {
  %0 = stablehlo.uniform_dequantize %arg0 : (tensor<16x16x!quant.uniform<u8:f32, 3.400000e+01:16>>) -> tensor<16x16xf32>
  %1 = stablehlo.abs %0 : tensor<16x16xf32>
  %2 = stablehlo.abs %arg0 : tensor<16x16x!quant.uniform<u8:f32, 3.400000e+01:16>>
  %3 = stablehlo.uniform_quantize %1 : (tensor<16x16xf32>) -> tensor<16x16x!quant.uniform<u8:f32, 3.400000e+01:16>>
  return %2 : tensor<16x16x!quant.uniform<u8:f32, 3.400000e+01:16>>
}

-stablehlo-legalize-quant-to-math

Chuyển đổi từ hoạt động lượng tử hoá StableHLO sang hoạt động toán học gốc của StableHLO.

Chuyển đổi các chương trình StableHLO bằng các kiểu Hệ thống phân loại thống nhất sang các chương trình theo ngữ nghĩa phép toán số nguyên tương đương.

func.func @add(%arg0: tensor<!quant.uniform<i8:f32,1.0:0>>, %arg1: tensor<!quant.uniform<i8:f32,2.0:1>>) ->  tensor<!quant.uniform<i8:f32,3.0:2>> {
  %0 = "stablehlo.add"(%arg0, %arg1) : (tensor<!quant.uniform<i8:f32,1.0:0>>, tensor<!quant.uniform<i8:f32,2.0:1>>) -> tensor<!quant.uniform<i8:f32,3.0:2>>
  func.return %0 : tensor<!quant.uniform<i8:f32,3.0:2>>
}

Sẽ trở thành:

func.func @add(%arg0: tensor<i8>, %arg1: tensor<i8>) -> tensor<i8> {
  %0 = stablehlo.convert %arg0 : (tensor<i8>) -> tensor<f32>
  %cst = stablehlo.constant dense<0.333333343> : tensor<f32>
  %1 = chlo.broadcast_multiply %0, %cst : (tensor<f32>, tensor<f32>) -> tensor<f32>
  %cst_0 = stablehlo.constant dense<2.000000e+00> : tensor<f32>
  %2 = chlo.broadcast_add %1, %cst_0 : (tensor<f32>, tensor<f32>) -> tensor<f32>
  %3 = stablehlo.round_nearest_even %2 : tensor<f32>
  %4 = stablehlo.convert %3 : (tensor<f32>) -> tensor<i32>
  %5 = stablehlo.convert %arg1 : (tensor<i8>) -> tensor<f32>
  %cst_1 = stablehlo.constant dense<0.666666686> : tensor<f32>
  %6 = chlo.broadcast_multiply %5, %cst_1 : (tensor<f32>, tensor<f32>) -> tensor<f32>
  %cst_2 = stablehlo.constant dense<1.33333337> : tensor<f32>
  %7 = chlo.broadcast_add %6, %cst_2 : (tensor<f32>, tensor<f32>) -> tensor<f32>
  %8 = stablehlo.round_nearest_even %7 : tensor<f32>
  %9 = stablehlo.convert %8 : (tensor<f32>) -> tensor<i32>
  %c = stablehlo.constant dense<2> : tensor<i32>
  %10 = chlo.broadcast_add %4, %9 : (tensor<i32>, tensor<i32>) -> tensor<i32>
  %11 = chlo.broadcast_subtract %10, %c : (tensor<i32>, tensor<i32>) -> tensor<i32>
  %c_3 = stablehlo.constant dense<-128> : tensor<i32>
  %c_4 = stablehlo.constant dense<127> : tensor<i32>
  %12 = stablehlo.clamp %c_3, %11, %c_4 : tensor<i32>
  %13 = stablehlo.convert %12 : (tensor<i32>) -> tensor<i8>
  return %13 : tensor<i8>
}

-stablehlo-legalize-quantized-op-to-qdq

Phân tách toán tử ổn định lượng tử hoá cho mẫu (loại bỏ lượng tử, hoạt động dấu phẩy động và định lượng).

Phân huỷ các chương trình lượng tử hoá StableHLO bằng cách sử dụng phương pháp định lượng/loại bỏ lượng tử đồng nhất các toán tử. Ví dụ: chương trình sau

func.func @add(%arg0: tensor<!quant.uniform<i8:f32,1.0:0>>, %arg1: tensor<!quant.uniform<i8:f32,2.0:1>>) ->  tensor<!quant.uniform<i8:f32,3.0:2>> {
  %0 = "stablehlo.add"(%arg0, %arg1) : (tensor<!quant.uniform<i8:f32,1.0:0>>, tensor<!quant.uniform<i8:f32,2.0:1>>) -> tensor<!quant.uniform<i8:f32,3.0:2>>
  func.return %0 : tensor<!quant.uniform<i8:f32,3.0:2>>
}

Sẽ trở thành:

func.func @add(%arg0: tensor<!quant.uniform<i8:f32, 1.000000e+00>>, %arg1: tensor<!quant.uniform<i8:f32, 2.000000e+00:1>>) -> tensor<!quant.uniform<i8:f32, 3.000000e+00:2>> {
  %0 = stablehlo.uniform_dequantize %arg0 : (tensor<!quant.uniform<i8:f32, 1.000000e+00>>) -> tensor<f32>
  %1 = stablehlo.uniform_dequantize %arg1 : (tensor<!quant.uniform<i8:f32, 2.000000e+00:1>>) -> tensor<f32>
  %2 = stablehlo.add %0, %1 : tensor<f32>
  %3 = stablehlo.uniform_quantize %2 : (tensor<f32>) -> tensor<!quant.uniform<i8:f32, 3.000000e+00:2>>
  return %3 : tensor<!quant.uniform<i8:f32, 3.000000e+00:2>>
}

-stablehlo-legalize-to-vhlo

Hợp pháp hoá StableHLO thành VHLO.

-stablehlo-refine-arguments

Tinh chỉnh hình dạng đối số của hàm chính.

Sửa đổi các đối số của hàm chính bằng cách sử dụng chữ ký loại dữ liệu đầu vào. Gói đối số trong custom_call @stablehlo.shape_refinement_operand_wrapper để giữ cho IR hợp lệ trước khi chạy tinh chỉnh hình dạng.

Bạn có thể sử dụng refinedTypesOption để chỉ định danh sách các loại đã tinh chỉnh. Bạn có thể chỉ định thuộc tính này trong MLIR bằng --types='tensor<...>,tensor<...>', hoặc được chuyển vào phương thức tạo thẻ/vé. Danh sách loại tinh chỉnh phải chỉ định loại của mỗi đối số cho phương thức main đang được tinh chỉnh.

Tùy chọn

-types : The new types to be used for the main function's arguments, specified as an MLIR TypeRange 'tensor<1x2xf32>, ...'

-stablehlo-refine-shapes

Tinh chỉnh hình dạng trong chương trình StableHLO.

Xem qua quy trình tinh chỉnh các hình dạng của chương trình StableHLO trong hoạt động.

Trường hợp sử dụng chính của thẻ và vé này là chuyên về hình dạng động chương trình sang các hình dạng tĩnh. Nếu chương trình Ổn định HLO có hình dạng động có cấu trúc bên phải, sau đó cập nhật loại đối số từ hình dạng động thành hình dạng tĩnh và khi chạy thẻ/vé này sẽ truyền các hình dạng tĩnh trên chương trình.

-vhlo-legalize-to-stablehlo

Hợp pháp hoá VHLO thành StableHLO.

-vhlo-to-version

Chuyển đổi giữa các phiên bản VHLO.

Tùy chọn

-target : The target version. Must be a version of the form #.#.# or 'current'.