Unterstützte TensorFlow-Operatoren auswählen

TensorFlow-Kernoperatoren

Nachfolgend finden Sie eine vollständige Liste der TensorFlow-Kernvorgänge, die von der LiteRT-Laufzeit mit dem Feature „Select TensorFlow Ops“ unterstützt.

TensorFlow-Operatoren für Text und SentencePiece

Die folgende TensorFlow- Text und Die Operatoren SentencePiece werden unterstützt wenn Sie die Python API für die Konvertierung verwenden und diese Bibliotheken importieren.

TF.Text-Operatoren:

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

SentencePiece-Operatoren:

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

Das folgende Snippet zeigt, wie Modelle mit den oben genannten Operatoren konvertiert werden:

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

Auf der Laufzeitseite muss außerdem der TensorFlow-Text oder SentencePiece-Bibliothek in die endgültige App oder Binärdatei zu importieren.

Vom Nutzer definierte Operatoren

Wenn Sie eigenes TensorFlow erstellt haben Operatoren können Sie auch die sie in LiteRT enthalten, indem die erforderlichen Operatoren in der experimental_select_user_tf_ops wie folgt:

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

Auf der Laufzeitseite ist es außerdem erforderlich, Ihre Operatorbibliothek mit dem der finalen App oder des Binärprogramms.

TensorFlow-Kernoperatoren in die Zulassungsliste aufnehmen.

Wenn die TensorFlow-Kernoperatoren nicht oben aufgeführt sind, Zulassungsliste verwenden, können Sie die Funktionsanfrage hier durch die Namen der TensorFlow-Kernoperatoren, die nicht in der zulässigen Liste aufgeführt sind.

Sie können auch eine eigene Pull-Anfrage aus dem Quellcode erstellen. Wenn beispielsweise Sie den Vorgang raw_ops.StringToNumber in die Liste der zulässigen Vorgänge aufnehmen möchten, gibt es drei Orte wie diese aktualisieren, commit übergeben.

(1) Fügen Sie den Quellcode des Operator-Kernels in portable_extended_ops_group2 ein. BUILD-Regel erstellen.

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

        ...
    ],
)

Um die relevante Operator-Kernel-Quelldatei unter der tensorflow/core/kernels-Verzeichnis haben, können Sie nach dem Speicherort des Quellcodes suchen. Sie enthält die folgende Kernel-Deklaration mit dem Operatornamen:

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

Wenn sich im Verzeichnis tensorflow/core/kernels Headerdateien befinden, im Operator-Kernel-Quellcode erforderlich ist, müssen Sie die Header-Datei so in die Build-Regel portable_extended_ops_headers ein:

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

        ...
    ],
)

(2) Fügen Sie den Namen des Operators in die Liste der zulässigen Operatoren ein.

Die Liste der zulässigen Elemente wird in der tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc TensorFlow Core Der Operator muss aufgelistet werden, damit er über die Option „Select TF“ zugelassen wird Option.

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

        ...
    });

Da die obige Liste in alphabetischer Reihenfolge sortiert ist, wird darauf geachtet, an der richtigen Stelle.

(3) Füge den Namen des Anbieters auf dieser Anleitungsseite ein.

Um den anderen Entwicklern zu zeigen, wie die Anbieter aufgenommen werden, sollte diese Anleitungsseite ebenfalls aktualisiert werden. Diese Seite befindet sich auf der 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`
...

Da die obige Liste in alphabetischer Reihenfolge sortiert ist, wird darauf geachtet, an der richtigen Stelle.