গুগল আই/ও একটি মোড়ক! TensorFlow সেশনগুলি দেখুন সেশনগুলি দেখুন

মডেল অপটিমাইজেশন

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

TensorFlow Lite এবং TensorFlow মডেল অপ্টিমাইজেশান টুলকিট অনুমান নিখুঁত জটিলতা কমানোর জন্য সরঞ্জাম প্রদান।

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

মডেলগুলি কেন অপ্টিমাইজ করা উচিত

মডেল অপটিমাইজেশন অ্যাপ্লিকেশন ডেভেলপমেন্টে সাহায্য করতে পারে এমন বেশ কয়েকটি প্রধান উপায় রয়েছে।

আকার হ্রাস

কিছু মডেলের অপ্টিমাইজেশান একটি মডেলের আকার কমাতে ব্যবহার করা যেতে পারে। ছোট মডেলগুলির নিম্নলিখিত সুবিধা রয়েছে:

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

কোয়ান্টাইজেশন এই সমস্ত ক্ষেত্রে একটি মডেলের আকার কমাতে পারে, সম্ভাব্য কিছু নির্ভুলতার ব্যয়ে। ছাঁটাই এবং ক্লাস্টারিং ডাউনলোডের জন্য একটি মডেলের আকারকে আরো সহজে সংকুচিত করে তুলতে পারে।

বিলম্ব হ্রাস

অদৃশ্যতা পরিমাণ সময় এটি একটি প্রদত্ত মডেল সঙ্গে একটি একক অনুমান চালানোর জন্য লাগে। অপটিমাইজেশনের কিছু ফর্ম একটি মডেল ব্যবহার করে অনুমান চালানোর জন্য প্রয়োজনীয় গণনার পরিমাণ কমাতে পারে, যার ফলে কম বিলম্ব হয়। বিলম্ব বিদ্যুৎ ব্যবহারের উপরও প্রভাব ফেলতে পারে।

বর্তমানে, অনুমানের সময় ঘটে যাওয়া গণনাকে সরল করে বিলম্ব হ্রাস করার জন্য কোয়ান্টাইজেশন ব্যবহার করা যেতে পারে, সম্ভাব্য কিছু নির্ভুলতার ব্যয়ে।

এক্সিলারেটর সামঞ্জস্য

যেমন কিছু হার্ডওয়্যার ত্বরক, এজ নমনীয় , মডেল যে সঠিকভাবে অপ্টিমাইজ করা সঙ্গে অত্যন্ত দ্রুত অনুমান রান করতে পারেন।

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

ট্রেড-অফ

অপ্টিমাইজেশনের ফলে মডেল সঠিকতার পরিবর্তন হতে পারে, যা অ্যাপ্লিকেশন ডেভেলপমেন্ট প্রক্রিয়ার সময় অবশ্যই বিবেচনা করা উচিত।

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

অপ্টিমাইজেশনের ধরন

টেন্সরফ্লো লাইট বর্তমানে কোয়ান্টাইজেশন, ছাঁটাই এবং ক্লাস্টারিংয়ের মাধ্যমে অপ্টিমাইজেশান সমর্থন করে।

এই অংশ TensorFlow মডেল অপ্টিমাইজেশান টুলকিট , যার মডেল অপ্টিমাইজেশান কৌশল যে TensorFlow লাইট সঙ্গে সামঞ্জস্যপূর্ণ জন্য সম্পদ প্রদান করে।

কোয়ান্টাইজেশন

Quantization একটি মডেল এর পরামিতি, যা ডিফল্টভাবে 32 বিট ফ্লোটিং পয়েন্ট সংখ্যা প্রতিনিধিত্ব করতে ব্যবহৃত সংখ্যার স্পষ্টতা হ্রাস করে কাজ করে। এর ফলে একটি ছোট মডেলের আকার এবং দ্রুত গণনা হয়।

টেনসরফ্লো লাইটে নিম্নলিখিত ধরণের কোয়ান্টাইজেশন পাওয়া যায়:

প্রযুক্তি ডেটা প্রয়োজনীয়তা আকার হ্রাস সঠিকতা সমর্থিত হার্ডওয়্যার
প্রশিক্ষণ-পরবর্তী ভাসা 16 পরিমাপ কোন তথ্য নেই 50 পর্যন্ত% নগণ্য নির্ভুলতা ক্ষতি সিপিইউ, জিপিইউ
প্রশিক্ষণ-পরবর্তী গতিশীল পরিসীমা পরিমাপ কোন তথ্য নেই 75% পর্যন্ত ক্ষুদ্রতম নির্ভুলতা ক্ষতি CPU, GPU (Android)
প্রশিক্ষণ-পরবর্তী পূর্ণসংখ্যা পরিমাপ লেবেলবিহীন প্রতিনিধি নমুনা 75% পর্যন্ত ছোট নির্ভুলতা ক্ষতি CPU, GPU (Android), EdgeTPU, Hexagon DSP
কোয়ান্টাইজেশন-সচেতন প্রশিক্ষণ লেবেলকৃত প্রশিক্ষণ তথ্য 75% পর্যন্ত ক্ষুদ্রতম নির্ভুলতা ক্ষতি CPU, GPU (Android), EdgeTPU, Hexagon DSP

নিচের সিদ্ধান্তের বৃক্ষটি আপনাকে আপনার মডেলের জন্য যে পরিমাণ পরিমাণ স্কিম ব্যবহার করতে পারে তা নির্বাচন করতে সাহায্য করে, কেবলমাত্র প্রত্যাশিত মডেলের আকার এবং নির্ভুলতার উপর ভিত্তি করে।

পরিমান-সিদ্ধান্ত-বৃক্ষ

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

