সমর্থিত টেনসরফ্লো অপারেটর নির্বাচন করুন

TensorFlow কোর অপারেটর

নিম্নে TensorFlow কোর অপারেশনগুলির একটি সম্পূর্ণ তালিকা রয়েছে যা সিলেক্ট টেনসরফ্লো অপস বৈশিষ্ট্য সহ LiteRT রানটাইম দ্বারা সমর্থিত।

টেনসরফ্লো টেক্সট এবং সেন্টেন্সপিস অপারেটর

আপনি যদি রূপান্তরের জন্য Python API ব্যবহার করেন এবং সেই লাইব্রেরিগুলি আমদানি করেন তাহলে নিম্নলিখিত TensorFlow টেক্সট এবং SentencePiece অপারেটরগুলি সমর্থিত।

TF. টেক্সট অপারেটর:

  • CaseFoldUTF8
  • ConstrainedSequence
  • MaxSpanningTree
  • NormalizeUTF8
  • NormalizeUTF8WithOffsetsMap
  • RegexSplitWithOffsets
  • RougeL
  • SentenceFragments
  • SentencepieceOp
  • SentencepieceTokenizeOp
  • SentencepieceTokenizeWithOffsetsOp
  • SentencepieceDetokenizeOp
  • SentencepieceVocabSizeOp
  • SplitMergeTokenizeWithOffsets
  • UnicodeScriptTokenizeWithOffsets
  • WhitespaceTokenizeWithOffsets
  • WordpieceTokenizeWithOffsets

সেন্টেন্সপিস অপারেটর:

  • SentencepieceGetPieceSize
  • SentencepiecePieceToId
  • SentencepieceIdToPiece
  • SentencepieceEncodeDense
  • SentencepieceEncodeSparse
  • SentencepieceDecode

নিম্নলিখিত স্নিপেটটি উপরের অপারেটরগুলির সাথে মডেলগুলিকে কীভাবে রূপান্তর করতে হয় তা দেখায়:

import tensorflow as tf
# These imports are required to load operators' definition.
import tensorflow_text as tf_text
import sentencepiece as spm

converter = tf.lite.TFLiteConverter.from_keras_model(your_model)
converter.target_spec.supported_ops = [
  tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.SELECT_TF_OPS
]
model_data = converter.convert()

রানটাইমের দিকে, টেনসরফ্লো টেক্সট বা সেন্টেন্সপিস লাইব্রেরিকে চূড়ান্ত অ্যাপ বা বাইনারিতে লিঙ্ক করতে হবে।

ব্যবহারকারীর সংজ্ঞায়িত অপারেটর

আপনি যদি নিজের TensorFlow অপারেটর তৈরি করেন , তাহলে আপনি নিম্নলিখিত হিসাবে experimental_select_user_tf_ops এ প্রয়োজনীয় অপারেটর তালিকাবদ্ধ করে সেগুলি ধারণকারী মডেলগুলিকে LiteRT-তে রূপান্তর করতে পারেন:

import tensorflow as tf

ops_module = tf.load_op_library('./your_ops_library.so')

converter = tf.lite.TFLiteConverter.from_saved_model(your_model)
converter.target_spec.supported_ops = [
  tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.SELECT_TF_OPS
]
converter.target_spec.experimental_select_user_tf_ops = [
    'your_op_name1',
    'your_op_name2'
]
model_data = converter.convert()

রানটাইমের দিকে, আপনার অপারেটর লাইব্রেরিকে চূড়ান্ত অ্যাপ বা বাইনারিতে লিঙ্ক করতে হবে।

অনুমোদিত তালিকায় TensorFlow কোর অপারেটর যোগ করুন।

আপনি যদি এমন ক্ষেত্রে আঘাত করেন যেখানে TensorFlow কোর অপারেটরগুলি উপরের অনুমোদিত তালিকায় নেই, তাহলে আপনি এখানে TensorFlow কোর অপারেটরদের নাম সহ বৈশিষ্ট্য অনুরোধের প্রতিবেদন করতে পারেন, অনুমোদিত তালিকায় তালিকাভুক্ত নয়৷

আপনি সোর্স কোড থেকে নিজের পুল অনুরোধও তৈরি করতে পারেন। উদাহরণস্বরূপ, যদি আপনি অনুমোদিত তালিকায় raw_ops.StringToNumber op যোগ করতে চান, তাহলে এই প্রতিশ্রুতির মতো আপডেট করার জন্য তিনটি জায়গা রয়েছে।

(1) portable_extended_ops_group2 BUILD নিয়মে অপারেটর কার্নেল সোর্স কোড যোগ করুন।

filegroup(
    name = "portable_extended_ops_group2",
    srcs = [
        ...
+   "string_to_number_op.cc",

        ...
    ],
)

tensorflow/core/kernels ডিরেক্টরির অধীনে প্রাসঙ্গিক অপারেটর কার্নেল সোর্স ফাইলটি খুঁজে পেতে, আপনি সোর্স কোড অবস্থান অনুসন্ধান করতে পারেন, যেখানে অপারেটর নামের সাথে নিম্নলিখিত কার্নেল ঘোষণা রয়েছে:

REGISTER_KERNEL_BUILDER(Name("StringToNumber")                 \
                            .Device(DEVICE_CPU)                \
                            .TypeConstraint<type>("out_type"), \
                        StringToNumberOp<type>)

অপারেটর কার্নেল সোর্স কোডে প্রয়োজনীয় tensorflow/core/kernels ডিরেক্টরির অধীনে কোনো হেডার ফাইল থাকলে, আপনাকে portable_extended_ops_headers BUILD নিয়মে হেডার ফাইল যোগ করতে হবে:

filegroup(
    name = "portable_extended_ops_headers",
    srcs = [
        ...
+   "string_util.h",

        ...
    ],
)

(2) অনুমোদিত তালিকায় অপারেটরের নাম যোগ করুন।

অনুমোদিত তালিকা tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc এ সংজ্ঞায়িত করা হয়েছে। TensorFlow কোর অপারেটরের নামটি সিলেক্ট TF বিকল্পের মাধ্যমে অনুমোদিত করার জন্য তালিকাভুক্ত করা প্রয়োজন।

static const std::set<std::string>* allowlisted_flex_ops =
    new std::set<std::string>({
        ...
+   "StringToNumber",

        ...
    });

যেহেতু উপরের তালিকাটি বর্ণানুক্রমিকভাবে সাজানো হয়েছে, তাই এটি সঠিক জায়গায় নামটি স্থাপন করা নিশ্চিত করে।

(3) এই গাইড পৃষ্ঠায় অপারেটরের নাম যোগ করুন।

অন্যান্য ডেভেলপারদের অপারেটর অন্তর্ভুক্তি দেখানোর জন্য, এই গাইড পৃষ্ঠাটিও আপডেট করা উচিত। এই পৃষ্ঠাটি tensorflow/lite/g3doc/guide/op_select_allowlist.md এ অবস্থিত।

## TensorFlow core operators

The following is an exhaustive list of TensorFlow core operations that are
supported by LiteRT runtime with the Select TensorFlow Ops feature.

...
+*   `raw_ops.StringToNumber`
...

যেহেতু উপরের তালিকাটি বর্ণানুক্রমিকভাবে সাজানো হয়েছে, তাই এটি সঠিক জায়গায় নামটি স্থাপন করা নিশ্চিত করে।