টেনসরফ্লো লাইট এবং টেনসরফ্লো অপারেটর সামঞ্জস্য

আপনি আপনার মডেলে যে মেশিন লার্নিং (ML) অপারেটরগুলি ব্যবহার করেন তা টেনসরফ্লো মডেলকে টেনসরফ্লো লাইট ফর্ম্যাটে রূপান্তর করার প্রক্রিয়াকে প্রভাবিত করতে পারে। TensorFlow Lite কনভার্টার সাধারণ অনুমান মডেলগুলিতে ব্যবহৃত সীমিত সংখ্যক TensorFlow অপারেশনকে সমর্থন করে, যার মানে প্রতিটি মডেল সরাসরি পরিবর্তনযোগ্য নয়। রূপান্তরকারী সরঞ্জামটি আপনাকে অতিরিক্ত অপারেটরগুলিকে অন্তর্ভুক্ত করার অনুমতি দেয়, কিন্তু এইভাবে একটি মডেলকে রূপান্তর করার জন্য আপনাকে আপনার মডেল চালানোর জন্য ব্যবহার করা TensorFlow Lite রানটাইম পরিবেশকে সংশোধন করতে হবে, যা আপনার ক্ষমতাকে সীমিত করতে পারে স্ট্যান্ডার্ড রানটাইম স্থাপনার বিকল্পগুলি, যেমন Google Play পরিষেবাগুলি ব্যবহার করে৷

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

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

সমর্থিত অপারেটর

TensorFlow Lite অন্তর্নির্মিত অপারেটর হল অপারেটরগুলির একটি উপসেট যা TensorFlow কোর লাইব্রেরির অংশ। আপনার TensorFlow মডেলে কম্পোজিট অপারেটর বা আপনার দ্বারা সংজ্ঞায়িত নতুন অপারেটর আকারে কাস্টম অপারেটর অন্তর্ভুক্ত থাকতে পারে। নীচের চিত্রটি এই অপারেটরদের মধ্যে সম্পর্ক দেখায়।

টেনসরফ্লো অপারেটর

এমএল মডেল অপারেটরদের এই পরিসর থেকে, রূপান্তর প্রক্রিয়া দ্বারা সমর্থিত 3 ধরনের মডেল রয়েছে:

  1. শুধুমাত্র TensorFlow Lite বিল্ট-ইন অপারেটর সহ মডেল। ( প্রস্তাবিত )
  2. অন্তর্নির্মিত অপারেটর সহ মডেল এবং TensorFlow কোর অপারেটর নির্বাচন করুন।
  3. অন্তর্নির্মিত অপারেটর, TensorFlow কোর অপারেটর এবং/অথবা কাস্টম অপারেটর সহ মডেল।

যদি আপনার মডেলে শুধুমাত্র এমন ক্রিয়াকলাপ থাকে যা স্থানীয়ভাবে TensorFlow Lite দ্বারা সমর্থিত, তাহলে এটিকে রূপান্তর করতে আপনার কোনো অতিরিক্ত পতাকার প্রয়োজন নেই। এটি প্রস্তাবিত পথ কারণ এই ধরনের মডেল সহজে রূপান্তরিত হবে এবং ডিফল্ট TensorFlow Lite রানটাইম ব্যবহার করে অপ্টিমাইজ করা এবং চালানো সহজ। এছাড়াও আপনার মডেলের জন্য Google Play পরিষেবাগুলির মতো আরো স্থাপনার বিকল্প রয়েছে৷ আপনি TensorFlow Lite রূপান্তরকারী নির্দেশিকা দিয়ে শুরু করতে পারেন। অন্তর্নির্মিত অপারেটরগুলির একটি তালিকার জন্য TensorFlow Lite Ops পৃষ্ঠাটি দেখুন৷

আপনার যদি মূল লাইব্রেরি থেকে নির্বাচিত TensorFlow ক্রিয়াকলাপগুলি অন্তর্ভুক্ত করার প্রয়োজন হয় তবে আপনাকে অবশ্যই রূপান্তরের সময় তা নির্দিষ্ট করতে হবে এবং নিশ্চিত করতে হবে যে আপনার রানটাইমে সেই ক্রিয়াকলাপগুলি অন্তর্ভুক্ত রয়েছে। বিস্তারিত পদক্ষেপের জন্য TensorFlow অপারেটর নির্বাচন করুন বিষয় দেখুন।

