1. ভূমিকা
তাহলে আপনি TensorFlow.js দিয়ে একটি কাস্টম মেশিন লার্নিং মডেল তৈরি করেছেন কিন্তু এখন আপনার পছন্দের ওয়েবসাইটে ব্যবহারের জন্য এটি কোথাও হোস্ট করতে হবে। এটি করার জন্য অনেক বিকল্প আছে, কিন্তু আজ আমরা দেখব Firebase হোস্টিং ব্যবহার করা কতটা সহজ যা আপনাকে কিছু অতিরিক্ত সুবিধাও দিতে পারে যেমন ভার্সনিং, একটি নিরাপদ সংযোগের মাধ্যমে মডেল পরিবেশন করা এবং আরও অনেক কিছু।
তুমি কী তৈরি করবে
এই কোড ল্যাবে আপনি একটি সম্পূর্ণ এন্ড-টু-এন্ড সিস্টেম তৈরি করবেন যা একটি কাস্টম সেভড TensorFlow.js মডেল এবং এর সাথে সম্পর্কিত সম্পদ যেমন HTML, CSS এবং JavaScript হোস্টিং এবং চালাতে সক্ষম। আমরা একটি খুব সহজ লাইটওয়েট মডেল তৈরি করব যা কিছু ইনপুট মান (যেমন বর্গফুটেজ দেওয়া বাড়ির দাম কত) দিয়ে একটি সংখ্যাসূচক আউটপুট মান পূর্বাভাস দিতে পারে এবং এটি Firebase Hosting এর মাধ্যমে হোস্ট করব যাতে এটি স্কেলে ব্যবহার করা যায়।
তুমি কি শিখবে
- কিভাবে একটি কাস্টম TensorFlow.js মডেল সঠিক ফরম্যাটে সংরক্ষণ করবেন
- হোস্টিংয়ের জন্য কীভাবে একটি ফায়ারবেস অ্যাকাউন্ট সেটআপ করবেন
- ফায়ারবেস হোস্টিং-এ আপনার সম্পদ কীভাবে স্থাপন করবেন
- একটি মডেলের নতুন সংস্করণ কীভাবে স্থাপন করবেন।
অনুগ্রহ করে মনে রাখবেন: এই কোড ল্যাবের মূল লক্ষ্য হলো কীভাবে একটি কাস্টম প্রশিক্ষিত মডেল নেওয়া যায় এবং নিখুঁত মডেল আর্কিটেকচার তৈরির কোর্সের পরিবর্তে এটি স্থাপনের জন্য হোস্ট করা যায়, তাই আমরা একটি তুচ্ছ উদাহরণ ব্যবহার করে মেশিন লার্নিং মডেল তৈরির মাধ্যমে দ্রুত এগিয়ে যাব। আপনি যে মডেলই তৈরি করুন না কেন, নীতিগুলি একই থাকবে।
আপনার তৈরি জিনিস আমাদের সাথে শেয়ার করুন
এই স্ট্যাক ব্যবহার করে যদি আপনি কিছু অসাধারণ তৈরি করে থাকেন, তাহলে আমাদের জানান! আমরা আপনার তৈরি জিনিসগুলি দেখতে আগ্রহী।
আপনার প্রকল্পটি আমাদের TensorFlow ব্লগে অথবা আমাদের Show & Tells এর মতো ভবিষ্যতের ইভেন্টগুলিতে প্রদর্শিত হওয়ার সুযোগ পেতে #MadeWithTFJS হ্যাশট্যাগ ব্যবহার করে সোশ্যাল মিডিয়ায় আমাদের ট্যাগ করুন।
২. ফায়ারবেস হোস্টিং কী?
ফায়ারবেস হোস্টিং আপনার ওয়েব অ্যাপ, স্ট্যাটিক / ডায়নামিক কন্টেন্ট এবং মাইক্রোসার্ভিসেসের জন্য দ্রুত এবং নিরাপদ প্রোডাকশন-গ্রেড হোস্টিং প্রদান করে।
একটি মাত্র কমান্ডের মাধ্যমে, আপনি দ্রুত ওয়েব অ্যাপ স্থাপন করতে পারেন এবং একটি বিশ্বব্যাপী CDN (কন্টেন্ট ডেলিভারি নেটওয়ার্ক) তে কন্টেন্ট পরিবেশন করতে পারেন যাতে আপনার কন্টেন্ট প্রায় যেকোনো জায়গায় কম ল্যাটেন্সিতে পাওয়া যায়। আপনি Firebase Cloud Functions বা Cloud Run এর সাথে Firebase Hosting পেয়ার করে মাইক্রোসার্ভিসেস তৈরি এবং হোস্ট করতে পারেন, তবে এটি এই কোডল্যাবের আওতার বাইরে।
ফায়ারবেস হোস্টিং এর মূল ক্ষমতা
- একটি নিরাপদ সংযোগের মাধ্যমে কন্টেন্ট পরিবেশন করুন - আধুনিক ওয়েব নিরাপদ। প্রায়শই ক্লায়েন্ট সাইডে সেন্সর অ্যাক্সেস করার জন্য সাইটটিকে একটি নিরাপদ প্রেক্ষাপটের মাধ্যমে সরবরাহ করতে হয়। জিরো-কনফিগারেশন SSL ফায়ারবেস হোস্টিং-এ অন্তর্নির্মিত, তাই হোস্ট করা সমস্ত ফাইলের জন্য কন্টেন্ট সর্বদা নিরাপদে সরবরাহ করা হয়।
- স্ট্যাটিক এবং ডাইনামিক কন্টেন্ট হোস্ট করুন এবং প্রমাণীকরণের জন্য সমর্থন সহ মাইক্রোসার্ভিসেস করুন যাতে শুধুমাত্র লগ ইন করা ব্যবহারকারীরা ইচ্ছা করলে সেই ফাইলগুলি লোড / দেখতে পারেন।
- দ্রুত কন্টেন্ট ডেলিভারি - আপনার আপলোড করা প্রতিটি ফাইল বিশ্বজুড়ে CDN প্রান্তে SSD-তে ক্যাশে করা হয়। আপনার ব্যবহারকারীরা যেখানেই থাকুন না কেন, কন্টেন্ট দ্রুত ডেলিভারি করা হয়।
- একটি কমান্ড দিয়ে নতুন ভার্সন স্থাপন করুন - Firebase কমান্ড লাইন ইন্টারফেস ব্যবহার করে, আপনি আপনার অ্যাপটি কয়েক সেকেন্ডের মধ্যেই চালু করতে পারবেন।
- এক ক্লিকেই রোলব্যাক - দ্রুত স্থাপনা দুর্দান্ত, তবে ভুলগুলি পূর্বাবস্থায় ফিরিয়ে আনতে সক্ষম হওয়া আরও ভাল। ফায়ারবেস হোস্টিং এক-ক্লিক রোলব্যাকের মাধ্যমে পূর্ণ সংস্করণ এবং রিলিজ ব্যবস্থাপনা প্রদান করে।
আপনি একটি সাধারণ অ্যাপ ল্যান্ডিং পৃষ্ঠা বা একটি জটিল প্রোগ্রেসিভ ওয়েব অ্যাপ (PWA) স্থাপন করুন না কেন, হোস্টিং আপনাকে ওয়েবসাইট এবং অ্যাপ স্থাপন এবং পরিচালনার জন্য তৈরি অবকাঠামো, বৈশিষ্ট্য এবং সরঞ্জাম সরবরাহ করে।
ডিফল্টরূপে, প্রতিটি Firebase প্রকল্পের web.app এবং firebaseapp.com ডোমেনে বিনামূল্যে সাবডোমেন থাকে। এই দুটি সাইট একই ধরণের কন্টেন্ট এবং কনফিগারেশন পরিবেশন করে। আপনি চাইলে আপনার নিজস্ব ডোমেন নামটি Firebase-হোস্টেড সাইটের সাথেও সংযুক্ত করতে পারেন।
বাস্তবায়নের পদক্ষেপ
- একটি প্রকল্প সেট আপ করুন
- Firebase কমান্ড লাইন ইন্টারফেস ইনস্টল + কনফিগার করুন
- আপনার সাইট স্থাপন করুন
- কর্মক্ষমতা পর্যবেক্ষণের জন্য Firebase ওয়েব অ্যাপের লিঙ্ক (ঐচ্ছিক)
কিন্তু এর আগে আমাদের একটি মেশিন লার্নিং মডেল এবং ওয়েব অ্যাপ স্থাপন করতে হবে। তাহলে চলুন একটি তৈরি করি!
৩. বাড়ির দাম পূর্বাভাস দেওয়ার জন্য একটি সহজ মেশিন লার্নিং মডেল
এই অনুশীলনের উদ্দেশ্যে আমরা একটি খুব সহজ ML মডেল তৈরি করব যা সংখ্যাসূচক মান ভবিষ্যদ্বাণী করে। আমরা কেবল উদাহরণের উদ্দেশ্যে বর্গফুটে আকারের একটি কাল্পনিক বাড়ির মূল্য ভবিষ্যদ্বাণী করার জন্য মেশিন লার্নিং ব্যবহার করার চেষ্টা করব। আসলে এই ডেমোতে আমরা আমাদের প্রশিক্ষণের তথ্যের জন্য বাড়ির পূর্বাভাসিত মূল্য পেতে বাড়ির বর্গফুটকে 1000x করব, তবে মেশিন লার্নিংকে এটি নিজেই শিখতে হবে।
বাস্তবে আপনি বাস্তব জগতের ডেটা ব্যবহার করতে পছন্দ করবেন যার সম্পর্ক আরও জটিল হতে পারে (যেমন ছোট বাড়ির জন্য ডলারের মূল্য অনুমান করার জন্য এটির আকার মাত্র 500x, কিন্তু একটি নির্দিষ্ট সীমার পরে এটি ধীরে ধীরে 1000x হয়ে যায় ইত্যাদি) এবং সেই মানগুলি কীভাবে ভবিষ্যদ্বাণী করা যায় তা শেখার জন্য আপনার আরও উন্নত মডেলের প্রয়োজন হতে পারে।
আজ আমরা যে মডেলটি তৈরি করব (লিনিয়ার রিগ্রেশন) তা বাস্তব জগতের পর্যাপ্ত তথ্যের ভিত্তিতে আরও অনেক কিছুর পূর্বাভাস দিতে ব্যবহার করা যেতে পারে এবং উপরের আমাদের কাল্পনিক ব্যবহারের ক্ষেত্রে এটি দিয়ে শুরু করা সহজ। তবে আজ আমাদের লক্ষ্য হল একটি মডেল কীভাবে সংরক্ষণ এবং স্থাপন করতে হয় তা শেখা, বনাম একটি নির্দিষ্ট ব্যবহারের ক্ষেত্রে একটি মডেল ডিজাইন এবং অপ্টিমাইজ করা। তাহলে আসুন শুরু করা যাক!
প্রশিক্ষণ ও পরীক্ষার তথ্য
সকল ML মডেলের জন্য কিছু নমুনা প্রশিক্ষণ ডেটা সংগ্রহ করা শুরু হয় যা আমরা ভবিষ্যতের মানগুলি পূর্বাভাস দিতে সক্ষম হওয়ার জন্য মডেলটিকে শেখানোর জন্য ব্যবহার করতে পারি। সাধারণত আপনি একটি ডাটাবেস, ফাইলের ফোল্ডার, CSV বা আরও অনেক কিছু থেকে এই ধরনের ডেটা নিতে পারেন, তবে এখানে আমরা নীচে দেখানো হিসাবে জাভাস্ক্রিপ্টে অ্যারে হিসাবে 20 টি উদাহরণ সরাসরি হার্ডকোড করব। আমরা এই কোডটি এমন একটি পরিবেশে প্রতিলিপি করার পরামর্শ দিচ্ছি যেখানে আপনি এখন কোডিং করতে খুশি, যেমন Glitch.com , অথবা যদি আপনি localhost এ একটি সার্ভার চালাতে সক্ষম হন তবে স্থানীয়ভাবে আপনার নিজস্ব টেক্সট এডিটর।
মডেল.জেএস
// House square footage.
const data = [800, 850, 900, 950, 980, 1000, 1050, 1075, 1100, 1150, 1200, 1250, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000];
// Estimated dollar cost of house for each piece of data above (1000x square footage).
const answers = [800000, 850000, 900000, 950000, 980000, 1000000, 1050000, 1075000, 1100000, 1150000, 1200000, 1250000 , 1300000, 1400000, 1500000, 1600000, 1700000, 1800000, 1900000, 2000000];
// Testing data separate from training data.
const dataTest = [886, 1225, 500];
const answersTest = [886000, 1225000, 500000];
আপনি দেখতে পাচ্ছেন যে প্রতিটি তথ্যের জন্য আমাদের একটি অনুরূপ উত্তর মান থাকে যা ভবিষ্যতে আমরা যে মানটি চেষ্টা করব এবং ভবিষ্যদ্বাণী করব (আপনি এগুলিকে একটি সাধারণ 2D গ্রাফে x এবং y মান হিসাবে কল্পনা করতে পারেন)।
তাই ৮০০ মানের জন্য, আমরা $৮০০,০০০ এর একটি আউটপুট উত্তর অনুমান তৈরি করতে চাই। ৯০০ মানের জন্য আমরা $৯০০,০০০ আউটপুট করব, ইত্যাদি। মূলত সংখ্যাটিকে ১০০০ দিয়ে গুণ করা হয়। তবে ML মডেলটি ১০০০ * N এর এই সহজ সম্পর্ক সম্পর্কে জানে না, এবং আমাদের দেওয়া এই উদাহরণগুলি থেকে এটি নিজেই শিখতে হবে।
লক্ষ্য করুন যে আমাদের কাছে কিছু পরীক্ষার তথ্য রয়েছে যা প্রশিক্ষণ তথ্য থেকে সম্পূর্ণ আলাদা। এটি আমাদের প্রশিক্ষিত মডেলটিকে মূল্যায়ন করতে সাহায্য করে যে এটি আগে কখনও দেখা যায়নি এমন ডেটার উপর কতটা ভালো কাজ করে।
আমরা নিম্নলিখিত html ব্যবহার করে TensorFlow.js লাইব্রেরির সাথে এই স্ক্রিপ্টটি লোড করব:
ট্রেন.এইচটিএমএল
<!DOCTYPE html>
<html lang="en">
<head>
<title>Training Model</title>
<meta charset="utf-8">
</head>
<body>
<!-- Import TensorFlow.js library -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs/dist/tf.min.js" type="text/javascript"></script>
<!-- Import our JS code to train the model -->
<script src="/model.js" defer></script>
</body>
</html>
মডেলকে প্রশিক্ষণ দেওয়া
এরপর ফাইলের শেষে উপরে আমাদের বিদ্যমান JS কোডের সাথে নীচের কোডটি যোগ করে মডেলটিকে প্রশিক্ষণ দেওয়ার সময় এসেছে।
কৌতূহলীদের জন্য মন্তব্য যোগ করা হয়েছে, কিন্তু যেমন উল্লেখ করা হয়েছে, এই কোডল্যাবটি একটি সংরক্ষিত মডেল নেওয়া এবং হোস্ট করার বিষয়ে আরও বেশি কিছু। মডেল তৈরি সম্পর্কে আরও বিস্তারিত জানতে হলে শেষে আরও কোডল্যাব লিঙ্ক করা আছে। আপাতত আপনি আপনার প্রকল্পে কোডটি কপি করে পেস্ট করতে পারেন।
মডেল.জেএস
// Create Tensor representations of our vanilla JS arrays above
// so can be used to train our model.
const trainTensors = {
data: tf.tensor2d(data, [data.length, 1]),
answer: tf.tensor2d(answers, [answers.length, 1])
};
const testTensors = {
data: tf.tensor2d(dataTest, [dataTest.length, 1]),
answer: tf.tensor2d(answersTest, [answersTest.length, 1])
};
// Now actually create and define model architecture.
const model = tf.sequential();
// We will use one dense layer with 1 neuron and an input of
// a single value.
model.add(tf.layers.dense({inputShape: [1], units: 1}));
// Choose a learning rate that is suitable for the data we are using.
const LEARNING_RATE = 0.0001;
train();
async function train() {
// Compile the model with the defined learning rate and specify
// our loss function to use.
model.compile({
optimizer: tf.train.sgd(LEARNING_RATE),
loss: 'meanAbsoluteError'
});
// Finally do the training itself over 500 iterations of the data.
// As we have so little training data we use batch size of 1.
// We also set for the data to be shuffled each time we try
// and learn from it.
let results = await model.fit(trainTensors.data, trainTensors.answer, {epochs: 500, batchSize: 1, shuffle: true});
// Once trained we can evaluate the model.
evaluate();
}
async function evaluate(stuff) {
// Predict answer for a single piece of data.
model.predict(tf.tensor2d([[768]])).print();
}
উপরের কোডটি ব্যবহার করে আমরা এমন একটি মডেল তৈরি করতে সক্ষম হয়েছি যা ইনপুট মান অনুসারে আউটপুট মান পূর্বাভাস দিতে সক্ষম। উপরের কোডটি চালানোর সময় আমি ইনপুট মান 768 এর জন্য 768,073 এর পূর্বাভাস পেয়েছি যা আপনার ব্রাউজারের ডেভেলপার কনসোলে প্রিন্ট করা হয়েছে (যদি আপনার কাছে ইতিমধ্যে এটি খোলা না থাকে তবে এটি খুলতে F12 টিপুন)। এটি বাড়ির দামের একটি মোটামুটি ভালো অনুমান, কারণ আমরা এমন উদাহরণ দিয়েছি যা ইনপুটের চেয়ে 1000 গুণ বেশি ছিল। দ্রষ্টব্য: আপনার পূর্বাভাসিত মান কিছুটা ভিন্ন হতে পারে এবং এটি স্বাভাবিক।
যদি আমরা এই পারফরম্যান্সে খুশি হই, তাহলে এখন আমাদের যা করতে হবে তা হল এই মডেলটি ডিস্কে সংরক্ষণ করা যাতে আমরা এটি Firebase Hosting-এ আপলোড করতে পারি!
মডেল সংরক্ষণ করা হচ্ছে
উপরে evaluate ফাংশনের শেষে (model.predict এর পরে) নিচের কোডটি যোগ করলে আমরা ওয়েব ব্রাউজার থেকে সরাসরি প্রশিক্ষণ সম্পন্ন হওয়ার পরে ফলাফল মডেলটি রপ্তানি করতে এবং ডিস্কে সংরক্ষণ করতে পারি যাতে আমরা কোথাও হোস্ট করতে পারি এবং ভবিষ্যতে পৃষ্ঠাটি লোড করার সময় পুনরায় প্রশিক্ষণ না দিয়ে এটি ব্যবহার করতে পারি।
মডেল.জেএস
await model.save('downloads://my-model');
আপনি যদি এখন train.html এ যান এবং পৃষ্ঠাটি চালান তবে এটি মডেলটিকে প্রশিক্ষণ দেবে (যা কয়েক সেকেন্ড সময় নিতে পারে) এবং তারপরে সম্পূর্ণ হয়ে গেলে ফলস্বরূপ প্রশিক্ষিত মডেলটি ডাউনলোড করার জন্য অনুরোধ জানানো হবে।
৪. ফায়ারবেস সেট আপ করা
Firebase-এ সাইন ইন করুন এবং একটি প্রকল্প তৈরি করুন
আপনি যদি Firebase-এ নতুন হন, তাহলে আপনার Google অ্যাকাউন্ট ব্যবহার করে সাইন আপ করা সহজ। https://firebase.google.com/ এ যান এবং আপনার নিয়মিত Google অ্যাকাউন্ট দিয়ে সাইন ইন করুন যা আপনি ব্যবহার করতে চান। একবার আপনাকে হোম পেজে পুনঃনির্দেশিত করা হলে, পৃষ্ঠার উপরের ডানদিকে "go to console" এ ক্লিক করুন:

