-chlo-legalize-to-stablehlo

CHLO ops ফ্লো থেকে StableHLO এবং Shape ops এ বৈধ করে

-shape-legalize-to-stablehlo

StableHLO-তে আকৃতি-সম্পর্কিত অপারেশনগুলিকে বৈধ করুন।

একটি পরীক্ষামূলক পাস যা আকৃতি-সম্পর্কিত অপারেশনগুলিকে StableHLO অপ্সকে বৈধ করে।

একটি ঐচ্ছিক পাসের মাধ্যমে আকৃতি এবং ডেটা কম্পিউটেশন একত্রে আনার ফলে StableHLO ইকোসিস্টেমের পক্ষে সম্ভাব্যভাবে কম্পাইলেশন পাইপলাইনগুলিকে লিভারেজ করা সম্ভব হবে যা StableHLO ক্রিয়াকলাপগুলিকে গতিশীলতার মডেল করতে ব্যবহার করে৷

-stablehlo-aggressive-folder

Folds StableHLO অপারেশন

অপশন

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

-stablehlo-aggressive-simplification

StableHLO অপারেশনকে ক্যানোনিকালাইজ করে

-stablehlo-canonicalize-dynamism

গতিশীল StableHLO অপ্সকে স্ট্যাটিক অপস-এ ক্যানোনিকালাইজ করে।

DynamicReshapeOp-এর মতো গতিশীল StableHLO ops-কে ReshapeOp-এর মতো সংশ্লিষ্ট স্ট্যাটিক কাউন্টারপার্টের সাথে প্রতিস্থাপন করে যদি এই অপ্সের সমস্ত গতিশীল উপাদান প্রকৃতপক্ষে ধ্রুবক থাকে।

উদাহরণস্বরূপ, যদি DynamicReshapeOp-এর output_shape অপারেন্ড একটি ধ্রুবক মান হয়, তাহলে অপারেশনটি ReshapeOp-এ রূপান্তরিত হতে পারে।

-stablehlo-convert-to-signless

আইআরকে সাইনলেস পূর্ণসংখ্যাতে রূপান্তরিত করতে পাস করুন।

-stablehlo-create-compatibility-expander

StableHLO অপারেশনের জন্য সামঞ্জস্য বিস্তারকারী তৈরি করুন।

StableHLO ops আপডেট পায় বা সর্বশেষ সংস্করণে নতুন op চালু করা হয়। এই অপ্ট-ইন পাসটি পুরানো StableHLO সংস্করণগুলির সাথে নতুন StableHLO ক্রিয়াকলাপগুলিকে সেই পুরানো সংস্করণগুলির দ্বারা সমর্থিত সমতুল্য ক্রিয়াকলাপে পচিয়ে দিয়ে পিছনের সামঞ্জস্যকে প্রসারিত করে৷

কেন এটি একটি অপ্ট-ইন পাস?

মাঝে মাঝে, StableHLO op বর্ধিতকরণগুলি OpenXLA ইকোসিস্টেমে নির্দিষ্ট সাধারণ প্যাটার্নগুলির পরিচালনাকে ব্যাপকভাবে সহজ করার জন্য ব্যবহৃত হয়। এর মধ্যে রয়েছে TanOp-এর মতো জিনিস, যার উচ্চ ফ্রেমওয়ার্ক এবং কম্পাইলার সমর্থন রয়েছে, সেইসাথে সংগ্রহ/স্ক্যাটার ব্যাচিং ডাইমেনশন, যা স্লাইস ব্যবহার করে উপস্থাপন করা যেতে পারে, কিন্তু শার্ডিংকে আরও কঠিন করে তোলে। এই শ্রেণীর নতুন বৈশিষ্ট্যগুলির জন্য, আমরা স্বয়ংক্রিয়ভাবে ডাউনগ্রেড অফার করি না, কারণ এটি পরবর্তী অপ্টিমাইজেশানগুলিতে ব্যবহৃত গুরুত্বপূর্ণ তথ্য ফেলে দিতে পারে। এই পাসটি সম্ভাব্য কম সর্বোত্তম সংকলনের ব্যয়ে সামঞ্জস্যতা সর্বাধিক করার জন্য লক্ষ্য সংস্করণের উপর ভিত্তি করে এই অপ্সগুলিকে প্রসারিত করতে ব্যবহার করা যেতে পারে।

