Operator TensorFlow tertentu yang didukung

Operator core TensorFlow

Berikut adalah daftar lengkap operasi inti TensorFlow yang didukung oleh runtime LiteRT dengan fitur Select TensorFlow Ops.

Operator TensorFlow Text dan SentencePiece

TensorFlow berikut Teks dan Operator SentencePiece didukung jika Anda menggunakan Python API untuk konversi dan mengimpor library tersebut.

Operator TF.Text:

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

Operator sentencePiece:

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

Cuplikan berikut menunjukkan cara mengonversi model dengan operator di atas:

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

Di sisi runtime, Anda juga harus menautkan TensorFlow Text atau Library sentencePiece ke dalam aplikasi final atau biner.

Operator yang ditentukan pengguna

Jika Anda membuat TensorFlow sendiri operator tertentu, Anda juga dapat mengonversi berisi model yang memuatnya ke LiteRT dengan mencantumkan operator yang diperlukan di experimental_select_user_tf_ops sebagai berikut:

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

Di sisi runtime, Anda juga perlu menautkan library operator ke aplikasi final atau biner.

Tambahkan operator inti TensorFlow ke daftar yang diizinkan.

Jika Anda mengalami kasus jika operator inti TensorFlow tidak termasuk di atas list yang diizinkan, Anda dapat melaporkan permintaan fitur di sini dengan nama-nama Operator inti TensorFlow, tidak tercantum dalam daftar yang diizinkan.

Anda juga dapat membuat permintaan pull Anda sendiri dari kode sumber. Misalnya, jika Anda ingin menambahkan operasi raw_ops.StringToNumber dalam daftar yang diizinkan, ada tiga tempat untuk memperbarui seperti ini commit.

(1) Tambahkan kode sumber kernel operator ke portable_extended_ops_group2 BUILD.

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

        ...
    ],
)

Untuk menemukan file sumber {i>kernel<i} operator yang relevan di bawah tensorflow/core/kernels, Anda dapat menelusuri lokasi kode sumber, yang berisi deklarasi kernel berikut dengan nama operator:

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

Jika ada file header di bawah direktori tensorflow/core/kernels, diperlukan dalam kode sumber {i>kernel<i} operator, Anda perlu menambahkan file ke dalam aturan portable_extended_ops_headers BUILD sebagai berikut:

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

        ...
    ],
)

(2) Tambahkan nama operator ke daftar yang diizinkan.

Daftar yang diizinkan didefinisikan dalam tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc. TensorFlow Core nama operator harus dicantumkan agar diizinkan melalui Select TF sebelumnya.

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

        ...
    });

Karena daftar di atas diurutkan dalam urutan abjad, pastikan Anda menempatkan di tempat yang tepat.

(3) Tambahkan nama operator ke halaman panduan ini.

Untuk menunjukkan penyertaan operator kepada developer lain, halaman panduan ini harus diperbarui juga. Halaman ini terletak pada 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`
...

Karena daftar di atas diurutkan dalam urutan abjad, pastikan Anda menempatkan di tempat yang tepat.