Operatorët kryesorë të TensorFlow
Më poshtë është një listë shteruese e operacioneve thelbësore të TensorFlow që mbështeten nga koha e ekzekutimit të LiteRT me veçorinë Select TensorFlow Ops.
raw_ops.TokenizerFromLogits
Operatorët TensorFlow Text dhe SentencePiece
Operatorët e mëposhtëm TensorFlow Text dhe SentencePiece mbështeten nëse përdorni Python API për konvertimin dhe importimin e këtyre bibliotekave.
TF.Operatorët e tekstit:
-
CaseFoldUTF8
-
ConstrainedSequence
-
MaxSpanningTree
-
NormalizeUTF8
-
NormalizeUTF8WithOffsetsMap
-
RegexSplitWithOffsets
-
RougeL
-
SentenceFragments
-
SentencepieceOp
-
SentencepieceTokenizeOp
-
SentencepieceTokenizeWithOffsetsOp
-
SentencepieceDetokenizeOp
-
SentencepieceVocabSizeOp
-
SplitMergeTokenizeWithOffsets
-
UnicodeScriptTokenizeWithOffsets
-
WhitespaceTokenizeWithOffsets
-
WordpieceTokenizeWithOffsets
Operatorët SentencePiece:
-
SentencepieceGetPieceSize
-
SentencepiecePieceToId
-
SentencepieceIdToPiece
-
SentencepieceEncodeDense
-
SentencepieceEncodeSparse
-
SentencepieceDecode
Snippeti i mëposhtëm tregon se si të konvertohen modelet me operatorët e mësipërm:
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()
Në anën e kohës së funksionimit, kërkohet gjithashtu të lidhni bibliotekën TensorFlow Text ose SentencePiece në aplikacionin përfundimtar ose binar.
Operatorët e përcaktuar nga përdoruesi
Nëse keni krijuar operatorët tuaj TensorFlow , ju gjithashtu mund t'i konvertoni modelet që i përmbajnë në LiteRT duke renditur operatorët e kërkuar në experimental_select_user_tf_ops
si më poshtë:
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()
Në anën e kohës së funksionimit, kërkohet gjithashtu të lidhni bibliotekën tuaj të operatorëve në aplikacionin përfundimtar ose binar.
Shtoni operatorët kryesorë TensorFlow në listën e lejuar.
Nëse e goditni rastin kur operatorët kryesorë TensorFlow nuk janë në listën e mësipërme të lejuar, mund ta raportoni kërkesën e veçorive këtu me emrat e operatorëve kryesorë TensorFlow, që nuk janë të listuar në listën e lejuar.
Ju gjithashtu mund të krijoni kërkesën tuaj për tërheqje nga kodi burimor. Për shembull, nëse doni të shtoni op raw_ops.StringToNumber
në listën e lejuar, ka tre vende për të përditësuar si ky commit .
(1) Shtoni kodin burimor të kernelit të operatorit te rregulli portable_extended_ops_group2
BUILD.
filegroup(
name = "portable_extended_ops_group2",
srcs = [
...
+ "string_to_number_op.cc",
...
],
)
Për të gjetur skedarin burimor përkatës të kernelit të operatorit nën drejtorinë tensorflow/core/kernels
, mund të kërkoni vendndodhjen e kodit burimor, i cili përmban deklaratën e mëposhtme të kernelit me emrin e operatorit:
REGISTER_KERNEL_BUILDER(Name("StringToNumber") \
.Device(DEVICE_CPU) \
.TypeConstraint<type>("out_type"), \
StringToNumberOp<type>)
Nëse ka ndonjë skedar header nën direktorinë tensorflow/core/kernels
, të kërkuar në kodin burimor të kernelit të operatorit, ju duhet të shtoni skedarin e kokës në rregullin portable_extended_ops_headers
BUILD si më poshtë:
filegroup(
name = "portable_extended_ops_headers",
srcs = [
...
+ "string_util.h",
...
],
)
(2) Shtoni emrin e operatorit në listën e lejuar.
Lista e lejuar përcaktohet në tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc
. Emri i operatorit kryesor TensorFlow duhet të renditet në mënyrë që të lejohet përmes opsionit Select TF.
static const std::set<std::string>* allowlisted_flex_ops =
new std::set<std::string>({
...
+ "StringToNumber",
...
});
Meqenëse lista e mësipërme është renditur sipas rendit alfabetik, sigurohet që të vendoset emri në vendin e duhur.
(3) Shtoni emrin e operatorit në këtë faqe udhëzuese.
Për të treguar përfshirjen e operatorit te zhvilluesit e tjerë, kjo faqe udhëzuese duhet gjithashtu të përditësohet. Kjo faqe ndodhet në 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`
...
Meqenëse lista e mësipërme është renditur sipas rendit alfabetik, sigurohet që të vendoset emri në vendin e duhur.