একবার আপনাকে কনসোলে পুনঃনির্দেশিত করা হলে আপনি এইরকম একটি ল্যান্ডিং পৃষ্ঠা দেখতে পাবেন:

একটি নতুন Firebase প্রকল্প তৈরি করতে, আপনার প্রকল্পটিকে একটি অনন্য নাম দিন, শর্তাবলী গ্রহণ করুন এবং চালিয়ে যান ক্লিক করুন।
এরপর আপনাকে জিজ্ঞাসা করা হবে যে আপনি কি আপনার প্রকল্পে বিশ্লেষণ যোগ করতে চান। যদি আপনি এই ধরনের বিশ্লেষণে অ্যাক্সেস পেতে চান তবে নির্দ্বিধায় এই বিকল্পটি সক্ষম করুন এবং দেখানো হিসাবে চালিয়ে যান ক্লিক করুন:

যদি সবকিছু ঠিকঠাক থাকে, তাহলে আপনাকে দেখানো একটি প্রকল্প প্রস্তুত পৃষ্ঠার সাথে স্বাগত জানানো হবে:

ওহ! আমাদের একটি প্রজেক্ট আছে। নতুন তৈরি প্রজেক্টের কনসোলে যেতে "চালু থাকুন" এ ক্লিক করুন। পরে ব্যবহারের জন্য পৃষ্ঠাটি খোলা রাখুন তবে আপাতত আমাদের কিছু টুলিং ইনস্টল করতে হবে।
CLI ইনস্টল এবং সংযোগ করা হচ্ছে
ফায়ারবেস একটি নোড এনপিএম প্যাকেজ হিসেবে পাওয়া যায় যা আপনি কমান্ড লাইন ইন্টারফেস (CLI) এর মাধ্যমে ইনস্টল এবং ব্যবহার করতে পারেন যা আপনার স্থানীয় ফাইল এবং ফোল্ডারগুলিকে ফায়ারবেস হোস্টিং-এ স্থাপন করা সহজ করে তোলে। আজকের টিউটোরিয়ালে আমরা একটি লিনাক্স পরিবেশ ব্যবহার করব, তবে যদি আপনার উইন্ডোজ বা ম্যাক থাকে, তাহলে আপনি আপনার ডিভাইসে সিএলআই টুলিং সেট আপ করতে এখানে নির্দেশাবলী অনুসরণ করতে পারেন।
তবে লিনাক্সে, আমরা প্রথমে NPM এবং Node.js ইনস্টল করব যদি এটি ইতিমধ্যেই না থাকে ( অন্যান্য পরিবেশ ব্যবহার করলে এই নির্দেশাবলী অনুসরণ করুন) একটি টার্মিনাল উইন্ডোতে নিম্নলিখিত 3টি কমান্ড ব্যবহার করে:
কমান্ড লাইন টার্মিনাল:
sudo apt update
কমান্ড লাইন টার্মিনাল:
sudo apt install nodejs
কমান্ড লাইন টার্মিনাল:
sudo apt install npm
এখন Node.js এবং NPM ইনস্টল করা হয়ে গেছে, Firebase কমান্ড লাইন টুল ইনস্টল করার জন্য আপনাকে কেবল একটি টার্মিনাল উইন্ডোতে নিম্নলিখিতগুলি চালাতে হবে:
কমান্ড লাইন টার্মিনাল:
sudo npm install -g firebase-tools
দারুন! আমরা এখন আমাদের ফায়ারবেস প্রজেক্টকে আমাদের সিস্টেমের সাথে সংযুক্ত করতে প্রস্তুত যাতে আমরা ফাইলগুলিকে এতে পুশ করতে পারি এবং আরও অনেক কিছু করতে পারি।
ফায়ারবেসে লগ ইন করা হচ্ছে
নিম্নলিখিত কমান্ডটি চালিয়ে আপনার গুগল অ্যাকাউন্ট ব্যবহার করে ফায়ারবেসে লগ ইন করুন:
কমান্ড লাইন টার্মিনাল:
firebase login
দেখানো হয়েছে, আপনার Google Firebase অ্যাকাউন্টে অ্যাক্সেস দেওয়ার জন্য আপনাকে বলা হবে:

