Opérateurs de base de TensorFlow
Voici une liste exhaustive des opérations de base de TensorFlow compatibles avec l'environnement d'exécution LiteRT avec la fonctionnalité "Select TensorFlow Ops".
raw_ops.TokenizerFromLogits
Opérateurs TensorFlow Text et SentencePiece
La requête TensorFlow Texte et Les opérateurs SentencePiece sont acceptés. si vous utilisez l'API Python pour la conversion et que vous importez ces bibliothèques.
Opérateurs TF.Text:
CaseFoldUTF8
ConstrainedSequence
MaxSpanningTree
NormalizeUTF8
NormalizeUTF8WithOffsetsMap
RegexSplitWithOffsets
RougeL
SentenceFragments
SentencepieceOp
SentencepieceTokenizeOp
SentencepieceTokenizeWithOffsetsOp
SentencepieceDetokenizeOp
SentencepieceVocabSizeOp
SplitMergeTokenizeWithOffsets
UnicodeScriptTokenizeWithOffsets
WhitespaceTokenizeWithOffsets
WordpieceTokenizeWithOffsets
Opérateurs SentencePiece:
SentencepieceGetPieceSize
SentencepiecePieceToId
SentencepieceIdToPiece
SentencepieceEncodeDense
SentencepieceEncodeSparse
SentencepieceDecode
L'extrait de code suivant montre comment convertir des modèles avec les opérateurs ci-dessus:
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()
Du côté de l'environnement d'exécution, vous devez également associer SentencePiece dans l'application ou le binaire final.
Opérateurs définis par l'utilisateur
Si vous avez créé votre propre modèle TensorFlow
des opérateurs, vous pouvez également convertir
les modèles qui les contiennent dans LiteRT en listant les opérateurs requis dans le
experimental_select_user_tf_ops
comme suit:
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()
Côté environnement d'exécution, vous devez également associer votre bibliothèque d'opérateurs l'application finale ou le binaire.
Ajoutez les principaux opérateurs TensorFlow à la liste d'autorisation.
Si les opérateurs de base TensorFlow ne figurent pas dans la liste ci-dessus liste d'autorisation, vous pouvez signaler la demande de fonctionnalité sur cette page. Opérateurs de base TensorFlow, non répertoriés dans la liste des opérateurs de base.
Vous pouvez également créer votre propre demande d'extraction à partir du code source. Par exemple, si
vous souhaitez ajouter l'opération raw_ops.StringToNumber
à la liste des valeurs autorisées,
trois endroits à mettre à jour comme ceci
commit.
(1) Ajoutez le code source du noyau de l'opérateur à portable_extended_ops_group2
.
CRÉER.
filegroup(
name = "portable_extended_ops_group2",
srcs = [
...
+ "string_to_number_op.cc",
...
],
)
Pour trouver le fichier source du noyau de l'opérateur approprié sous le
tensorflow/core/kernels
, vous pouvez rechercher l'emplacement du code source,
qui contient la déclaration de noyau suivante avec le nom d'opérateur:
REGISTER_KERNEL_BUILDER(Name("StringToNumber") \
.Device(DEVICE_CPU) \
.TypeConstraint<type>("out_type"), \
StringToNumberOp<type>)
S'il existe des fichiers d'en-tête dans le répertoire tensorflow/core/kernels
,
dans le code source du noyau de l'opérateur, vous devez ajouter le fichier d'en-tête
dans la règle CRÉER portable_extended_ops_headers
comme suit:
filegroup(
name = "portable_extended_ops_headers",
srcs = [
...
+ "string_util.h",
...
],
)
(2) Ajoutez le nom de l'opérateur à la liste des opérateurs autorisés.
La liste d'autorisation est définie
tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc
TensorFlow Core
Le nom de l'opérateur doit être répertorié afin d'être autorisé via l'instruction TF SELECT
.
static const std::set<std::string>* allowlisted_flex_ops =
new std::set<std::string>({
...
+ "StringToNumber",
...
});
La liste ci-dessus étant triée dans l'ordre alphabétique, elle veille à placer au bon endroit.
(3) Ajoutez le nom de l'opérateur à cette page de guide.
Pour montrer aux autres développeurs l'inclusion de l'opérateur, cette page de guide doit
également à jour. Cette page se trouve à l'adresse
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`
...
La liste ci-dessus étant triée dans l'ordre alphabétique, elle veille à placer au bon endroit.