মডেল শীর্ষ -1 নির্ভুলতা (মূল) শীর্ষ -1 সঠিকতা (পোস্ট প্রশিক্ষণ কোয়ান্টাইজড) শীর্ষ -1 সঠিকতা (কোয়ান্টাইজেশন সচেতন প্রশিক্ষণ) বিলম্ব (মূল) (এমএস) লেটেন্সি (পোস্ট ট্রেনিং কোয়ান্টাইজড) (এমএস) বিলম্ব (কোয়ান্টাইজেশন সচেতন প্রশিক্ষণ) (এমএস) আকার (মূল) (এমবি) আকার (অপ্টিমাইজড) (এমবি)
Mobilenet-v1-1-224 0.709 0.657 0.70 124 112 64 16.9 4.3
Mobilenet-v2-1-224 0.719 0.637 0.709 89 98 54 14 3.6
Inception_v3 0.78 0.772 0.775 1130 845 543 95.7 23.9
Resnet_v2_101 0.770 0.768 এন/এ 3973 2868 এন/এ 178.3 44.9
সারণি 1 সিলেক্ট সিএনএন মডেলের জন্য মডেল quantization সুবিধা

Int16 অ্যাক্টিভেশন এবং int8 ওজন সহ পূর্ণসংখ্যা পরিমাপ

Int16 সক্রিয়করণব্যবস্থা সঙ্গে Quantization int8 মধ্যে int16 মধ্যে সক্রিয়করণব্যবস্থা এবং ওজন সঙ্গে একটি পূর্ণ পূর্ণসংখ্যা quantization তোমাদের ছলনা। এই মোডটি পরিপূর্ণ মডেলের সঠিকতা উন্নত করতে পারে পূর্ণ ইন্টিজার কোয়ান্টাইজেশন স্কিমের তুলনায় int8 তে অ্যাক্টিভেশন এবং ওজন উভয়ই একই মডেলের আকার রেখে। যখন অ্যাক্টিভেশনগুলি কোয়ান্টাইজেশনের প্রতি সংবেদনশীল হয় তখন এটি সুপারিশ করা হয়।

দ্রষ্টব্য: বর্তমানে শুধুমাত্র অ-অপ্টিমাইজ করা রেফারেন্স কার্নেল বাস্তবায়নের প্রাপ্তিসাধ্য তাই ডিফল্টরূপে কর্মক্ষমতা ধীর int8 কার্নেলের সাথে তুলনা করা, এই quantization স্কীম জন্য TFLite রয়েছে। এই মোডের সম্পূর্ণ সুবিধাগুলি বর্তমানে বিশেষ হার্ডওয়্যার বা কাস্টম সফটওয়্যারের মাধ্যমে অ্যাক্সেস করা যায়।

এই মোড থেকে উপকৃত হওয়া কিছু মডেলের নির্ভুলতার ফলাফল নিচে দেওয়া হল।

মডেল নির্ভুলতা মেট্রিক প্রকার সঠিকতা (float32 অ্যাক্টিভেশন) সঠিকতা (int8 অ্যাক্টিভেশন) সঠিকতা (int16 অ্যাক্টিভেশন)
Wav2letter আমরা 6.7% 7.7% 7.2%
DeepSpeech 0.5.1 (আনরোল্ড) সিইআর 6.13% 43.67% 6.52%
YoloV3 এমএপি (IOU = 0.5) 0.577 0.563 0.574
MobileNetV1 শীর্ষ -1 নির্ভুলতা 0.7062 0.694 0.6936
MobileNetV2 শীর্ষ -1 নির্ভুলতা 0.718 0.7126 0.7137
মোবাইলবার্ট F1 (সঠিক মিল) 88.81 (81.23) 2.08 (0) 88.73 (81.15)
ছক int16 সক্রিয়করণব্যবস্থা সঙ্গে মডেল quantization 2 উপকারিতা

ছাঁটাই

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

ভবিষ্যতে, TensorFlow Lite ছাঁটাই করা মডেলের জন্য বিলম্ব হ্রাস প্রদান করবে।

ক্লাস্টারিং

ক্লাস্টারিং ক্লাস্টার একটি পূর্বনির্ধারিত নম্বরে একটি মডেল প্রতিটি স্তরের ওজন গোষ্ঠীবদ্ধ, তারপর প্রতিটি ক্লাস্টার একাত্মতার ওজন জন্য centroid মান ভাগ করে কাজ করে। এটি একটি মডেলের অনন্য ওজন মানের সংখ্যা হ্রাস করে, এইভাবে এর জটিলতা হ্রাস করে।

ফলস্বরূপ, ক্লাস্টার্ড মডেলগুলি আরও কার্যকরভাবে সংকুচিত হতে পারে, যা ছাঁটাইয়ের মতো স্থাপনার সুবিধা প্রদান করে।

উন্নয়ন কর্মপ্রবাহ

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

ক্ষেত্রে যেখানে সঠিকতা এবং লেটেন্সি লক্ষ্যমাত্রা পূরণ না হয়, অথবা হার্ডওয়্যার বেগবর্ধক সমর্থনের জন্য গুরুত্বপূর্ণ, তাই quantization সচেতন প্রশিক্ষণ ভাল বিকল্প। অধীনে অতিরিক্ত অপ্টিমাইজেশান কৌশল দেখুন TensorFlow মডেল অপ্টিমাইজেশান টুলকিট

আপনি আরও আপনার মডেল আকার হ্রাস করতে চান তাহলে, আপনি চেষ্টা করতে পারেন ছাঁটাই এবং / অথবা ক্লাস্টারিং আপনার মডেলগুলির quantizing পূর্বে।