Operatori TensorFlow selezionati supportati

Operatori principali di TensorFlow

Di seguito è riportato un elenco completo delle operazioni principali di TensorFlow che sono supportato dal runtime LiteRT con la funzionalità Select TensorFlow Ops.

Operatori di testo TensorFlow e FraencePiece

Il seguente TensorFlow testo e Sono supportati gli operatori SentencePiece se utilizzi l'API Python per la conversione e importi queste librerie.

Operatori TF.Text:

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

Operatori FraencePiece:

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

Il seguente snippet mostra come convertire i modelli con gli operatori riportati sopra:

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

Per il runtime, è necessario anche collegare il file TensorFlow Text o SentencePiece nell'app o nel file binario finale.

Operatori definiti dall'utente

Se hai creato il tuo TensorFlow operatori, puoi anche convertire i modelli che li contengono in LiteRT elencando gli operatori richiesti experimental_select_user_tf_ops come segue:

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

Sul lato runtime, è necessario anche collegare la libreria degli operatori nel un'app o un file binario finale.

Aggiungi gli operatori principali di TensorFlow all'elenco consentito.

Se riscontri un caso in cui gli operatori principali di TensorFlow non sono quelli indicati sopra elenco autorizzato, puoi segnalare la richiesta di funzionalità qui con i nomi dei Operatori principali di TensorFlow, non elencati nell'elenco consentito.

Puoi anche creare la tua richiesta di pull dal codice sorgente. Ad esempio, se vuoi aggiungere l'operazione raw_ops.StringToNumber all'elenco di elementi consentiti, tre posti da aggiornare così commit.

(1) Aggiungi il codice sorgente del kernel dell'operatore a portable_extended_ops_group2 CREA UNA regola

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

        ...
    ],
)

Per trovare il file sorgente del kernel dell'operatore pertinente nella tensorflow/core/kernels, puoi cercare la posizione del codice sorgente, che contiene la seguente dichiarazione del kernel con il nome dell'operatore:

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

Se nella directory tensorflow/core/kernels sono presenti file di intestazione, richiesto nel codice sorgente del kernel dell'operatore, devi aggiungere il file nella regola BUILD portable_extended_ops_headers nel seguente modo:

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

        ...
    ],
)

(2) Aggiungi il nome dell'operatore all'elenco degli operatori consentiti.

L'elenco di elementi consentiti è definito nel tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc. TensorFlow Core del nome dell'operatore deve essere elencato per essere consentito tramite Select TF .

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

        ...
    });

Poiché l'elenco riportato sopra è in ordine alfabetico, assicurati di inserire i valori di destinazione nel posto giusto.

(3) Aggiungi il nome dell'operatore a questa pagina della guida.

Per mostrare l'inclusione dell'operatore agli altri sviluppatori, questa pagina della guida deve essere aggiornate. Questa pagina si trova nella 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`
...

Poiché l'elenco riportato sopra è in ordine alfabetico, assicurati di inserire i valori di destinazione nel posto giusto.