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

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

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

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

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

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

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

TensorFlow হাব মডিউল: এই মডেল যে TensorFlow হাব, ভাগ করতে এবং মডেল আবিষ্কার জন্য একটি প্ল্যাটফর্মে বিতরণের জন্য প্যাকেজ করা হয়েছে। মডেল গ্রন্থাগার খুঁজে পাওয়া যেতে পারে এখানে

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

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

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

বিভিন্ন মডেল ফরম্যাটের সংশ্লিষ্ট কমান্ড লাইন আর্গুমেন্ট সম্পর্কে আরো বিস্তারিত রূপান্তরকারী TensorFlow.js পাওয়া যাবে README

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

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

সেরা অনুশীলন

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

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

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

একটি রূপান্তরিত TensorFlow SavedModel বা TensorFlow হাব মডিউলের জন্য API দেখতে কেমন তা এখানে:

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

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

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

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

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