Mbështet operatorët Select TensorFlow

Operatorët kryesorë të TensorFlow

Më poshtë është një listë shteruese e operacioneve thelbësore të TensorFlow që mbështeten nga koha e ekzekutimit të LiteRT me veçorinë Select TensorFlow Ops.

Operatorët TensorFlow Text dhe SentencePiece

Operatorët e mëposhtëm TensorFlow Text dhe SentencePiece mbështeten nëse përdorni Python API për konvertimin dhe importimin e këtyre bibliotekave.

TF.Operatorët e tekstit:

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

Operatorët SentencePiece:

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

Snippeti i mëposhtëm tregon se si të konvertohen modelet me operatorët e mësipërm:

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()

Në anën e kohës së funksionimit, kërkohet gjithashtu të lidhni bibliotekën TensorFlow Text ose SentencePiece në aplikacionin përfundimtar ose binar.

Operatorët e përcaktuar nga përdoruesi

Nëse keni krijuar operatorët tuaj TensorFlow , ju gjithashtu mund t'i konvertoni modelet që i përmbajnë në LiteRT duke renditur operatorët e kërkuar në experimental_select_user_tf_ops si më poshtë:

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()

Në anën e kohës së funksionimit, kërkohet gjithashtu të lidhni bibliotekën tuaj të operatorëve në aplikacionin përfundimtar ose binar.

Shtoni operatorët kryesorë TensorFlow në listën e lejuar.

Nëse e goditni rastin kur operatorët kryesorë TensorFlow nuk janë në listën e mësipërme të lejuar, mund ta raportoni kërkesën e veçorive këtu me emrat e operatorëve kryesorë TensorFlow, që nuk janë të listuar në listën e lejuar.

Ju gjithashtu mund të krijoni kërkesën tuaj për tërheqje nga kodi burimor. Për shembull, nëse doni të shtoni op raw_ops.StringToNumber në listën e lejuar, ka tre vende për të përditësuar si ky commit .

(1) Shtoni kodin burimor të kernelit të operatorit te rregulli portable_extended_ops_group2 BUILD.

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

        ...
    ],
)

Për të gjetur skedarin burimor përkatës të kernelit të operatorit nën drejtorinë tensorflow/core/kernels , mund të kërkoni vendndodhjen e kodit burimor, i cili përmban deklaratën e mëposhtme të kernelit me emrin e operatorit:

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

Nëse ka ndonjë skedar header nën direktorinë tensorflow/core/kernels , të kërkuar në kodin burimor të kernelit të operatorit, ju duhet të shtoni skedarin e kokës në rregullin portable_extended_ops_headers BUILD si më poshtë:

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

        ...
    ],
)

(2) Shtoni emrin e operatorit në listën e lejuar.

Lista e lejuar përcaktohet në tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc . Emri i operatorit kryesor TensorFlow duhet të renditet në mënyrë që të lejohet përmes opsionit Select TF.

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

        ...
    });

Meqenëse lista e mësipërme është renditur sipas rendit alfabetik, sigurohet që të vendoset emri në vendin e duhur.

(3) Shtoni emrin e operatorit në këtë faqe udhëzuese.

Për të treguar përfshirjen e operatorit te zhvilluesit e tjerë, kjo faqe udhëzuese duhet gjithashtu të përditësohet. Kjo faqe ndodhet në 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`
...

Meqenëse lista e mësipërme është renditur sipas rendit alfabetik, sigurohet që të vendoset emri në vendin e duhur.