โอเปอเรเตอร์ Select TensorFlow ที่รองรับ

โอเปอเรเตอร์หลักของ TensorFlow

ต่อไปนี้คือรายการการดำเนินการหลักของ TensorFlow อย่างละเอียด รองรับโดยรันไทม์ LiteRT ที่มีฟีเจอร์ Select TensorFlow Ops

โอเปอเรเตอร์ 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 หรือ ไลบรารี 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 ที่ไม่ได้ระบุไว้ในรายการที่อนุญาต

คุณยังสร้างคำขอพุลของคุณเองจากซอร์สโค้ดได้อีกด้วย ตัวอย่างเช่น หาก ที่คุณต้องการเพิ่มการดำเนินการ raw_ops.StringToNumber ในรายการที่อนุญาต สามแห่งที่อัปเดตแบบนี้ commit

(1) เพิ่มซอร์สโค้ดเคอร์เนลของโอเปอเรเตอร์ไปยัง portable_extended_ops_group2 สร้างกฎ

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) เพิ่มชื่อผู้ดำเนินการลงในหน้าคู่มือนี้

ในการแสดงการรวมโอเปอเรเตอร์ให้นักพัฒนาซอฟต์แวร์รายอื่นๆ เห็น หน้าคู่มือนี้ควร ก็ได้รับการอัปเดตด้วยเช่นกัน หน้าเว็บนี้อยู่ที่ 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`
...

เนื่องจากรายการด้านบนมีการจัดเรียงตามลำดับตัวอักษร จึงสามารถวาง ในตำแหน่งที่ถูกต้อง