Google I/O में ट्यूनिंग के लिए धन्यवाद। मांग पर सभी सत्र देखें मांग पर देखें

समर्थित TensorFlow ऑपरेटरों का चयन करें

TensorFlow कोर ऑपरेटर्स

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

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

यदि आप रूपांतरण के लिए पायथन एपीआई का उपयोग करते हैं और उन पुस्तकालयों को आयात करते हैं, तो निम्नलिखित 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 ऑप जोड़ना चाहते हैं, तो इस कमिट की तरह अपडेट करने के लिए तीन स्थान हैं।

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

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

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