Podstawowe operatory TensorFlow
Poniżej znajdziesz wyczerpującą listę podstawowych operacji TensorFlow, które są obsługiwane przez środowisko wykonawcze LiteRT z funkcją Select TensorFlow Ops.
raw_ops.TokenizerFromLogits
Operatory TensorFlow Text i SentencePiece
Następujący TensorFlow tekst i Obsługiwane są operatory SentencePiece jeśli do konwersji używasz interfejsu Python API, i zaimportuj te biblioteki.
Operatory TF.Text:
CaseFoldUTF8
ConstrainedSequence
MaxSpanningTree
NormalizeUTF8
NormalizeUTF8WithOffsetsMap
RegexSplitWithOffsets
RougeL
SentenceFragments
SentencepieceOp
SentencepieceTokenizeOp
SentencepieceTokenizeWithOffsetsOp
SentencepieceDetokenizeOp
SentencepieceVocabSizeOp
SplitMergeTokenizeWithOffsets
UnicodeScriptTokenizeWithOffsets
WhitespaceTokenizeWithOffsets
WordpieceTokenizeWithOffsets
Operatory SentencePiece:
SentencepieceGetPieceSize
SentencepiecePieceToId
SentencepieceIdToPiece
SentencepieceEncodeDense
SentencepieceEncodeSparse
SentencepieceDecode
Z tego fragmentu kodu dowiesz się, jak konwertować modele przy użyciu powyższych operatorów:
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()
Po stronie środowiska wykonawczego wymagane jest też połączenie z biblioteką tekstu TensorFlow lub z biblioteki SentencePiece do ostatecznej aplikacji lub pliku binarnego.
Operatory zdefiniowane przez użytkownika
Jeśli utworzysz własny TensorFlow
, możesz też skonwertować
zawierające je do LiteRT, umieszczając wymagane operatory w funkcji
experimental_select_user_tf_ops
w następujący sposób:
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()
Od strony środowiska wykonawczego wymagane jest też połączenie biblioteki operatorów z aplikacji lub pliku binarnego.
Dodaj podstawowe operatory TensorFlow do listy dozwolonych.
Jeśli w przypadku zadania, w którym podstawowych operatorów TensorFlow nie ma w powyższym przypadku, listy dozwolonych, możesz zgłosić prośbę o dodanie funkcji. tutaj z nazwami Podstawowe operatory TensorFlow nie są wymienione na liście dozwolonych.
Możesz też utworzyć własne żądanie pull z kodu źródłowego. Na przykład, jeśli
chcesz dodać działanie raw_ops.StringToNumber
do listy dozwolonych, nie ma
3 miejsca do aktualizacji w ten sposób
commit.
(1) Dodaj kod źródłowy jądra operatora do portable_extended_ops_group2
KOMPILUJ regułę.
filegroup(
name = "portable_extended_ops_group2",
srcs = [
...
+ "string_to_number_op.cc",
...
],
)
Aby znaleźć odpowiedni plik źródłowy jądra operatora w pliku
tensorflow/core/kernels
umożliwia wyszukiwanie w lokalizacji kodu źródłowego,
który zawiera następującą deklarację jądra z nazwą operatora:
REGISTER_KERNEL_BUILDER(Name("StringToNumber") \
.Device(DEVICE_CPU) \
.TypeConstraint<type>("out_type"), \
StringToNumberOp<type>)
Jeśli w katalogu tensorflow/core/kernels
znajdują się pliki nagłówka,
wymagane w kodzie źródłowym jądra operatora, musisz dodać plik nagłówka
w regule BUILD portable_extended_ops_headers
w ten sposób:
filegroup(
name = "portable_extended_ops_headers",
srcs = [
...
+ "string_util.h",
...
],
)
(2) Dodaj nazwę operatora do listy dozwolonych.
Lista dozwolonych jest zdefiniowana w
tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc
Podstawy TensorFlow
Nazwa operatora musi być wymieniona, aby można ją było stosować za pośrednictwem pola Select TF
.
static const std::set<std::string>* allowlisted_flex_ops =
new std::set<std::string>({
...
+ "StringToNumber",
...
});
Ponieważ powyższa lista jest posortowana w kolejności alfabetycznej, upewnij się, że we właściwym miejscu.
(3) Dodaj nazwę operatora do tej strony przewodnika.
Aby pokazać innym programistom uwzględnienie operatora, na tej stronie przewodnika
które również zostaną zaktualizowane. Ta strona znajduje się w
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`
...
Ponieważ powyższa lista jest posortowana w kolejności alfabetycznej, upewnij się, że we właściwym miejscu.