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.
raw_ops.TokenizerFromLogits
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.