-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'.