কর্মক্ষমতা সেরা অনুশীলন

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

টাস্কের জন্য সেরা মডেল নির্বাচন করুন

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

Graph of model size vs
accuracy

Graph of accuracy vs latency

মোবাইল ডিভাইসের জন্য অপ্টিমাইজ করা মডেলগুলির একটি উদাহরণ হল MobileNets , যা মোবাইল ভিশন অ্যাপ্লিকেশনের জন্য অপ্টিমাইজ করা হয়েছে৷ Kaggle মডেলগুলি মোবাইল এবং এমবেডেড ডিভাইসগুলির জন্য বিশেষভাবে অপ্টিমাইজ করা হয়েছে এমন আরও কয়েকটি মডেলের তালিকা করে৷

আপনি ট্রান্সফার লার্নিং ব্যবহার করে আপনার নিজের ডেটাসেটে তালিকাভুক্ত মডেলগুলিকে পুনরায় প্রশিক্ষণ দিতে পারেন।

আপনার মডেল প্রোফাইল

একবার আপনি আপনার কাজের জন্য সঠিক প্রার্থীর মডেল নির্বাচন করলে, আপনার মডেলকে প্রোফাইল এবং বেঞ্চমার্ক করা একটি ভাল অভ্যাস। LiteRT বেঞ্চমার্কিং টুলটিতে একটি অন্তর্নির্মিত প্রোফাইলার রয়েছে যা প্রতি অপারেটর প্রোফাইলিং পরিসংখ্যান দেখায়। এটি পারফরম্যান্সের বাধাগুলি বুঝতে সাহায্য করতে পারে এবং কোন অপারেটরগুলি গণনার সময়কে প্রাধান্য দেয়।

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

গ্রাফে অপারেটরদের প্রোফাইল এবং অপ্টিমাইজ করুন

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

আপনার মডেল অপ্টিমাইজ করুন

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

বিস্তারিত জানার জন্য মডেল অপ্টিমাইজেশান ডক্স দেখুন.

থ্রেড সংখ্যা খামচি

LiteRT অনেক অপারেটরের জন্য মাল্টি-থ্রেডেড কার্নেল সমর্থন করে। আপনি থ্রেডের সংখ্যা বাড়াতে পারেন এবং অপারেটরদের কার্যকর করার গতি বাড়াতে পারেন। থ্রেডের সংখ্যা বাড়ানোর ফলে আপনার মডেল আরও সম্পদ এবং শক্তি ব্যবহার করবে।

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

অপ্রয়োজনীয় কপি মুছে ফেলুন

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

প্ল্যাটফর্ম নির্দিষ্ট সরঞ্জাম দিয়ে আপনার অ্যাপ্লিকেশন প্রোফাইল

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

ডিভাইসে উপলব্ধ হার্ডওয়্যার এক্সিলারেটর ব্যবহার করে আপনার মডেল উপকৃত হয় কিনা তা মূল্যায়ন করুন

LiteRT GPUs, DSPs, এবং নিউরাল অ্যাক্সিলারেটরের মতো দ্রুত হার্ডওয়্যার সহ মডেলগুলিকে ত্বরান্বিত করার নতুন উপায় যুক্ত করেছে। সাধারণত, এই অ্যাক্সিলারেটরগুলি প্রতিনিধি সাবমডিউলগুলির মাধ্যমে উন্মুক্ত করা হয় যা দোভাষী সম্পাদনের অংশগুলি গ্রহণ করে। LiteRT এর দ্বারা প্রতিনিধিদের ব্যবহার করতে পারে:

  • GPU প্রতিনিধি Android এবং iOS এ উপলব্ধ, যথাক্রমে OpenGL/OpenCL এবং Metal ব্যবহার করে। সেগুলি ব্যবহার করে দেখতে, GPU প্রতিনিধি দেখুন।
  • আপনার যদি অ-মানক হার্ডওয়্যার অ্যাক্সেস থাকে তবে আপনার নিজস্ব প্রতিনিধি তৈরি করা সম্ভব। আরও তথ্যের জন্য LiteRT প্রতিনিধি দেখুন।

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