এটিকে অনুমতি দিন এবং অবশেষে আপনি আপনার কমান্ড লাইন টুলের সাথে আপনার ফায়ারবেস অ্যাকাউন্টের একটি সফল সংযোগ দেখতে পাবেন:

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

অভিনন্দন! আমরা এখন আমাদের স্থানীয় মেশিন থেকে আমাদের তৈরি প্রকল্পে ফাইল পুশ করতে প্রস্তুত।
ফায়ারবেস হোস্টিং-এ স্থাপনের জন্য আপনার প্রকল্পটি শুরু করা হচ্ছে
আপনার স্থানীয় ফোল্ডারটিকে আপনার Firebase প্রকল্পের সাথে সংযুক্ত করতে, আপনার স্থানীয় প্রকল্প ডিরেক্টরির রুট থেকে নিম্নলিখিত কমান্ডটি চালান (যে ফোল্ডারটি আপনি স্থাপনের সময় ফাইল আপলোড করার জন্য ব্যবহার করতে চান)।
কমান্ড লাইন টার্মিনাল:
firebase init
এই কমান্ডটি কার্যকর করার পরে, নীচে দেখানো সেটআপ সম্পূর্ণ করতে টার্মিনালে নির্দেশাবলী অনুসরণ করুন:

এখানে আমরা কেবল আপনার কীবোর্ডের ডাউন তীর ব্যবহার করে Hosting নির্বাচন করতে পারি এবং তারপর নির্বাচন করতে স্পেসবার টিপুন, এবং তারপর নিশ্চিত করতে এন্টার টিপুন।
এখন আমরা আগে তৈরি করা বিদ্যমান প্রকল্পটি ব্যবহার করার জন্য নির্বাচন করতে পারি:

