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

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

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

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

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

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

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

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

পাইথন API

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

tf.lite.TFLiteConverter ব্যবহার করে একটি TensorFlow মডেল রূপান্তর করুন। একটি TensorFlow মডেল SavedModel ফর্ম্যাট ব্যবহার করে সংরক্ষণ করা হয় এবং হয় উচ্চ-স্তরের tf.keras.* APIs (একটি 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)

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

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি কেরাস মডেলকে টেনসরফ্লো লাইট মডেলে রূপান্তর করা যায়।

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)

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

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

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)

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

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

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

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

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

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

আপনি যদি পিপ থেকে 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