Google I/O-তে টিউন করার জন্য ধন্যবাদ। চাহিদা অনুযায়ী সব সেশন দেখুন চাহিদা অনুযায়ী দেখুন

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

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

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

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

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

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

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

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

পাইথন API

হেল্পার কোড: TensorFlow Lite Converter API সম্পর্কে আরও জানতে, print(help(tf.lite.TFLiteConverter))

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

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

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)

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

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

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 দিয়ে প্রতিস্থাপন করতে পারেন।

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

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

পরবর্তী পদক্ষেপ

একটি ক্লায়েন্ট ডিভাইসে অনুমান চালানোর জন্য TensorFlow Lite ইন্টারপ্রেটার ব্যবহার করুন (যেমন মোবাইল, এমবেডেড)।