TensorFlow মডেল রূপান্তর করুন

এই পৃষ্ঠায় বর্ণনা করা হয়েছে কিভাবে LiterRT কনভার্টার ব্যবহার করে একটি TensorFlow মডেলকে LiterRT মডেলে ( .tflite ফাইল এক্সটেনশন দ্বারা চিহ্নিত একটি অপ্টিমাইজড FlatBuffer ফর্ম্যাট) রূপান্তর করা যায়।

রূপান্তর কর্মপ্রবাহ

নিচের চিত্রটি আপনার মডেল রূপান্তরের জন্য উচ্চ-স্তরের কর্মপ্রবাহ চিত্রিত করে:

TFLite কনভার্টার ওয়ার্কফ্লো

চিত্র ১. কনভার্টার ওয়ার্কফ্লো।

আপনি নিম্নলিখিত বিকল্পগুলির মধ্যে একটি ব্যবহার করে আপনার মডেল রূপান্তর করতে পারেন:

  1. পাইথন এপিআই ( প্রস্তাবিত ): এটি আপনাকে আপনার ডেভেলপমেন্ট পাইপলাইনে রূপান্তরকে একীভূত করতে, অপ্টিমাইজেশন প্রয়োগ করতে, মেটাডেটা যোগ করতে এবং রূপান্তর প্রক্রিয়াকে সহজতর করার জন্য আরও অনেক কাজ করতে দেয়।
  2. কমান্ড লাইন : এটি শুধুমাত্র মৌলিক মডেল রূপান্তর সমর্থন করে।

পাইথন এপিআই

সাহায্যকারী কোড: LiterRT কনভার্টার API সম্পর্কে আরও জানতে, print(help(tf.lite.TFLiteConverter)) চালান।

tf.lite.TFLiteConverter ব্যবহার করে একটি TensorFlow মডেল রূপান্তর করুন। একটি TensorFlow মডেল SavedModel ফর্ম্যাট ব্যবহার করে সংরক্ষণ করা হয় এবং উচ্চ-স্তরের tf.keras.* API (একটি Keras মডেল) অথবা নিম্ন-স্তরের tf.* API (যা থেকে আপনি কংক্রিট ফাংশন তৈরি করেন) ব্যবহার করে তৈরি করা হয়। ফলস্বরূপ, আপনার কাছে নিম্নলিখিত তিনটি বিকল্প রয়েছে (উদাহরণগুলি পরবর্তী কয়েকটি বিভাগে রয়েছে):

নিচের উদাহরণে দেখানো হয়েছে কিভাবে একটি SavedModel কে TensorFlow Lite মডেলে রূপান্তর করতে হয়।

import tensorflow as tf

# Convert the model
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir) # path to the SavedModel directory
tflite_model = converter.convert()

# Save the model.
with open('model.tflite', 'wb') as f:
  f.write(tflite_model)

একটি কেরাস মডেল রূপান্তর করুন

নিম্নলিখিত উদাহরণে দেখানো হয়েছে কিভাবে একটি Keras মডেলকে TensorFlow Lite মডেলে রূপান্তর করতে হয়।

import tensorflow as tf

# Create a model using high-level tf.keras.* APIs
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(units=1, input_shape=[1]),
    tf.keras.layers.Dense(units=16, activation='relu'),
    tf.keras.layers.Dense(units=1)
])
model.compile(optimizer='sgd', loss='mean_squared_error') # compile the model
model.fit(x=[-1, 0, 1], y=[-3, -1, 1], epochs=5) # train the model
# (to generate a SavedModel) tf.saved_model.save(model, "saved_model_keras_dir")

# Convert the model.
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

# Save the model.
with open('model.tflite', 'wb') as f:
  f.write(tflite_model)

কংক্রিট ফাংশন রূপান্তর করুন

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে কংক্রিট ফাংশনগুলিকে LiterRT মডেলে রূপান্তর করতে হয়।

import tensorflow as tf

# Create a model using low-level tf.* APIs
class Squared(tf.Module):
  @tf.function(input_signature=[tf.TensorSpec(shape=[None], dtype=tf.float32)])
  def __call__(self, x):
    return tf.square(x)
model = Squared()
# (ro run your model) result = Squared(5.0) # This prints "25.0"
# (to generate a SavedModel) tf.saved_model.save(model, "saved_model_tf_dir")
concrete_func = model.__call__.get_concrete_function()

# Convert the model.

converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func],
                                                            model)
tflite_model = converter.convert()

# Save the model.
with open('model.tflite', 'wb') as f:
  f.write(tflite_model)

অন্যান্য বৈশিষ্ট্য

  • অপ্টিমাইজেশন প্রয়োগ করুন। প্রশিক্ষণ পরবর্তী কোয়ান্টাইজেশন ব্যবহার করা একটি সাধারণ অপ্টিমাইজেশন, যা আপনার মডেলের ল্যাটেন্সি এবং আকার আরও কমাতে পারে এবং নির্ভুলতার ক্ষেত্রে ন্যূনতম ক্ষতি করতে পারে।

  • মেটাডেটা যোগ করুন, যা ডিভাইসে মডেল স্থাপনের সময় প্ল্যাটফর্ম-নির্দিষ্ট র‍্যাপার কোড তৈরি করা সহজ করে তোলে।

রূপান্তর ত্রুটি

নিম্নলিখিত সাধারণ রূপান্তর ত্রুটি এবং তাদের সমাধান রয়েছে:

কমান্ড লাইন টুল

যদি আপনি pip থেকে TensorFlow 2.x ইনস্টল করে থাকেন , তাহলে tflite_convert কমান্ডটি ব্যবহার করুন। সমস্ত উপলব্ধ ফ্ল্যাগ দেখতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

$ tflite_convert --help

`--output_file`. Type: string. Full path of the output file.
`--saved_model_dir`. Type: string. Full path to the SavedModel directory.
`--keras_model_file`. Type: string. Full path to the Keras H5 model file.
`--enable_v1_converter`. Type: bool. (default False) Enables the converter and flags used in TF 1.x instead of TF 2.x.

You are required to provide the `--output_file` flag and either the `--saved_model_dir` or `--keras_model_file` flag.

যদি আপনার TensorFlow 2.x সোর্সটি ডাউনলোড করা থাকে এবং প্যাকেজ তৈরি এবং ইনস্টল না করেই সেই সোর্স থেকে কনভার্টারটি চালাতে চান, তাহলে আপনি কমান্ডে ' tflite_convert ' কে ' bazel run tensorflow/lite/python:tflite_convert -- ' দিয়ে প্রতিস্থাপন করতে পারেন।

একটি সংরক্ষিত মডেল রূপান্তর করা

tflite_convert \
  --saved_model_dir=/tmp/mobilenet_saved_model \
  --output_file=/tmp/mobilenet.tflite

Keras H5 মডেল রূপান্তর করা

tflite_convert \
  --keras_model_file=/tmp/mobilenet_keras_model.h5 \
  --output_file=/tmp/mobilenet.tflite