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

টেনসরফ্লো লাইট ডেলিগেটস

ভূমিকা

প্রতিনিধিরা জিপিইউ এবং ডিজিটাল সিগন্যাল প্রসেসর (ডিএসপি) এর মতো অন-ডিভাইস এক্সিলারেটরগুলির সাহায্যে টেনসরফ্লো লাইট মডেলগুলির হার্ডওয়্যার ত্বরণ সক্ষম করে।

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

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

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

প্রতিনিধিদের সাথে রানটাইম

একজন প্রতিনিধি নির্বাচন করা হচ্ছে

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

প্ল্যাটফর্ম দ্বারা প্রতিনিধিরা

ক্রস প্ল্যাটফর্ম (অ্যান্ড্রয়েড এবং আইওএস)

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

অ্যান্ড্রয়েড

  • আরও নতুন অ্যান্ড্রয়েড ডিভাইসের জন্য এনএনএপিআই প্রতিনিধি - এনপিএনপি প্রতিনিধি জিপিইউ, ডিএসপি এবং / অথবা এনপিইউ উপলব্ধ অ্যান্ড্রয়েড ডিভাইসগুলিতে মডেলগুলি ত্বরান্বিত করতে ব্যবহৃত হতে পারে। এটি অ্যান্ড্রয়েড 8.1 (এপিআই 27+) বা তার চেয়েও উচ্চতর উপলভ্য। এনএনএপিআই প্রতিনিধি, পর্যায়ক্রমে নির্দেশাবলী এবং সেরা অনুশীলনের একটি সংক্ষিপ্তসার জন্য টেনসরফ্লো লাইট এনএনএপিআই প্রতিনিধি দেখুন
  • পুরানো অ্যান্ড্রয়েড ডিভাইসগুলির জন্য হেক্সাগনের প্রতিনিধি - কোচলকম হেক্সাগন ডিএসপি সহ অ্যান্ড্রয়েড ডিভাইসের মডেলগুলিকে ত্বরান্বিত করতে হেক্সাগন প্রতিনিধি ব্যবহার করা যেতে পারে। এটি Android এর পুরানো সংস্করণগুলি চালিত ডিভাইসগুলিতে ব্যবহার করা যেতে পারে যা এনএনএপিআই সমর্থন করে না। আরও তথ্যের জন্য টেনসরফ্লো লাইট হেক্সাগন প্রতিনিধি দেখুন।

আইওএস

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

মডেল প্রকার দ্বারা প্রতিনিধি

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

মডেল প্রকার জিপিইউ এনএনএপিআই ষড়ভুজ CoreML
ভাসমান পয়েন্ট (32 বিট) হ্যাঁ হ্যাঁ না হ্যাঁ
প্রশিক্ষণ পরবর্তী ফ্লোট 16 কোয়ান্টাইজেশন হ্যাঁ না না হ্যাঁ
প্রশিক্ষণোত্তর গতিশীল পরিসীমা কোয়ান্টাইজেশন হ্যাঁ হ্যাঁ না না
প্রশিক্ষণ পরবর্তী পূর্ণসংখ্যার পরিমাণ হ্যাঁ হ্যাঁ হ্যাঁ না
কোয়ান্টাইজেশন-সচেতন প্রশিক্ষণ হ্যাঁ হ্যাঁ হ্যাঁ না

কার্যকারিতা কার্যকর করা হচ্ছে

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

টেনসরফ্লো লাইটের বিস্তৃত পারফরম্যান্স এবং যথার্থতা-মূল্যায়ন সরঞ্জাম রয়েছে যা বিকাশকারীদের তাদের প্রয়োগে প্রতিনিধিদের ব্যবহারে আত্মবিশ্বাসের জন্য সক্ষম করতে পারে। এই সরঞ্জামগুলি পরবর্তী বিভাগে আলোচনা করা হয়েছে।

মূল্যায়ন জন্য সরঞ্জাম

লেটেন্সি এবং মেমরির পদচিহ্ন

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

এখানে মাধ্যমে জিপিইউ সঙ্গে একটি নিরবচ্ছিন্ন মডেল জন্য চালানো একটি উদাহরণ adb :

adb shell /data/local/tmp/benchmark_model \
  --graph=/data/local/tmp/mobilenet_v1_224_quant.tflite \
  --use_gpu=true

আপনি অ্যান্ড্রয়েডের জন্য এই সরঞ্জামটির প্রাক-বিল্ট সংস্করণটি ডাউনলোড করতে পারেন, 64৪-বিট এআরএম আর্কিটেকচার ( আরও বিশদ ) এখানে

নির্ভুলতা এবং সঠিকতা

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

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

কার্য-ভিত্তিক মূল্যায়ন

টেনসরফ্লো লাইটের দুটি চিত্র-ভিত্তিক কার্য সম্পর্কে নির্ভুলতার মূল্যায়নের সরঞ্জাম রয়েছে:

ডকুমেন্টেশন সহ এই সরঞ্জামগুলির পূর্বনির্মাণ বাইনারিগুলি (অ্যান্ড্রয়েড, -৪-বিট এআরএম আর্কিটেকচার) পাওয়া যাবে:

নীচের উদাহরণটি এনএনএপিআইয়ের সাথে পিক্সেল 4 এ গুগলের এজ-টিপিইউ ব্যবহার করে চিত্রের শ্রেণিবিন্যাসের মূল্যায়ন দেখায়:

adb shell /data/local/tmp/run_eval \
  --model_file=/data/local/tmp/mobilenet_quant_v1_224.tflite \
  --ground_truth_images_path=/data/local/tmp/ilsvrc_images \
  --ground_truth_labels=/data/local/tmp/ilsvrc_validation_labels.txt \
  --model_output_labels=/data/local/tmp/model_output_labels.txt \
  --output_file_path=/data/local/tmp/accuracy_output.txt \
  --num_images=0 # Run on all images. \
  --use_nnapi=true \
  --nnapi_accelerator_name=google-edgetpu

প্রত্যাশিত আউটপুটটি 1 থেকে 10 পর্যন্ত শীর্ষ-কে মেট্রিকগুলির একটি তালিকা:

Top-1 Accuracy: 0.733333
Top-2 Accuracy: 0.826667
Top-3 Accuracy: 0.856667
Top-4 Accuracy: 0.87
Top-5 Accuracy: 0.89
Top-6 Accuracy: 0.903333
Top-7 Accuracy: 0.906667
Top-8 Accuracy: 0.913333
Top-9 Accuracy: 0.92
Top-10 Accuracy: 0.923333

টাস্ক-অগ্নিস্টিক মূল্যায়ন

ডিভাইস মূল্যায়নের জন্য একটি ইনস্টলড সরঞ্জাম নেই যেখানে বা কাস্টম মডেলগুলি নিয়ে আপনি পরীক্ষা করছেন সেখানে টেনসরফ্লো লাইটের ইনফারেন্স ডিফ সরঞ্জাম রয়েছে। (এখানে অ্যান্ড্রয়েড, -৪-বিট এআরএম বাইনারি আর্কিটেকচার বাইনারি রয়েছে )

ইনফেরেন্স ডিফ দুটি সারণিতে টেনসরফ্লো লাইট এক্সিকিউশন (ল্যাটেন্সি এবং আউটপুট-মান বিচ্যুতিগুলির শর্তাবলী) এর সাথে তুলনা করে:

  • একক থ্রেডেড সিপিইউ অনুমিতি
  • ব্যবহারকারী-সংজ্ঞায়িত অনুমান - এই পরামিতিগুলি দ্বারা সংজ্ঞায়িত

এটি করার জন্য, সরঞ্জামটি এলোমেলো গাউসিয়ান ডেটা উত্পন্ন করে এবং এটি দুটি টিএফলাইট ইন্টারপ্রেটারের মাধ্যমে পাস করে - একটি সিঙ্গল-থ্রেডেড সিপিইউ কার্নেল চালায় এবং অন্যটি ব্যবহারকারীর যুক্তি দ্বারা প্যারামিটারাইজড।

এটি উভয়টির স্বচ্ছলতা পরিমাপ করে, পাশাপাশি প্রতিটি প্রতিবেদকের কাছ থেকে আউটপুট টেনারগুলির মধ্যে পার্থক্যের ভিত্তিতে সম্পূর্ণ পার্থক্য।

একটি একক আউটপুট টেনসর সহ একটি মডেলের জন্য, আউটপুটটি দেখতে দেখতে এটি হতে পারে:

Num evaluation runs: 50
Reference run latency: avg=84364.2(us), std_dev=12525(us)
Test run latency: avg=7281.64(us), std_dev=2089(us)
OutputDiff[0]: avg_error=1.96277e-05, std_dev=6.95767e-06

এর অর্থ হ'ল সূচক 0 এ আউটপুট টেনসারের জন্য, সিপিইউ আউটপুট থেকে উপাদানগুলি প্রতিনিধি আউটপুট থেকে গড়ে 1.96e-05

নোট করুন যে এই সংখ্যার ব্যাখ্যার জন্য মডেলটির গভীর জ্ঞান প্রয়োজন এবং প্রতিটি আউটপুট টেনসর কী বোঝায়। যদি এটি একটি সাধারণ প্রতিরোধ যা কোনও প্রকারের স্কোর বা এম্বেডিং নির্ধারণ করে, পার্থক্যটি কম হওয়া উচিত (অন্যথায় এটি প্রতিনিধিটির সাথে একটি ত্রুটি)। তবে এসএসডি মডেলগুলির 'সনাক্তকরণ ক্লাস' এর মতো আউটপুটগুলি ব্যাখ্যা করা একটু কঠিন। উদাহরণস্বরূপ, এটি এই সরঞ্জামটি ব্যবহার করে কোনও পার্থক্য দেখাতে পারে, তবে এর অর্থ প্রতিনিধিটির সাথে সত্যিকার অর্থে কিছু ভুল হতে পারে না: দুটি (নকল) শ্রেণি বিবেচনা করুন: "টিভি (আইডি: 10)", "মনিটর (আইডি: 20)" - যদি কোনও প্রতিনিধি স্বর্ণের সত্য থেকে কিছুটা দূরে থাকে এবং টিভির পরিবর্তে মনিটর দেখায়, এই টেন্সরের আউটপুট আলাদা হতে পারে 20-10 = 10 এর চেয়ে বেশি কিছু হতে পারে।