যখনই সম্ভব, আপনার রূপান্তরিত মডেলে কাস্টম অপারেটর অন্তর্ভুক্ত করার শেষ বিকল্পটি এড়িয়ে চলুন। কাস্টম অপারেটরগুলি হয় একাধিক আদিম টেনসরফ্লো কোর অপারেটরকে একত্রিত করে বা সম্পূর্ণ নতুন একটি সংজ্ঞায়িত করে তৈরি করা অপারেটর। যখন কাস্টম অপারেটরগুলি রূপান্তরিত হয়, তখন তারা অন্তর্নির্মিত টেনসরফ্লো লাইট লাইব্রেরির বাইরে নির্ভরতা বহন করে সামগ্রিক মডেলের আকার বাড়াতে পারে। কাস্টম অপ্স, যদি বিশেষভাবে মোবাইল বা ডিভাইস স্থাপনের জন্য তৈরি করা না হয়, তাহলে সার্ভার পরিবেশের তুলনায় রিসোর্স সীমাবদ্ধ ডিভাইসে মোতায়েন করা হলে খারাপ কর্মক্ষমতা হতে পারে। পরিশেষে, ঠিক যেমন টেনসরফ্লো কোর অপারেটরগুলিকে অন্তর্ভুক্ত করে, কাস্টম অপারেটরগুলির জন্য আপনাকে মডেল রানটাইম পরিবেশ পরিবর্তন করতে হবে যা আপনাকে Google Play পরিষেবাগুলির মতো স্ট্যান্ডার্ড রানটাইম পরিষেবাগুলির সুবিধা নেওয়া থেকে সীমাবদ্ধ করে৷

সমর্থিত প্রকার

বেশিরভাগ TensorFlow Lite অপারেশনগুলি ফ্লোটিং-পয়েন্ট ( float32 ) এবং কোয়ান্টাইজড ( uint8 , int8 ) অনুমান উভয়কেই লক্ষ্য করে, কিন্তু অনেক অপ্স এখনও অন্যান্য ধরনের যেমন tf.float16 এবং স্ট্রিংগুলির জন্য করে না।

ক্রিয়াকলাপের বিভিন্ন সংস্করণ ব্যবহার করা ছাড়াও, ফ্লোটিং-পয়েন্ট এবং কোয়ান্টাইজড মডেলের মধ্যে অন্য পার্থক্য হল যেভাবে রূপান্তরিত হয়। পরিমানিত রূপান্তরের জন্য টেনসরগুলির জন্য গতিশীল পরিসরের তথ্য প্রয়োজন। এর জন্য মডেল প্রশিক্ষণের সময় "জাল-পরিমাণকরণ" প্রয়োজন, একটি ক্রমাঙ্কন ডেটা সেটের মাধ্যমে পরিসরের তথ্য পাওয়া, বা "অন-দ্য-ফ্লাই" পরিসীমা অনুমান করা। আরো বিস্তারিত জানার জন্য পরিমাপ দেখুন.

সোজা-সামনের রূপান্তর, ধ্রুবক-ভাঁজ এবং ফিউজিং

TensorFlow অপারেশনের একটি সংখ্যা TensorFlow Lite দ্বারা প্রক্রিয়া করা যেতে পারে যদিও তাদের কোন সরাসরি সমতুল্য নেই। এটি এমন অপারেশনগুলির ক্ষেত্রে যা গ্রাফ থেকে সরানো যেতে পারে ( tf.identity ), টেনসর দ্বারা প্রতিস্থাপিত ( tf.placeholder ), বা আরও জটিল ক্রিয়াকলাপ ( tf.nn.bias_add ) এর সাথে যুক্ত করা যেতে পারে। এমনকি কিছু সমর্থিত ক্রিয়াকলাপ কখনও কখনও এই প্রক্রিয়াগুলির মধ্যে একটির মাধ্যমে সরানো যেতে পারে।

এখানে TensorFlow অপারেশনগুলির একটি অ-সম্পূর্ণ তালিকা রয়েছে যা সাধারণত গ্রাফ থেকে সরানো হয়:

পরীক্ষামূলক অপারেশন

নিম্নলিখিত TensorFlow Lite অপারেশনগুলি উপস্থিত আছে, কিন্তু কাস্টম মডেলগুলির জন্য প্রস্তুত নয়:

  • CALL
  • CONCAT_EMBEDDINGS
  • CUSTOM
  • EMBEDDING_LOOKUP_SPARSE
  • HASHTABLE_LOOKUP
  • LSH_PROJECTION
  • SKIP_GRAM
  • SVDF