মডেল তৈরি এবং রূপান্তর

মাইক্রোকন্ট্রোলারগুলির র‍্যাম এবং স্টোরেজ সীমিত থাকে, যা মেশিন লার্নিং মডেলগুলির আকারের উপর সীমাবদ্ধতা রাখে। এছাড়াও, LiteRT for Microcontrollers বর্তমানে সীমিত অপারেশনগুলিকে সমর্থন করে, তাই সমস্ত মডেল আর্কিটেকচার সম্ভব নয়।

এই নথিতে টেনসরফ্লো মডেলকে মাইক্রোকন্ট্রোলারে চালানোর জন্য রূপান্তর করার প্রক্রিয়া ব্যাখ্যা করা হয়েছে। এটি সমর্থিত ক্রিয়াকলাপগুলির রূপরেখাও দেয় এবং সীমিত মেমোরিতে ফিট করার জন্য একটি মডেল ডিজাইন এবং প্রশিক্ষণের জন্য কিছু নির্দেশিকা দেয়।

একটি মডেল তৈরি এবং রূপান্তর করার একটি এন্ড-টু-এন্ড, রানযোগ্য উদাহরণের জন্য, হ্যালো ওয়ার্ল্ড উদাহরণটি দেখুন।

মডেল রূপান্তর

একটি প্রশিক্ষিত TensorFlow মডেলকে মাইক্রোকন্ট্রোলারে চালানোর জন্য রূপান্তর করতে, আপনার Litert কনভার্টার Python API ব্যবহার করা উচিত। এটি মডেলটিকে FlatBuffer এ রূপান্তর করবে, মডেলের আকার হ্রাস করবে এবং Litert অপারেশন ব্যবহার করার জন্য এটি পরিবর্তন করবে।

সম্ভাব্য ক্ষুদ্রতম মডেল আকার পেতে, আপনার প্রশিক্ষণ-পরবর্তী কোয়ান্টাইজেশন ব্যবহার করার কথা বিবেচনা করা উচিত।

একটি C অ্যারেতে রূপান্তর করুন

অনেক মাইক্রোকন্ট্রোলার প্ল্যাটফর্মে নেটিভ ফাইল সিস্টেম সাপোর্ট থাকে না। আপনার প্রোগ্রাম থেকে একটি মডেল ব্যবহার করার সবচেয়ে সহজ উপায় হল এটিকে একটি C অ্যারে হিসেবে অন্তর্ভুক্ত করা এবং এটিকে আপনার প্রোগ্রামে কম্পাইল করা।

নিম্নলিখিত ইউনিক্স কমান্ডটি একটি C সোর্স ফাইল তৈরি করবে যাতে LiterRT মডেলটি একটি char অ্যারে হিসেবে থাকবে:

xxd -i converted_model.tflite > model_data.cc

আউটপুটটি নিচের মতো দেখাবে:

unsigned char converted_model_tflite[] = {
  0x18, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x0e, 0x00,
  // <Lines omitted>
};
unsigned int converted_model_tflite_len = 18200;

একবার ফাইলটি তৈরি হয়ে গেলে, আপনি এটি আপনার প্রোগ্রামে অন্তর্ভুক্ত করতে পারেন। এমবেডেড প্ল্যাটফর্মগুলিতে আরও ভাল মেমরি দক্ষতার জন্য অ্যারে ঘোষণাকে const এ পরিবর্তন করা গুরুত্বপূর্ণ।

আপনার প্রোগ্রামে একটি মডেল কীভাবে অন্তর্ভুক্ত করবেন এবং ব্যবহার করবেন তার উদাহরণের জন্য, Hello World উদাহরণে hello_world_test.cc দেখুন।

মডেল স্থাপত্য এবং প্রশিক্ষণ

মাইক্রোকন্ট্রোলারে ব্যবহারের জন্য একটি মডেল ডিজাইন করার সময়, মডেলের আকার, কাজের চাপ এবং ব্যবহৃত ক্রিয়াকলাপগুলি বিবেচনা করা গুরুত্বপূর্ণ।

মডেলের আকার

একটি মডেল অবশ্যই যথেষ্ট ছোট হতে হবে যাতে আপনার টার্গেট ডিভাইসের মেমরিতে আপনার প্রোগ্রামের বাকি অংশের সাথে ফিট হয়, বাইনারি এবং রানটাইম উভয় ক্ষেত্রেই।

ছোট মডেল তৈরি করতে, আপনি আপনার স্থাপত্যে কম এবং ছোট স্তর ব্যবহার করতে পারেন। তবে, ছোট মডেলগুলিতে আন্ডারফিটিং হওয়ার সম্ভাবনা বেশি থাকে। এর অর্থ হল অনেক সমস্যার জন্য, মেমোরিতে ফিট করা সবচেয়ে বড় মডেলটি ব্যবহার করার চেষ্টা করা যুক্তিসঙ্গত। তবে, বড় মডেল ব্যবহার করলে প্রসেসরের কাজের চাপও বৃদ্ধি পাবে।

কাজের চাপ

মডেলের আকার এবং জটিলতা কাজের চাপের উপর প্রভাব ফেলে। বড়, জটিল মডেলগুলির ফলে উচ্চতর ডিউটি ​​চক্র তৈরি হতে পারে, যার অর্থ আপনার ডিভাইসের প্রসেসর বেশি সময় কাজ করছে এবং কম সময় অলস সময় ব্যয় করছে। এটি বিদ্যুৎ খরচ এবং তাপ উৎপাদন বৃদ্ধি করবে, যা আপনার অ্যাপ্লিকেশনের উপর নির্ভর করে একটি সমস্যা হতে পারে।

অপারেশন সাপোর্ট

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

সমর্থিত ক্রিয়াকলাপগুলি micro_mutable_ops_resolver.h ফাইলে দেখা যাবে।