-chlo-legalize-to-stablehlo

CHLO işlem akışından StableHLO ve şekil operasyonlarına yasal çözümler sunar.

-shape-legalize-to-stablehlo

Şekille ilgili işlemleri StableHLO'da yasal hâle getirin.

Şekillerle ilgili işlemleri StableHLO operasyonlarına uygun hale getiren deneysel geçiş.

İsteğe bağlı geçiş kartı aracılığıyla şekil ve veri hesaplamalarını bir araya getirmek StableHLO ekosisteminin yapay zekadan en iyi şekilde yararlanmasını derleme ardışık düzenlerine sahip olmayabilir.

-stablehlo-aggressive-folder

StableHLO işlemlerini katlar

Seçenekler

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

-stablehlo-aggressive-simplification

StableHLO işlemlerini standartlaştırır

-stablehlo-canonicalize-dynamism

Dinamik StableHLO işlemlerini standartlaştırarak statik işlemleri gerçekleştirir.

DynamicReshapeOp gibi dinamik StableHLO işlemlerini ilgili bu işlemlerin tüm dinamik öğeleri yeniden işleme alındığında, değerlerdir.

Örneğin, DynamicReshapeOp işlevinin çıkış_şekil işleneni sabitse değerine ayarlanırsa işlem ReshapeOp'a dönüştürülebilir.

-stablehlo-convert-to-signless

IR'yi işaretsiz tam sayılar üzerinde olacak şekilde dönüştürmek için geçiş yapın.

-stablehlo-legalize-composite-to-call

Bileşik operasyonları, ayrıştırma çağrılarıyla değiştirir

Kompozit operasyonları bir ayrıştırma çağrısıyla değiştirir, ör. şu bilgileri görebilirsiniz:

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

Şu şekilde olacak:

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

Kompozitlerin bir alt kümesi "hariç" flag, ör.:

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

Seçenekler

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

-stablehlo-legalize-deprecated-ops

Desteği sonlandırılan işlemleri, iyi desteklenen operasyonlar için yasal hâle getirin.

StableHLO v1.0 Opset Kullanımdan Kaldırma RFC'si (#2283) şunları kaldırmayı önerir: pek çok gereksiz işlem vardır. Bu kart, bu operasyonların etkisinin değerlendirilmesine yardımcı olur. yasal hale getirerek, sürecin geri kalanına yol açan içerikleri uzun vadede desteklenen benzerleri.

Seçenekler

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

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

Deseni StableHLO nicelenmiş işlemle birleştirme (miktarı çıkarma, kayan nokta işlemi ve miktar belirleme)

Kalıbı (miktarını çıkarma, kayan nokta işlemi ve niceleme) StableHLO nicelenmiş işlemle birleştirme Not: Kart, mevcut işlemleri silmez. Örneğin,

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>>
}

Şu şekilde olacak:

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

StableHLO nicel işlemleri StableHLO temel matematik işlemlerine dönüştürün.

UniformQuantized türleri kullanarak StableHLO programlarını anlamsal olarak dönüştürme tamsayılara karşılık gelen matris işlemleri.

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>>
}

Şu şekilde olacak:

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

Miktarı alınmış StableHLO işlemini (miktarını çıkarma, kayan nokta işlemi ve nicelik belirleme) desene ayırma.

Tek tip nicel nicelleştirme/ayırma kullanarak StableHLO nicel programları ayrıştırma anlamına gelir. Örneğin,

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>>
}

Şu şekilde olacak:

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

StableHLO'yu VHLO'ya uygun hale getirin.

-stablehlo-refine-arguments

Ana işlevin bağımsız değişken şekillerini hassaslaştırır.

Giriş türü imzasını kullanarak ana işlevin bağımsız değişkenlerini değiştirir. custom_call @stablehlo.shape_refinement_operand_Wrapper içindeki bağımsız değişkenleri sarmalar IR'nin şekil ayrıntılandırma çalıştırılmadan önce geçerli olmasını sağlar.

refinedTypesOption, hassaslaştırılmış türlerin listesini belirtmek için kullanılabilir. Bu, MLIR'de --types='tensor<...>,tensor<...>' ile belirtilebilir. kart oluşturma yöntemine aktarılır. Ayrıntılandırma türü listesi, işlenen main yöntemi için her bağımsız değişken türünü ifade eder.

Seçenekler

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

-stablehlo-refine-shapes

StableHLO programında şekilleri hassaslaştırır.

Faaliyetler içindeki şekilleri iyileştiren StableHLO programında adım adım.

Bu kartın en önemli kullanım alanı, dinamik olarak programları statik şekillere dönüştürüyor. Dinamik olarak şekilli bir StableHLO programında sağ yapısını kullanarak bağımsız değişken türlerini dinamik şekillerden statik şekiller devreye girdiğinde ve bu kartı çalıştırdığınızda geri dönelim.

-vhlo-legalize-to-stablehlo

VHLO'yu StableHLO olarak yasal hâle getirin.

-vhlo-to-version

VHLO'nun sürümleri arasında dönüştürme yapın.

Seçenekler

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