টেনসরফ্লো টেক্সট অপারেটরকে টেনসরফ্লো লাইটে রূপান্তর করা হচ্ছে

TensorFlow.org-এ দেখুন Google Colab-এ চালান GitHub এ দেখুন নোটবুক ডাউনলোড করুন

ওভারভিউ

মেশিন লার্নিং মডেলগুলি প্রায়শই টেনসরফ্লো লাইট ব্যবহার করে মোবাইল, এমবেডেড, এবং আইওটি ডিভাইসগুলিতে ডেটা গোপনীয়তা উন্নত করতে এবং প্রতিক্রিয়ার সময় কম করে। এই মডেলগুলির প্রায়ই পাঠ্য প্রক্রিয়াকরণ অপারেশনের জন্য সমর্থন প্রয়োজন। TensorFlow পাঠ্য সংস্করণ 2.7 এবং উচ্চতর উন্নত কর্মক্ষমতা প্রদান করে, বাইনারি আকার হ্রাস করে এবং এই পরিবেশে ব্যবহারের জন্য বিশেষভাবে অপ্টিমাইজ করা অপারেশনগুলি প্রদান করে৷

টেক্সট অপারেটর

নিম্নলিখিত টেনসরফ্লো টেক্সট ক্লাসগুলি একটি টেনসরফ্লো লাইট মডেলের মধ্যে থেকে ব্যবহার করা যেতে পারে।

  • FastWordpieceTokenizer
  • WhitespaceTokenizer

মডেল উদাহরণ

pip install -U tensorflow-text
from absl import app
import numpy as np
import tensorflow as tf
import tensorflow_text as tf_text

from tensorflow.lite.python import interpreter

নিম্নলিখিত কোড উদাহরণটি একটি সাধারণ পরীক্ষার মডেল ব্যবহার করে পাইথনে রূপান্তর প্রক্রিয়া এবং ব্যাখ্যা দেখায়। মনে রাখবেন যে আপনি যখন TensorFlow Lite ব্যবহার করছেন তখন মডেলের আউটপুট টিএফ. tf.RaggedTensor অবজেক্ট হতে পারে না। যাইহোক, আপনি একটি tf.RaggedTensor অবজেক্টের উপাদানগুলি ফেরত দিতে পারেন বা এটির to_tensor ফাংশন ব্যবহার করে রূপান্তর করতে পারেন। আরো বিস্তারিত জানার জন্য RaggedTensor গাইড দেখুন।

class TokenizerModel(tf.keras.Model):

  def __init__(self, **kwargs):
    super().__init__(**kwargs)
    self.tokenizer = tf_text.WhitespaceTokenizer()

  @tf.function(input_signature=[
      tf.TensorSpec(shape=[None], dtype=tf.string, name='input')
  ])
  def call(self, input_tensor):
    return { 'tokens': self.tokenizer.tokenize(input_tensor).flat_values }
# Test input data.
input_data = np.array(['Some minds are better kept apart'])

# Define a Keras model.
model = TokenizerModel()

# Perform TensorFlow Text inference.
tf_result = model(tf.constant(input_data))
print('TensorFlow result = ', tf_result['tokens'])
TensorFlow result =  tf.Tensor([b'Some' b'minds' b'are' b'better' b'kept' b'apart'], shape=(6,), dtype=string)

টেনসরফ্লো মডেলকে টেনসরফ্লো লাইটে রূপান্তর করুন

টেনসরফ্লো টেক্সট অপারেটরদের সাথে একটি টেনসরফ্লো মডেলকে টেনসরফ্লো লাইটে রূপান্তর করার সময়, আপনাকে TFLiteConverter কে নির্দেশ করতে হবে যে নীচের উদাহরণের মতো allow_custom_ops অ্যাট্রিবিউট ব্যবহার করে কাস্টম অপারেটর রয়েছে৷ আপনি তখন মডেল রূপান্তর চালাতে পারেন যেমনটি আপনি সাধারণত করবেন। মডেল রূপান্তরের মূল বিষয়গুলির উপর একটি বিস্তারিত গাইডের জন্য TensorFlow Lite রূপান্তরকারী ডকুমেন্টেশন পর্যালোচনা করুন৷

# Convert to TensorFlow Lite.
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS]
converter.allow_custom_ops = True
tflite_model = converter.convert()
2022-02-01 12:09:02.062677: W tensorflow/python/util/util.cc:368] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.
INFO:tensorflow:Assets written to: /tmp/tmpiiuhjdn6/assets
2022-02-01 12:09:03.705144: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:363] Ignored output_format.
WARNING:absl:Buffer deduplication procedure will be skipped when flatbuffer library is not properly loaded
2022-02-01 12:09:03.705185: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:366] Ignored drop_control_dependency.
2022-02-01 12:09:03.921830: W tensorflow/compiler/mlir/lite/flatbuffer_export.cc:1902] The following operation(s) need TFLite custom op implementation(s):
Custom ops: TFText>WhitespaceTokenizeWithOffsetsV2
Details:
    tf.TFText>WhitespaceTokenizeWithOffsetsV2(tensor<?x!tf_type.string>, tensor<!tf_type.string>) -> (tensor<?x!tf_type.string>, tensor<?xi64>, tensor<?xi32>, tensor<?xi32>) : {device = ""}
See instructions: https://www.tensorflow.org/lite/guide/ops_custom

অনুমান

TensorFlow Lite দোভাষীর জন্য TensorFlow পাঠ্য অপারেটর সমন্বিত আপনার মডেলটি সঠিকভাবে পড়ার জন্য, আপনাকে অবশ্যই এই কাস্টম অপারেটরগুলি ব্যবহার করার জন্য কনফিগার করতে হবে এবং তাদের জন্য নিবন্ধন পদ্ধতি প্রদান করতে হবে। InterpreterWithCustomOps এ সমর্থিত TensorFlow টেক্সট অপারেটরদের জন্য নিবন্ধন ফাংশনের সম্পূর্ণ স্যুট প্রদান করতে tf_text.tflite_registrar.SELECT_TFTEXT_OPS ব্যবহার করুন।

দ্রষ্টব্য, নীচের উদাহরণটি পাইথনে অনুমান দেখায়, কিছু ছোটখাটো API অনুবাদ সহ অন্যান্য ভাষায় পদক্ষেপগুলি একই রকম, এবং আপনার বাইনারিতে tflite_registrar তৈরি করার প্রয়োজনীয়তা। আরও বিস্তারিত জানার জন্য TensorFlow Lite Inference দেখুন।

# Perform TensorFlow Lite inference.
interp = interpreter.InterpreterWithCustomOps(
    model_content=tflite_model,
    custom_op_registerers=tf_text.tflite_registrar.SELECT_TFTEXT_OPS)
interp.get_signature_list()
{'serving_default': {'inputs': ['input'], 'outputs': ['tokens']} }

এরপরে, টেনসরফ্লো লাইট ইন্টারপ্রেটারকে ইনপুট দিয়ে আমন্ত্রণ জানানো হয়, যা উপরের থেকে টেনসরফ্লো ফলাফলের সাথে মেলে এমন একটি ফলাফল প্রদান করে।

tokenize = interp.get_signature_runner('serving_default')
output = tokenize(input=input_data)
print('TensorFlow Lite result = ', output['tokens'])
TensorFlow Lite result =  [b'Some' b'minds' b'are' b'better' b'kept' b'apart']