"use an existing project" এ এন্টার টিপুন এবং তারপর নিচের চিত্রের মতো ডাউন অ্যারো কী ব্যবহার করে এটি নির্বাচন করুন:

অবশেষে এটি ব্যবহার করার জন্য এন্টার টিপুন এবং তারপর পপ আপ হওয়া চূড়ান্ত স্ক্রিনে ডিফল্টগুলি গ্রহণ করুন এবং একক পৃষ্ঠা অ্যাপ্লিকেশন হিসাবে কনফিগার করতে "না" বলুন:

এটি আপনাকে একাধিক HTML পৃষ্ঠা হোস্ট করার অনুমতি দেবে যদি আপনি এটি করতে চান।
এখন ইনিশিয়ালাইজেশন সম্পন্ন হলে আপনি দেখতে পাবেন যে একটি firebase.json ফাইল এবং একটি "public" ফোল্ডার তৈরি হয়েছে যেখানে আমরা উপরের কমান্ডগুলি কার্যকর করেছি।

এখন আমাদের যা করতে হবে তা হল আমরা যে ফাইলগুলি স্থাপন করতে চাই সেগুলি আমাদের তৈরি করা পাবলিক ফোল্ডারে স্থানান্তর করা এবং স্থাপন করা ভালো হবে! এখনই এটি করা যাক।
৫. আপনার TensorFlow.js ওয়েবপেজ তৈরি করা
আপনার সংরক্ষিত মডেল লোড হচ্ছে
প্রথমে নিশ্চিত করা যাক যে আমরা কোডল্যাবে আগে সংরক্ষিত মেশিন লার্নিং মডেলটি Firebase দিয়ে তৈরি আমাদের পাবলিক ফোল্ডারে কপি করেছি। আপনার সংরক্ষিত ফাইলগুলিকে কেবল এই ফোল্ডারে টেনে এনে ফেলে দিন যেমন দেখানো হয়েছে:

