NNAPI ড্রাইভার বাস্তবায়নের সর্বোত্তম অনুশীলন

এই পৃষ্ঠাটি অ্যাপ ডেভেলপারদের দ্বারা এনএনএপিআইকে বিস্তৃতভাবে গ্রহণ করার অনুমতি দেওয়ার জন্য নিউরাল নেটওয়ার্ক এপিআই (এনএনএপিআই) ড্রাইভার বাস্তবায়নের সর্বোত্তম অনুশীলনের বর্ণনা করে।

স্টার্টআপের সময় ছোট রাখুন

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

ন্যূনতম বিলম্ব হ্রাস করুন

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

NN HAL SchedTune গ্রুপ ব্যবহার করুন

Android 11 বা উচ্চতর থেকে, AOSP একটি ডেডিকেটেড NN HAL SchedTune গ্রুপ অন্তর্ভুক্ত করে যা আন্তঃপ্রসেস NN HAL প্রসেসগুলিকে পূর্বনির্ধারিত top-app cgroup-এর মধ্যে একই-প্রক্রিয়া বাস্তবায়নের মতো বড় কোর ব্যবহার করতে দেয়। এই SchedTune গ্রুপটি ব্যবহার করলে ড্রাইভারের ওভারহেড কমে যায়, বিশেষ করে ছোট মডেলের জন্য।

SchedTune গ্রুপ ব্যবহার করতে, NN HAL প্রক্রিয়ার init.rc ফাইলে নিম্নলিখিত লাইন যোগ করুন:

writepid /dev/stune/nnapi-hal/tasks
,

এই পৃষ্ঠাটি অ্যাপ ডেভেলপারদের দ্বারা এনএনএপিআইকে বিস্তৃতভাবে গ্রহণ করার অনুমতি দেওয়ার জন্য নিউরাল নেটওয়ার্ক এপিআই (এনএনএপিআই) ড্রাইভার বাস্তবায়নের সর্বোত্তম অনুশীলনের বর্ণনা করে।

স্টার্টআপের সময় ছোট রাখুন

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

ন্যূনতম বিলম্ব হ্রাস করুন

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

NN HAL SchedTune গ্রুপ ব্যবহার করুন

Android 11 বা উচ্চতর থেকে, AOSP একটি ডেডিকেটেড NN HAL SchedTune গ্রুপ অন্তর্ভুক্ত করে যা আন্তঃপ্রসেস NN HAL প্রসেসগুলিকে পূর্বনির্ধারিত top-app cgroup-এর মধ্যে একই-প্রক্রিয়া বাস্তবায়নের মতো বড় কোর ব্যবহার করতে দেয়। এই SchedTune গ্রুপটি ব্যবহার করলে ড্রাইভারের ওভারহেড কমে যায়, বিশেষ করে ছোট মডেলের জন্য।

SchedTune গ্রুপ ব্যবহার করতে, NN HAL প্রক্রিয়ার init.rc ফাইলে নিম্নলিখিত লাইন যোগ করুন:

writepid /dev/stune/nnapi-hal/tasks