func.func @tan_op_non_complex(%arg0: tensor<4xf64>) -> tensor<4xf64> {
  %1 = stablehlo.tan %arg0 : tensor<4xf64>
  func.return %1 : tensor<4xf64>
}

হয়ে যাবে:

func.func @tan_op_non_complex(%arg0: tensor<4xf64>) -> tensor<4xf64> {
  %0 = stablehlo.sine %arg0 : tensor<4xf64>
  %1 = stablehlo.cosine %arg0 : tensor<4xf64>
  %2 = stablehlo.divide %0, %1 : tensor<4xf64>
  return %2 : tensor<4xf64>
}

অপশন

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

-stablehlo-legalize-composite-to-call

কম্পোজিট অপ্স প্রতিস্থাপন করে তাদের পচন ধরে

কম্পোজিট অপসকে তাদের পচনশীলতার কল দিয়ে প্রতিস্থাপন করে, যেমন নিচেরটি:

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

হয়ে যাবে:

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

"ব্যতীত" পতাকা ব্যবহার করে এই রূপান্তর থেকে কম্পোজিটের একটি উপসেট বাদ দেওয়া যেতে পারে, যেমন:

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

অপশন

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

-stablehlo-legalize-deprecated-ops

ভাল-সমর্থিত অপ্স থেকে অবচয়িত অপ্সকে বৈধ করুন।

