TensorFlow のコア演算子
次のリストは、TensorFlow のコアオペレーションである LiteRT ランタイムでサポートされている必要があります。
raw_ops.TokenizerFromLogits
TensorFlow の Text 演算子と SentencePiece 演算子
次の TensorFlow は テキスト、 SentencePiece 演算子はサポートされている (Python API を使用して変換し、これらのライブラリをインポートする場合)。
TF.Text 演算子:
CaseFoldUTF8
ConstrainedSequence
MaxSpanningTree
NormalizeUTF8
NormalizeUTF8WithOffsetsMap
RegexSplitWithOffsets
RougeL
SentenceFragments
SentencepieceOp
SentencepieceTokenizeOp
SentencepieceTokenizeWithOffsetsOp
SentencepieceDetokenizeOp
SentencepieceVocabSizeOp
SplitMergeTokenizeWithOffsets
UnicodeScriptTokenizeWithOffsets
WhitespaceTokenizeWithOffsets
WordpieceTokenizeWithOffsets
SentencePiece 演算子:
SentencepieceGetPieceSize
SentencepiecePieceToId
SentencepieceIdToPiece
SentencepieceEncodeDense
SentencepieceEncodeSparse
SentencepieceDecode
次のスニペットは、上記の演算子を使用してモデルを変換する方法を示しています。
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()
ランタイム側では、TensorFlow Text または SentencePiece ライブラリを最終的なアプリまたはバイナリに組み込めます。
ユーザー定義の演算子
独自の TensorFlow を
演算子を使用すると、
必要な演算子をリスト化して、LiteRT にそれらのモデルを含む
experimental_select_user_tf_ops
を次のように指定します。
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()
ランタイム側では、オペレーター ライブラリを ダウンロードします。
TensorFlow コア演算子を許可リストに追加します。
TensorFlow のコア演算子が上記にない場合 許可リストのみ取得し、機能リクエストを 名前はこちら 許可リストに記載されていない TensorFlow コア演算子。
ソースコードから独自の pull リクエストを作成することもできます。たとえば
許可リストに raw_ops.StringToNumber
演算を追加する場合は、
このように更新する場所が 3 件あります
commit。
(1)オペレーター カーネルのソースコードを portable_extended_ops_group2
に追加する
BUILD ルール。
filegroup(
name = "portable_extended_ops_group2",
srcs = [
...
+ "string_to_number_op.cc",
...
],
)
関連するオペレーター カーネル ソースファイルを
tensorflow/core/kernels
ディレクトリで、ソースコードの場所を検索できます。
このファイルには、次のようにカーネル宣言とオペレーター名が含まれています。
REGISTER_KERNEL_BUILDER(Name("StringToNumber") \
.Device(DEVICE_CPU) \
.TypeConstraint<type>("out_type"), \
StringToNumberOp<type>)
tensorflow/core/kernels
ディレクトリにヘッダー ファイルがある場合は、
オペレータ カーネルのソースコードに必要な場合は、ヘッダー ファイルを
次のように portable_extended_ops_headers
BUILD ルールに組み込みます。
filegroup(
name = "portable_extended_ops_headers",
srcs = [
...
+ "string_util.h",
...
],
)
(2)演算子名を許可リストに追加する。
許可リストは、
tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc
。TensorFlow コア
Select TF で許可されるようにするには、演算子名をリストする必要があります。
選択します。
static const std::set<std::string>* allowlisted_flex_ops =
new std::set<std::string>({
...
+ "StringToNumber",
...
});
上記のリストはアルファベット順であるため、 見てみましょう。
(3)このガイドページに事業者名を追加します。
インクルードしているオペレーターを他のデベロッパーに示すには、このガイドのページを
更新されます。このページの URL:
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`
...
上記のリストはアルファベット順であるため、 見てみましょう。