আপনি Firebase আমাদের জন্য index.html এবং 404.html ফাইল তৈরি করেছে তাও লক্ষ্য করবেন। আসুন আপনার মেশিনে আপনার পছন্দের টেক্সট এডিটর ব্যবহার করে index.html সম্পাদনা করি যাতে আমরা দেখানো হিসাবে আমাদের নিজস্ব কাস্টম কোড যুক্ত করতে পারি:
সূচক.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello World - TensorFlow.js</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Import the webpage's stylesheet -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>TensorFlow.js Hello World</h1>
<p>Check the console (Press F12) to see predictions!</p>
<!-- Import TensorFlow.js library -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs/dist/tf.min.js" type="text/javascript"></script>
<!-- Import the page's JavaScript to do some stuff -->
<script src="script.js" defer></script>
</body>
</html>
উপরে index.html এর জন্য আমাদের নতুন কোডে আমরা একটি স্টাইল শিট নির্দিষ্ট করেছি যাতে আমরা পরে যদি পছন্দ করি তাহলে আমাদের পৃষ্ঠায় স্টাইল যোগ করতে পারি, এবং script.js আমাদের TensorFlow.js সংরক্ষিত মডেল ব্যবহার করার জন্য যে কোডটি লিখতে হবে তা হোস্ট করার জন্য।
চলুন এখনই সেই ফাইলগুলি তৈরি করি এবং সেগুলিকে নিম্নরূপে পূরণ করি যাতে তারা কিছু কার্যকরী করে:
স্টাইল.সিএসএস
/** Leave blank for now **/
স্ক্রিপ্ট.জেএস
// Load our saved model from current directory (which will be
// hosted via Firebase Hosting)
async function predict() {
// Relative URL provided for my-model.json.
const model = await tf.loadLayersModel('my-model.json');
// Once model is loaded, let's try using it to make a prediction!
// Print to developer console for now.
model.predict(tf.tensor2d([[1337]])).print();
}
predict();
আপনি যদি সঠিকভাবে পদক্ষেপগুলি অনুসরণ করে থাকেন তবে এখন আমাদের তৈরি করা পাবলিক ফোল্ডারে নিম্নলিখিত সম্পাদিত ফাইলগুলি দেখতে পাবেন:

