মডেল রূপান্তর

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

  1. একটি কমান্ড লাইন ইউটিলিটি যা TensorFlow.js-এ ব্যবহারের জন্য Keras এবং TensorFlow মডেলকে রূপান্তর করে।
  2. TensorFlow.js এর সাথে ব্রাউজারে মডেলটি লোড এবং কার্যকর করার জন্য একটি API।

আপনার মডেল রূপান্তর

TensorFlow.js কনভার্টার বিভিন্ন মডেল ফরম্যাটের সাথে কাজ করে:

SavedModel : এটি হল ডিফল্ট ফর্ম্যাট যাতে TensorFlow মডেলগুলি সংরক্ষিত হয়। SavedModel বিন্যাস এখানে নথিভুক্ত করা হয়েছে।

কেরাস মডেল : কেরাস মডেলগুলি সাধারণত একটি HDF5 ফাইল হিসাবে সংরক্ষণ করা হয়। কেরাস মডেল সংরক্ষণ সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে।

টেনসরফ্লো হাব মডিউল : এইগুলি মডেলগুলি ভাগ করে নেওয়া এবং আবিষ্কার করার জন্য টেনসরফ্লো হাব-এ বিতরণের জন্য প্যাকেজ করা হয়েছে৷ মডেল লাইব্রেরি এখানে পাওয়া যাবে.

আপনি কোন ধরণের মডেল রূপান্তর করার চেষ্টা করছেন তার উপর নির্ভর করে, আপনাকে কনভার্টারে বিভিন্ন আর্গুমেন্ট পাস করতে হবে। উদাহরণ স্বরূপ, ধরুন আপনি model.h5 নামের একটি কেরাস মডেল আপনার tmp/ ডিরেক্টরিতে সংরক্ষণ করেছেন। TensorFlow.js কনভার্টার ব্যবহার করে আপনার মডেলকে রূপান্তর করতে, আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন:

$ tensorflowjs_converter --input_format=keras /tmp/model.h5 /tmp/tfjs_model

এটি মডেলটিকে /tmp/model.h5 এ রূপান্তর করবে এবং আপনার tmp/tfjs_model/ ডিরেক্টরিতে বাইনারি ওজন ফাইল সহ একটি model.json ফাইল আউটপুট করবে।

বিভিন্ন মডেল ফরম্যাটের সাথে সম্পর্কিত কমান্ড লাইন আর্গুমেন্ট সম্পর্কে আরও বিশদ বিবরণ TensorFlow.js কনভার্টার README এ পাওয়া যাবে।

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

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

সর্বোত্তম অনুশীলন

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

আপনার মডেল চালান

সফলভাবে আপনার মডেল রূপান্তর করার পরে, আপনি ওজন ফাইলের একটি সেট এবং একটি মডেল টপোলজি ফাইলের সাথে শেষ করবেন। TensorFlow.js মডেল লোডিং API সরবরাহ করে যা আপনি এই মডেল সম্পদগুলি আনতে এবং ব্রাউজারে অনুমান চালাতে ব্যবহার করতে পারেন।

রূপান্তরিত টেনসরফ্লো সেভডমডেল বা টেনসরফ্লো হাব মডিউলের জন্য API দেখতে কেমন তা এখানে রয়েছে:

const model = await tf.loadGraphModel(path/to/model.json);

এবং রূপান্তরিত কেরাস মডেলের জন্য এটি দেখতে কেমন তা এখানে:

const model = await tf.loadLayersModel(path/to/model.json);

tf.loadGraphModel API একটি tf.FrozenModel প্রদান করে, যার মানে প্যারামিটারগুলি স্থির করা হয়েছে এবং আপনি নতুন ডেটার সাথে আপনার মডেলটি ঠিক করতে পারবেন না। tf.loadLayersModel API একটি tf.Model প্রদান করে, যা প্রশিক্ষিত হতে পারে। কিভাবে একটি tf.Model প্রশিক্ষণ দিতে হয় সে সম্পর্কে তথ্যের জন্য, ট্রেন মডেল নির্দেশিকা পড়ুন।

রূপান্তরের পরে, কয়েকবার অনুমান চালানো এবং আপনার মডেলের গতি বেঞ্চমার্ক করা একটি ভাল ধারণা। আমাদের একটি স্বতন্ত্র বেঞ্চমার্কিং পৃষ্ঠা রয়েছে যা এই উদ্দেশ্যে ব্যবহার করা যেতে পারে: https://tensorflow.github.io/tfjs/e2e/benchmarks/local-benchmark/index.html আপনি লক্ষ্য করতে পারেন যে আমরা প্রাথমিক ওয়ার্মআপ রান থেকে পরিমাপ বাতিল করি - এর কারণ (সাধারণভাবে) আপনার মডেলের প্রথম অনুমান পরবর্তী অনুমানের চেয়ে কয়েকগুণ ধীর হবে টেক্সচার তৈরি এবং শেডার কম্পাইল করার কারণে।