একটি ওয়েব কর্মী ব্যবহার করে একটি মডেল প্রশিক্ষণ

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

অবশ্যই, এটি দুটি পূর্ণসংখ্যা যোগ করার সবচেয়ে কার্যকর উপায় নয়! কিন্তু টিউটোরিয়ালটি ওয়েব ML-এ একটি গুরুত্বপূর্ণ কৌশল প্রদর্শন করে: মূল থ্রেডকে ব্লক না করে কীভাবে দীর্ঘ-চলমান গণনা সম্পাদন করা যায়, যা UI লজিক পরিচালনা করে।

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

উদাহরণ কোড GitHub এ উপলব্ধ।

(ঐচ্ছিক) উদাহরণটি স্থানীয়ভাবে চালান

পূর্বশর্ত

স্থানীয়ভাবে উদাহরণ অ্যাপ্লিকেশন চালানোর জন্য, আপনার উন্নয়ন পরিবেশে নিম্নলিখিত ইনস্টল করা প্রয়োজন:

উদাহরণ অ্যাপটি ইনস্টল করুন এবং চালান

  1. tfjs-examples সংগ্রহস্থল ক্লোন করুন বা ডাউনলোড করুন।
  2. addition-rnn-webworker ডিরেক্টরিতে পরিবর্তন করুন:

    cd tfjs-examples/addition-rnn-webworker
    
  3. নির্ভরতা ইনস্টল করুন:

    yarn
    
  4. বিকাশ সার্ভার শুরু করুন:

    yarn run watch
    

উদাহরণ অন্বেষণ

উদাহরণ অ্যাপটি খুলুন । (অথবা, যদি আপনি স্থানীয়ভাবে উদাহরণটি চালাচ্ছেন, আপনার ব্রাউজারে http://localhost:1234 এ যান।)

আপনি TensorFlow.js: সংযোজন RNN শিরোনামের একটি পৃষ্ঠা দেখতে পাবেন। অ্যাপটি চেষ্টা করার জন্য নির্দেশাবলী অনুসরণ করুন।

ওয়েব ফর্মটি ব্যবহার করে, আপনি নিম্নলিখিতগুলি সহ মডেলকে প্রশিক্ষণ দেওয়ার জন্য ব্যবহৃত কিছু প্যারামিটার আপডেট করতে পারেন:

  • ডিজিটস : পদগুলিতে সর্বাধিক সংখ্যা যোগ করতে হবে।
  • প্রশিক্ষণের আকার : তৈরি করতে প্রশিক্ষণের উদাহরণের সংখ্যা।
  • RNN প্রকার : SimpleRNN , GRU , বা LSTM- এর মধ্যে একটি।
  • RNN লুকানো স্তরের আকার : আউটপুট স্থানের মাত্রা (একটি ধনাত্মক পূর্ণসংখ্যা হতে হবে)।
  • ব্যাচের আকার : গ্রেডিয়েন্ট আপডেট প্রতি নমুনার সংখ্যা।
  • ট্রেনের পুনরাবৃত্তি : model.fit() ব্যবহার করে মডেলকে প্রশিক্ষণ দেওয়ার সংখ্যা
  • পরীক্ষার উদাহরণগুলির # : উৎপন্ন করার জন্য উদাহরণ স্ট্রিংগুলির সংখ্যা (উদাহরণস্বরূপ, 27+41 )।

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

কোড অন্বেষণ

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

ওয়েব কর্মীদের সম্পর্কে আরও জানতে, ওয়েব ওয়ার্কার্স এপিআই এবং ওয়েব ওয়ার্কার ব্যবহার করা দেখুন।

উদাহরণ অ্যাপের প্রধান মডিউল হল index.jsindex.js স্ক্রিপ্ট একটি ওয়েব কর্মী তৈরি করে যা worker.js মডিউল চালায়:

const worker =
    new Worker(new URL('./worker.js', import.meta.url), {type: 'module'});

index.js মূলত একটি একক ফাংশন, runAdditionRNNDemo দ্বারা গঠিত, যা ফর্ম জমা দেয়, ফর্ম ডেটা প্রসেস করে, কর্মীকে ফর্ম ডেটা পাস করে, কর্মীকে মডেল প্রশিক্ষণ দেওয়ার জন্য অপেক্ষা করে এবং ফলাফলগুলি পৃষ্ঠায় প্রদর্শন করে .

কর্মীকে ফর্ম ডেটা পাঠাতে, স্ক্রিপ্টটি কর্মীকে postMessage আহ্বান করে :

worker.postMessage({
  digits,
  trainingSize,
  rnnType,
  layers,
  hiddenSize,
  trainIterations,
  batchSize,
  numTestExamples
});

কর্মী এই বার্তাটি শোনেন এবং ফর্ম ডেটা এমন ফাংশনে পাঠান যা ডেটা প্রস্তুত করে এবং প্রশিক্ষণ শুরু করে:

self.addEventListener('message', async (e) => {
  const { digits, trainingSize, rnnType, layers, hiddenSize, trainIterations, batchSize, numTestExamples } = e.data;
  const demo = new AdditionRNNDemo(digits, trainingSize, rnnType, layers, hiddenSize);
  await demo.train(trainIterations, batchSize, numTestExamples);
})

প্রশিক্ষণের সময়, কর্মী দুটি ভিন্ন ধরনের বার্তা পাঠাতে পারে, যার একটি isPredict সেট true

self.postMessage({
  isPredict: true,
  i, iterations, modelFitTime,
  lossValues, accuracyValues,
});

এবং অপরটি isPredict সহ false সেট করা হয়েছে।

self.postMessage({
  isPredict: false,
  isCorrect, examples
});

যখন UI থ্রেড ( index.js ) বার্তা ইভেন্টগুলি পরিচালনা করে, তখন এটি কর্মীর কাছ থেকে ফিরে আসা ডেটার আকার নির্ধারণ করতে isPredict পতাকা পরীক্ষা করে । যদি isPredict সত্য হয়, তথ্যটি একটি ভবিষ্যদ্বাণী উপস্থাপন করবে এবং স্ক্রিপ্টটি tfjs-vis ব্যবহার করে পৃষ্ঠাটি আপডেট করবে । যদি isPredict মিথ্যা হয়, স্ক্রিপ্ট কোডের একটি ব্লক চালায় যা ধরে নেয় যে ডেটা উদাহরণগুলি উপস্থাপন করে। এটি এইচটিএমএলে ডাটা র‍্যাপ করে এবং পৃষ্ঠায় এইচটিএমএল সন্নিবেশ করায়।

এরপর কি

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

একটি TensorFlow.js মডেল প্রশিক্ষণ সম্পর্কে আরও জানতে, প্রশিক্ষণ মডেল দেখুন।