এখন আমাদের যা করতে হবে তা হল আমাদের ফাইলগুলি স্থাপন করা যাতে আমরা এটি কাজ করে তা পরীক্ষা করতে পারি!
৬. আপনার মডেল এবং ওয়েবসাইট স্থাপন করা
লাইভ হচ্ছে
আপনার স্থানীয় মেশিনের ফায়ারবেস প্রজেক্ট ফোল্ডারে খোলা টার্মিনাল উইন্ডোতে ফিরে যান (এটি সেই ফোল্ডার যেখানে ফায়ারবেস init ফাইলগুলির সাথে উপরে আমাদের "পাবলিক" ফোল্ডার রয়েছে)।
আপনার পাবলিক ফোল্ডার ফাইল স্থাপন করতে কেবল নিম্নলিখিতটি টাইপ করুন:
কমান্ড লাইন টার্মিনাল:
firebase deploy
টার্মিনাল কমান্ডটি সম্পূর্ণ হতে দিন এবং আপনার একটি সফল রিলিজ সম্পন্ন হবে এবং এটি ব্যবহার করার জন্য আপনি যে URL ব্যবহার করতে পারেন তাও থাকবে:

উপরের উদাহরণে আপনি আমাদের স্থাপনা দেখার জন্য চূড়ান্ত url দেখতে পাবেন:
https://tensorflow-js-demo.web.app (কিন্তু আপনার URL টি আপনার তৈরি করা প্রকল্পের নাম হবে)।
এই URL টি একটি ওয়েব ব্রাউজারে খুলুন এবং দেখুন এটি কাজ করছে কিনা। যদি সফল হয়, তাহলে আপনার খোলা পৃষ্ঠার ডেভেলপার কনসোলে এরকম কিছু প্রিন্ট করবে (ডেভেলপার কনসোল খুলতে F12 টিপুন)।

