समर्थित चयनित TensorFlow ऑपरेटर

TensorFlow कोर ऑपरेटर

निम्नलिखित TensorFlow कोर संचालन की एक विस्तृत सूची है जो TensorFlow Lite रनटाइम द्वारा सेलेक्ट TensorFlow Ops सुविधा के साथ समर्थित है।

TensorFlow टेक्स्ट और सेंटेंसपीस ऑपरेटर

यदि आप रूपांतरण के लिए पायथन एपीआई का उपयोग करते हैं और उन पुस्तकालयों को आयात करते हैं तो निम्नलिखित टेन्सरफ्लो टेक्स्ट और सेंटेंसपीस ऑपरेटर समर्थित हैं।

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 टेक्स्ट या सेंटेंसपीस लाइब्रेरी को अंतिम ऐप या बाइनरी में लिंक करना भी आवश्यक है।

उपयोगकर्ता द्वारा परिभाषित ऑपरेटर

यदि आपने अपना स्वयं का TensorFlow ऑपरेटर बनाया है , तो आप निम्न प्रकार से experimental_select_user_tf_ops में आवश्यक ऑपरेटरों को सूचीबद्ध करके उनसे युक्त मॉडल को TensorFlow Lite में परिवर्तित कर सकते हैं:

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 2 बिल्ड नियम में जोड़ें।

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 बिल्ड नियम में निम्नानुसार जोड़ना होगा:

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

        ...
    ],
)

(2) ऑपरेटर का नाम अनुमत सूची में जोड़ें।

अनुमत सूची को tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc में परिभाषित किया गया है। सेलेक्ट TF विकल्प के माध्यम से अनुमति देने के लिए TensorFlow कोर ऑपरेटर नाम को सूचीबद्ध करना आवश्यक है।

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 TensorFlow Lite runtime with the Select TensorFlow Ops feature.

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

चूँकि उपरोक्त सूची वर्णानुक्रम में क्रमबद्ध है, इसलिए यह सुनिश्चित करता है कि नाम सही स्थान पर रखा गया है।