StableHLO v1.0 Opset Deprecations RFC (#2283) বেশ কিছু অপ্রয়োজনীয় অপস অপসারণের প্রস্তাব করেছে। এই পাস বিভিন্ন সংকলন পাইপলাইনে এই অপ অপসারণের প্রভাবকে তাদের দীর্ঘমেয়াদী সমর্থিত প্রতিপক্ষের কাছে বৈধ করে মূল্যায়ন করতে সাহায্য করে।

অপশন

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

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

StableHLO কোয়ান্টাইজড অপারেশনে ফিউজ (ডি-কোয়ান্টাইজ, ফ্লোটিং-পয়েন্ট অপারেশন এবং কোয়ান্টাইজ) প্যাটার্ন

StableHLO কোয়ান্টাইজড অপারেশনে ফিউজ (ডি-কোয়ান্টাইজ, ফ্লোটিং-পয়েন্ট অপারেশন এবং কোয়ান্টাইজ) প্যাটার্ন দ্রষ্টব্য: পাসটি আগে থেকে বিদ্যমান কোনো অপশনকে মুছে দেয় না। উদাহরণস্বরূপ, নিম্নলিখিত প্রোগ্রাম

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

হয়ে যাবে:

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 quantized ops থেকে StableHLO আদিম গণিত অপ্সে রূপান্তর করুন।

ইউনিফর্ম কোয়ান্টাইজড টাইপ ব্যবহার করে StableHLO প্রোগ্রামগুলিকে শব্দার্থগতভাবে সমতুল্য পূর্ণসংখ্যা গণিত অপারেশনে রূপান্তর করুন।

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

হয়ে যাবে:

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

কোয়ান্টাইজড স্টেবলএইচএলও অপারেশনকে (ডি-কোয়ান্টাইজ, ফ্লোটিং-পয়েন্ট অপারেশন এবং কোয়ান্টাইজ) প্যাটার্নে পচন।

ইউনিফর্ম কোয়ান্টাইজ/ডিকুয়ান্টাইজ অপারেশন ব্যবহার করে স্টেবলএইচএলও কোয়ান্টাইজড প্রোগ্রামগুলি পচন করা। উদাহরণস্বরূপ, নিম্নলিখিত প্রোগ্রাম

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

হয়ে যাবে:

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 থেকে VHLO কে বৈধ করুন।

-stablehlo-refine-arguments

প্রধান ফাংশনের আর্গুমেন্ট আকারগুলিকে পরিমার্জিত করে।

ইনপুট টাইপ স্বাক্ষর ব্যবহার করে প্রধান ফাংশনের আর্গুমেন্ট পরিবর্তন করে। শেপ রিফাইনমেন্ট চালানোর আগে IR বৈধ রাখতে custom_call @stablehlo.shape_refinement_operand_wrapper-এ আর্গুমেন্টগুলি মোড়ানো হয়।

পরিশোধিত প্রকারের একটি তালিকা নির্দিষ্ট করতে refinedTypesOption ব্যবহার করা যেতে পারে। এটিকে MLIR-এ --types='tensor<...>,tensor<...>' দিয়ে নির্দিষ্ট করা যেতে পারে, অথবা পাস তৈরি পদ্ধতিতে পাস করা যেতে পারে। পরিমার্জন প্রকারের তালিকাকে অবশ্যই পরিমার্জিত main পদ্ধতিতে প্রতিটি আর্গুমেন্টের ধরন উল্লেখ করতে হবে।

অপশন

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

-stablehlo-refine-shapes

একটি StableHLO প্রোগ্রাম জুড়ে আকার পরিমার্জন করে।

একটি StableHLO প্রোগ্রামের মধ্য দিয়ে হেঁটে যায় অপ্সের মধ্যে আকার পরিমার্জন করে।

এই পাসের জন্য ফ্ল্যাগশিপ ব্যবহারের ক্ষেত্রে গতিশীল-আকৃতির প্রোগ্রামগুলিকে স্ট্যাটিক আকারে বিশেষায়িত করা হচ্ছে। যদি একটি গতিশীল-আকৃতির StableHLO প্রোগ্রামের সঠিক কাঠামো থাকে, তাহলে এর আর্গুমেন্ট প্রকারগুলিকে গতিশীল আকার থেকে স্থির আকারে আপডেট করা এবং এই পাসটি চালানোর ফলে পুরো প্রোগ্রাম জুড়ে স্ট্যাটিক আকারগুলি প্রচারিত হবে।

-vhlo-legalize-to-stablehlo

VHLO-কে StableHLO-তে বৈধ করুন।

-vhlo-to-version

VHLO এর সংস্করণগুলির মধ্যে রূপান্তর করুন।

অপশন

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

-chlo-legalize-to-stablehlo

CHLO ops ফ্লো থেকে StableHLO এবং Shape ops এ বৈধ করে

-shape-legalize-to-stablehlo

StableHLO-তে আকৃতি-সম্পর্কিত অপারেশনগুলিকে বৈধ করুন।

একটি পরীক্ষামূলক পাস যা আকৃতি-সম্পর্কিত অপারেশনগুলিকে StableHLO অপ্সকে বৈধ করে।

একটি ঐচ্ছিক পাসের মাধ্যমে আকৃতি এবং ডেটা কম্পিউটেশন একত্রে আনার ফলে StableHLO ইকোসিস্টেমের পক্ষে সম্ভাব্যভাবে কম্পাইলেশন পাইপলাইনগুলিকে লিভারেজ করা সম্ভব হবে যা StableHLO ক্রিয়াকলাপগুলিকে গতিশীলতার মডেল করতে ব্যবহার করে৷

-stablehlo-aggressive-folder

Folds StableHLO অপারেশন

অপশন

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

-stablehlo-aggressive-simplification

StableHLO অপারেশনকে ক্যানোনিকালাইজ করে

-stablehlo-canonicalize-dynamism

গতিশীল StableHLO অপ্সকে স্ট্যাটিক অপস-এ ক্যানোনিকালাইজ করে।

DynamicReshapeOp-এর মতো গতিশীল StableHLO ops-কে ReshapeOp-এর মতো সংশ্লিষ্ট স্ট্যাটিক কাউন্টারপার্টের সাথে প্রতিস্থাপন করে যদি এই অপ্সের সমস্ত গতিশীল উপাদান প্রকৃতপক্ষে ধ্রুবক থাকে।

উদাহরণস্বরূপ, যদি DynamicReshapeOp-এর output_shape অপারেন্ড একটি ধ্রুবক মান হয়, তাহলে অপারেশনটি ReshapeOp-এ রূপান্তরিত হতে পারে।

-stablehlo-convert-to-signless

আইআরকে সাইনলেস পূর্ণসংখ্যাতে রূপান্তরিত করতে পাস করুন।

-stablehlo-create-compatibility-expander

StableHLO অপারেশনের জন্য সামঞ্জস্য বিস্তারকারী তৈরি করুন।

StableHLO ops আপডেট পায় বা সর্বশেষ সংস্করণে নতুন op চালু করা হয়। এই অপ্ট-ইন পাসটি পুরানো StableHLO সংস্করণগুলির সাথে নতুন StableHLO ক্রিয়াকলাপগুলিকে সেই পুরানো সংস্করণগুলির দ্বারা সমর্থিত সমতুল্য ক্রিয়াকলাপে পচিয়ে দিয়ে পিছনের সামঞ্জস্যকে প্রসারিত করে৷

কেন এটি একটি অপ্ট-ইন পাস?

মাঝে মাঝে, StableHLO op বর্ধিতকরণগুলি OpenXLA ইকোসিস্টেমে নির্দিষ্ট সাধারণ প্যাটার্নগুলির পরিচালনাকে ব্যাপকভাবে সহজ করার জন্য ব্যবহৃত হয়। এর মধ্যে রয়েছে TanOp-এর মতো জিনিস, যার উচ্চ ফ্রেমওয়ার্ক এবং কম্পাইলার সমর্থন রয়েছে, সেইসাথে সংগ্রহ/স্ক্যাটার ব্যাচিং ডাইমেনশন, যা স্লাইস ব্যবহার করে উপস্থাপন করা যেতে পারে, কিন্তু শার্ডিংকে আরও কঠিন করে তোলে। এই শ্রেণীর নতুন বৈশিষ্ট্যগুলির জন্য, আমরা স্বয়ংক্রিয়ভাবে ডাউনগ্রেড অফার করি না, কারণ এটি পরবর্তী অপ্টিমাইজেশানগুলিতে ব্যবহৃত গুরুত্বপূর্ণ তথ্য ফেলে দিতে পারে। এই পাসটি সম্ভাব্য কম সর্বোত্তম সংকলনের ব্যয়ে সামঞ্জস্যতা সর্বাধিক করার জন্য লক্ষ্য সংস্করণের উপর ভিত্তি করে এই অপ্সগুলিকে প্রসারিত করতে ব্যবহার করা যেতে পারে।

func.func @tan_op_non_complex(%arg0: tensor<4xf64>) -> tensor<4xf64> {
  %1 = stablehlo.tan %arg0 : tensor<4xf64>
  func.return %1 : tensor<4xf64>
}

হয়ে যাবে:

func.func @tan_op_non_complex(%arg0: tensor<4xf64>) -> tensor<4xf64> {
  %0 = stablehlo.sine %arg0 : tensor<4xf64>
  %1 = stablehlo.cosine %arg0 : tensor<4xf64>
  %2 = stablehlo.divide %0, %1 : tensor<4xf64>
  return %2 : tensor<4xf64>
}

অপশন

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

-stablehlo-legalize-composite-to-call

কম্পোজিট অপ্স প্রতিস্থাপন করে তাদের পচন ধরে

কম্পোজিট অপসকে তাদের পচনশীলতার কল দিয়ে প্রতিস্থাপন করে, যেমন নিচেরটি:

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

হয়ে যাবে:

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

"ব্যতীত" পতাকা ব্যবহার করে এই রূপান্তর থেকে কম্পোজিটের একটি উপসেট বাদ দেওয়া যেতে পারে, যেমন:

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

অপশন

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

-stablehlo-legalize-deprecated-ops

ভাল-সমর্থিত অপ্স থেকে অবচয়িত অপ্সকে বৈধ করুন।

StableHLO v1.0 Opset Deprecations RFC (#2283) বেশ কিছু অপ্রয়োজনীয় অপস অপসারণের প্রস্তাব করেছে। এই পাস বিভিন্ন সংকলন পাইপলাইনে এই অপ অপসারণের প্রভাবকে তাদের দীর্ঘমেয়াদী সমর্থিত প্রতিপক্ষের কাছে বৈধ করে মূল্যায়ন করতে সাহায্য করে।

অপশন

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

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

StableHLO কোয়ান্টাইজড অপারেশনে ফিউজ (ডি-কোয়ান্টাইজ, ফ্লোটিং-পয়েন্ট অপারেশন এবং কোয়ান্টাইজ) প্যাটার্ন

StableHLO কোয়ান্টাইজড অপারেশনে ফিউজ (ডি-কোয়ান্টাইজ, ফ্লোটিং-পয়েন্ট অপারেশন এবং কোয়ান্টাইজ) প্যাটার্ন দ্রষ্টব্য: পাসটি আগে থেকে বিদ্যমান কোনো অপশনকে মুছে দেয় না। উদাহরণস্বরূপ, নিম্নলিখিত প্রোগ্রাম

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

হয়ে যাবে:

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 quantized ops থেকে StableHLO আদিম গণিত অপ্সে রূপান্তর করুন।

ইউনিফর্ম কোয়ান্টাইজড টাইপ ব্যবহার করে StableHLO প্রোগ্রামগুলিকে শব্দার্থগতভাবে সমতুল্য পূর্ণসংখ্যা গণিত অপারেশনে রূপান্তর করুন।

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

হয়ে যাবে:

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

কোয়ান্টাইজড স্টেবলএইচএলও অপারেশনকে (ডি-কোয়ান্টাইজ, ফ্লোটিং-পয়েন্ট অপারেশন এবং কোয়ান্টাইজ) প্যাটার্নে পচন।

ইউনিফর্ম কোয়ান্টাইজ/ডিকুয়ান্টাইজ অপারেশন ব্যবহার করে স্টেবলএইচএলও কোয়ান্টাইজড প্রোগ্রামগুলি পচন করা। উদাহরণস্বরূপ, নিম্নলিখিত প্রোগ্রাম

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

হয়ে যাবে:

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 থেকে VHLO কে বৈধ করুন।

-stablehlo-refine-arguments

প্রধান ফাংশনের আর্গুমেন্ট আকারগুলিকে পরিমার্জিত করে।

ইনপুট টাইপ স্বাক্ষর ব্যবহার করে প্রধান ফাংশনের আর্গুমেন্ট পরিবর্তন করে। শেপ রিফাইনমেন্ট চালানোর আগে IR বৈধ রাখতে custom_call @stablehlo.shape_refinement_operand_wrapper-এ আর্গুমেন্টগুলি মোড়ানো হয়।

পরিশোধিত প্রকারের একটি তালিকা নির্দিষ্ট করতে refinedTypesOption ব্যবহার করা যেতে পারে। এটিকে MLIR-এ --types='tensor<...>,tensor<...>' দিয়ে নির্দিষ্ট করা যেতে পারে, অথবা পাস তৈরি পদ্ধতিতে পাস করা যেতে পারে। পরিমার্জন প্রকারের তালিকাকে অবশ্যই পরিমার্জিত main পদ্ধতিতে প্রতিটি আর্গুমেন্টের ধরন উল্লেখ করতে হবে।

অপশন

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

-stablehlo-refine-shapes

একটি StableHLO প্রোগ্রাম জুড়ে আকার পরিমার্জন করে।

একটি StableHLO প্রোগ্রামের মধ্য দিয়ে হেঁটে যায় অপ্সের মধ্যে আকার পরিমার্জন করে।

এই পাসের জন্য ফ্ল্যাগশিপ ব্যবহারের ক্ষেত্রে গতিশীল-আকৃতির প্রোগ্রামগুলিকে স্ট্যাটিক আকারে বিশেষায়িত করা হচ্ছে। যদি একটি গতিশীল-আকৃতির StableHLO প্রোগ্রামের সঠিক কাঠামো থাকে, তাহলে এর আর্গুমেন্ট প্রকারগুলিকে গতিশীল আকার থেকে স্থির আকারে আপডেট করা এবং এই পাসটি চালানোর ফলে পুরো প্রোগ্রাম জুড়ে স্ট্যাটিক আকারগুলি প্রচারিত হবে।

-vhlo-legalize-to-stablehlo

VHLO-কে StableHLO-তে বৈধ করুন।

-vhlo-to-version

VHLO এর সংস্করণগুলির মধ্যে রূপান্তর করুন।

অপশন

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