আপনি দেখতে পাচ্ছেন যে ডিপ্লয়েড ডোমেনে পৃষ্ঠাটি লোড হচ্ছে, এবং আমরা সঠিকভাবে আমাদের মডেলের ১৩৩৭ বর্গফুটের পূর্বাভাস দেখতে পাচ্ছি, যা $১,৩৩৬,৯৯৯.২৫ হিসাবে আসে যা সত্যিই একটি খুব ভালো অনুমান কারণ আমরা আশা করেছিলাম যে এটি প্রতি বর্গফুটের ১০০০x হবে। অবশ্যই আমরা যত খুশি ভবিষ্যদ্বাণী করতে পারি যদি আমরা মডেলটিকে কল করার জন্য একটি সুন্দর ইউজার ইন্টারফেস তৈরি করি এবং এটি সম্পূর্ণরূপে জাভাস্ক্রিপ্টে চলবে এবং আপনার প্রশ্নগুলি গোপন এবং সুরক্ষিত থাকবে।
এখন যেহেতু আপনার মডেলটি স্থাপন এবং হোস্ট করা হয়েছে, আপনি বিশ্বের যে কারও সাথে ওয়েবসাইটটি শেয়ার করতে পারেন এবং তারা তাদের মেশিনে আপনার অ্যাপ্লিকেশনটি ব্যবহার করতে সক্ষম হবে। স্পষ্টতই আপনি আরও ভাল ইউজার ইন্টারফেস যুক্ত করতে এবং এটিকে দুর্দান্ত দেখাতে চাইতে পারেন, তবে এটি এই টিউটোরিয়ালের আওতার বাইরে। মেশিন লার্নিং দ্বারা চালিত এই ধরণের সম্ভাব্য ওয়েব অ্যাপ হোস্ট করার কোনও সীমা নেই যা এক ক্লিকেই কাজ করতে পারে এবং কোনও ইনস্টলেশনের প্রয়োজন হয় না এবং আমরা আপনাকে ব্রাউজারে মেশিন লার্নিং মডেল থেকে উপকৃত হতে পারে এমন অন্যান্য পরিস্থিতি সম্পর্কে চিন্তা করতে উৎসাহিত করি।
ব্যবহার পর্যবেক্ষণ
আপনার ওয়েবসাইট কোডে আপনি যে কোনও গুগল অ্যানালিটিক্স যোগ করতে পারেন তা ছাড়াও, ফায়ারবেস আপনার প্রকল্পের জন্য কনসোলের মাধ্যমে সংস্করণ এবং ব্যবহারের পরিসংখ্যানও অফার করে। স্থাপনের পরে আপনি এরকম কিছু দেখতে পাবেন যা আপনি প্রয়োজন অনুসারে সময়ে সময়ে পরীক্ষা করতে পারেন:


আপনি দেখতে পাচ্ছেন, ডিফল্টরূপে, ফ্রি টিয়ারে আপনি আপনার হোস্ট করা ফাইলগুলির জন্য প্রতি মাসে 10GB ব্যান্ডউইথ পাবেন। যদি আপনার সাইটটি বেশি জনপ্রিয় হয় তবে আপনাকে একটি নির্দিষ্ট মাসে এর চেয়ে বেশি ব্যবহার করার জন্য একটি বিলিং অ্যাকাউন্ট যুক্ত করতে হতে পারে। আপনি এখানে বৃহত্তর প্রকল্পগুলির জন্য ফায়ারবেস প্ল্যানগুলি পরীক্ষা করে দেখতে পারেন যদিও প্রোটোটাইপের জন্য বেশিরভাগ সাধারণ ব্যবহারকারী সম্ভবত ফ্রি টিয়ার অতিক্রম করবেন না যদি আপনার মডেলটি ছোট হয় এবং ব্যবহার কম হয় তাই আপনার ব্যবসা বা ধারণা বৃদ্ধির সাথে সাথে একটি পেইড প্ল্যানে প্রতিশ্রুতিবদ্ধ হওয়ার আগে এটি আপনার চাহিদা পূরণ করে কিনা তা পরীক্ষা করার এবং পরীক্ষা করার এটি একটি দুর্দান্ত উপায়।
৭. অভিনন্দন
অভিনন্দন, আপনি Firebase এর সাথে TensorFlow.js ব্যবহার করে একটি কাস্টম মেশিন লার্নিং মডেল তৈরি এবং স্থাপনের প্রথম পদক্ষেপ নিয়েছেন যাতে আপনি এটি বিশ্বের সাথে ভাগ করে নিতে পারেন। এই শক্তিশালী এবং স্কেলেবল পদ্ধতি ব্যবহার করে আপনি আরও কী কী জিনিস তৈরি করতে পারেন তা কল্পনা করুন যা আপনি চাইলে উৎপাদন ব্যবহারের জন্য প্রস্তুত কারণ Firebase স্বয়ংক্রিয়ভাবে চাহিদার সাথে সামঞ্জস্যপূর্ণ হয়, তাই 10, বা 10,000 ব্যবহারকারী এটি ব্যবহার করতে চাইলেও এটি কাজ করবে।
যদি আপনার কোন ফাইল পরিবর্তন করেন, তাহলে আগের মতোই firebase deploy ব্যবহার করে আপনার অ্যাপটি পুনরায় স্থাপন করুন এবং পরবর্তী পৃষ্ঠাটি লোড করার সময় ফাইলগুলির নতুন সংস্করণটি নিশ্চিত করার জন্য আপনার ব্রাউজার ক্যাশে সাফ করতে ভুলবেন না। যদি আপনার ডেভেলপার টুলগুলি খোলা থাকে তবে আপনি এই ট্যাবের উপরের দিকে "ক্যাশে নিষ্ক্রিয় করুন" চেকবক্সটি নির্বাচন করে জিনিসগুলি পরীক্ষা করার সময় নেটওয়ার্ক ট্যাবের অধীনে এটি জোর করে করতে পারেন:

সংক্ষিপ্তসার
এই কোড ল্যাবে আমরা:
- বাড়ির দাম পূর্বাভাস দেওয়ার জন্য সম্পূর্ণরূপে শুরু থেকেই একটি কাস্টম TensorFlow.js মডেল সংজ্ঞায়িত এবং প্রশিক্ষিত করা হয়েছে।
- আপনার ডেভেলপমেন্ট মেশিনে Firebase + Firebase CLI টুলিং সাইন আপ, কনফিগার এবং ইনস্টল করা হয়েছে।
- একটি কার্যকরী ওয়েবসাইট স্থাপন এবং চালু করা হয়েছে যা আমাদের প্রশিক্ষিত মডেলটি ধাপ ১ থেকে লোড করে এবং এটি একটি বাস্তব বিশ্বের ওয়েব অ্যাপ্লিকেশনে ব্যবহার করে যা বিশ্বের যে কোনও জায়গায়, স্কেলে যে কেউ অ্যাক্সেস করতে পারে।
এরপর কী?
এখন যেহেতু আপনার কাছে শুরু করার জন্য একটি কাজের ভিত্তি আছে, এই মেশিন লার্নিং মডেল ডিপ্লয়মেন্ট বয়লারপ্লেটটি প্রসারিত করার জন্য আপনি কোন সৃজনশীল ধারণা নিয়ে আসতে পারেন?
আমরা আপনার নিজস্ব ডেটা ব্যবহার করে এটি ব্যবহার করতে দেখতে চাই। আপনি যে শিল্প বা এলাকায় থাকেন বা কাজ করেন সে সম্পর্কে ভাবুন। আপনি কীভাবে এই ধরণের ডেটা ব্যবহার করে প্রশিক্ষণ নিয়ে ভবিষ্যদ্বাণী করতে পারেন যা ভবিষ্যতে আপনার (অথবা অন্যদের) কাজে লাগতে পারে? রিয়েল এস্টেট এখানে একমাত্র উদাহরণ নয়, এবং আমরা আপনাকে আপনার নিজের চ্যালেঞ্জগুলিতেও এটি প্রয়োগ করতে উৎসাহিত করি। হ্যাকিং শুভ হোক!
#MadeWithTFJS ব্যবহার করে আপনার তৈরি যেকোনো জিনিসে আমাদের ট্যাগ করতে ভুলবেন না (অন্যরা কী তৈরি করেছে তা জানতে এই লিঙ্কে ক্লিক করুন) যাতে আপনি সোশ্যাল মিডিয়ায় প্রদর্শিত হতে পারেন অথবা ভবিষ্যতের TensorFlow ইভেন্টগুলিতে প্রদর্শিত হতে পারেন! আমরা আপনার তৈরি জিনিস দেখতে আগ্রহী এবং অবশ্যই এই কোডল্যাবের লেখকের সাথে যোগাযোগ করুন যদি কোনও প্রতিক্রিয়া বা প্রশ্ন থাকে।
আরও গভীরে যেতে আরও TensorFlow.js কোডল্যাব
- TensorFlow.js-এ শুরু থেকেই একটি নিউরাল নেটওয়ার্ক লিখুন
- TensorFlow.js-এ ট্রান্সফার লার্নিং ব্যবহার করে অডিও স্বীকৃতি
- TensorFlow.js-এ ট্রান্সফার লার্নিং ব্যবহার করে কাস্টম ছবির শ্রেণীবিভাগ