เข้าร่วม Women in ML Symposium ในวันที่ 7 ธันวาคม ลงทะเบียนตอนนี้

รองรับตัวดำเนินการ Select TensorFlow

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

ตัวดำเนินการหลักของ TensorFlow

ต่อไปนี้คือรายการของการดำเนินการหลักของ TensorFlow ที่ได้รับการสนับสนุนโดยรันไทม์ TensorFlow Lite พร้อมคุณสมบัติ Select TensorFlow Ops

ตัวดำเนินการข้อความและประโยค TensorFlow

รองรับตัวดำเนินการ TensorFlow Text และ SentencePiece หากคุณใช้ Python API สำหรับการแปลงและนำเข้าไลบรารีเหล่านั้น

ตัวดำเนินการ TF.Text:

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

ตัวดำเนินการประโยคPiece:

  • 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 ของคุณเอง คุณยังสามารถแปลงโมเดลที่มีโมเดลเหล่านั้นเป็น TensorFlow Lite โดยแสดงรายการโอเปอเรเตอร์ที่จำเป็นใน 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 op ในรายการที่อนุญาต มีสถานที่สามแห่งให้อัปเดตเช่น 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) เพิ่มชื่อผู้ปฏิบัติงานในหน้าคำแนะนำนี้

หากต้องการแสดงการรวมตัวดำเนินการกับนักพัฒนารายอื่น หน้าคู่มือนี้ควรได้รับการอัปเดตด้วย หน้านี้ตั้งอยู่ที่ 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 TensorFlow Lite runtime with the Select TensorFlow Ops feature.

...
+*   `raw_ops.StringToNumber`
...

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