এই পৃষ্ঠাটি বর্ণনা করে কিভাবে LiteRT রূপান্তরকারী ব্যবহার করে একটি TensorFlow মডেলকে LiteRT মডেলে ( .tflite
ফাইল এক্সটেনশন দ্বারা চিহ্নিত একটি অপ্টিমাইজ করা ফ্ল্যাটবাফার ফর্ম্যাট) রূপান্তর করা যায়।
রূপান্তর কর্মপ্রবাহ
নীচের চিত্রটি আপনার মডেলকে রূপান্তর করার জন্য উচ্চ-স্তরের কর্মপ্রবাহকে চিত্রিত করে:
চিত্র 1. কনভার্টার ওয়ার্কফ্লো।
আপনি নিম্নলিখিত বিকল্পগুলির মধ্যে একটি ব্যবহার করে আপনার মডেল রূপান্তর করতে পারেন:
- পাইথন এপিআই ( প্রস্তাবিত ): এটি আপনাকে আপনার ডেভেলপমেন্ট পাইপলাইনে রূপান্তরকে একীভূত করতে, অপ্টিমাইজেশন প্রয়োগ করতে, মেটাডেটা যোগ করতে এবং রূপান্তর প্রক্রিয়াকে সহজ করে এমন অন্যান্য অনেক কাজ করতে দেয়।
- কমান্ড লাইন : এটি শুধুমাত্র মৌলিক মডেল রূপান্তর সমর্থন করে।
পাইথন API
হেল্পার কোড: LiteRT কনভার্টার API সম্পর্কে আরও জানতে, print(help(tf.lite.TFLiteConverter))
চালান।
tf.lite.TFLiteConverter
ব্যবহার করে একটি TensorFlow মডেল রূপান্তর করুন। একটি TensorFlow মডেল SavedModel ফর্ম্যাট ব্যবহার করে সংরক্ষণ করা হয় এবং হয় উচ্চ-স্তরের tf.keras.*
APIs (একটি Keras মডেল) অথবা নিম্ন-স্তরের tf.*
API (যেখান থেকে আপনি কংক্রিট ফাংশন তৈরি করেন)। ফলস্বরূপ, আপনার কাছে নিম্নলিখিত তিনটি বিকল্প রয়েছে (উদাহরণগুলি পরবর্তী কয়েকটি বিভাগে রয়েছে):
-
tf.lite.TFLiteConverter.from_saved_model()
( প্রস্তাবিত ): একটি সংরক্ষিত মডেল রূপান্তর করে। -
tf.lite.TFLiteConverter.from_keras_model()
: একটি কেরাস মডেল রূপান্তর করে। -
tf.lite.TFLiteConverter.from_concrete_functions()
: কংক্রিট ফাংশন রূপান্তর করে।
একটি সংরক্ষিত মডেল রূপান্তর করুন (প্রস্তাবিত)
নিচের উদাহরণটি দেখায় কিভাবে একটি 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)
অন্যান্য বৈশিষ্ট্য
অপ্টিমাইজেশান প্রয়োগ করুন। ব্যবহৃত একটি সাধারণ অপ্টিমাইজেশান হল পোস্ট ট্রেনিং কোয়ান্টাইজেশন , যা আপনার মডেলের লেটেন্সি এবং আকারকে আরও কমিয়ে দিতে পারে যথার্থতার ন্যূনতম ক্ষতির সাথে।
মেটাডেটা যোগ করুন, যা ডিভাইসে মডেল স্থাপন করার সময় প্ল্যাটফর্ম নির্দিষ্ট র্যাপার কোড তৈরি করা সহজ করে তোলে।
রূপান্তর ত্রুটি
নিম্নলিখিত সাধারণ রূপান্তর ত্রুটি এবং তাদের সমাধান:
ত্রুটি:
Some ops are not supported by the native TFLite runtime, you can enable TF kernels fallback using TF Select.
সমাধান: ত্রুটিটি ঘটে কারণ আপনার মডেলটিতে TF অপ্স রয়েছে যার সাথে সংশ্লিষ্ট TFLite বাস্তবায়ন নেই। আপনি TFLite মডেলে TF অপ ব্যবহার করে এটি সমাধান করতে পারেন (প্রস্তাবিত)। আপনি যদি শুধুমাত্র TFLite ops দিয়ে একটি মডেল তৈরি করতে চান, তাহলে আপনি হয় GitHub সংখ্যা #21526 -এ অনুপস্থিত TFLite op-এর জন্য একটি অনুরোধ যোগ করতে পারেন (আপনার অনুরোধটি ইতিমধ্যে উল্লেখ করা না থাকলে একটি মন্তব্য করুন) অথবা নিজেই TFLite op তৈরি করুন ৷
ত্রুটি:
.. is neither a custom op nor a flex op
সমাধান: যদি এই TF op হয়:
TF-এ সমর্থিত: ত্রুটিটি ঘটেছে কারণ TF op অনুমতি তালিকা থেকে অনুপস্থিত (TFLite দ্বারা সমর্থিত TF অপের একটি সম্পূর্ণ তালিকা)। আপনি নিম্নলিখিত হিসাবে এটি সমাধান করতে পারেন:
TF-এ অসমর্থিত: ত্রুটি ঘটে কারণ TFLite আপনার দ্বারা সংজ্ঞায়িত কাস্টম TF অপারেটর সম্পর্কে অবগত নয়। আপনি নিম্নলিখিত হিসাবে এটি সমাধান করতে পারেন:
- TF অপশন তৈরি করুন ।
- TF মডেলটিকে একটি TFLite মডেলে রূপান্তর করুন ।
- TFLite op তৈরি করুন এবং TFLite রানটাইমের সাথে লিঙ্ক করে অনুমান চালান।
কমান্ড লাইন টুল
আপনি যদি পিপ থেকে 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