1. সংক্ষিপ্ত বিবরণ
|
|
TensorFlow Lite এবং Firebase codelab-এর সুপারিশগুলিতে আপনাকে স্বাগতম। এই কোডল্যাবে আপনি শিখবেন কিভাবে TensorFlow Lite এবং Firebase ব্যবহার করে আপনার অ্যাপে একটি সুপারিশ মডেল স্থাপন করতে হয়। এই কোডল্যাবটি TensorFlow Lite উদাহরণের উপর ভিত্তি করে তৈরি।
সুপারিশগুলি অ্যাপগুলিকে প্রতিটি ব্যবহারকারীর জন্য বুদ্ধিমত্তার সাথে সবচেয়ে প্রাসঙ্গিক কন্টেন্ট পরিবেশন করার জন্য মেশিন লার্নিং ব্যবহার করার অনুমতি দেয়। তারা অতীতের ব্যবহারকারীর আচরণ বিবেচনা করে অ্যাপের কোন কন্টেন্টের সাথে ব্যবহারকারী ভবিষ্যতে ইন্টারঅ্যাক্ট করতে চান তা সুপারিশ করে, যা অন্যান্য ব্যবহারকারীদের সামগ্রিক আচরণের উপর প্রশিক্ষিত একটি মডেল ব্যবহার করে।
এই টিউটোরিয়ালটি দেখায় কিভাবে Firebase Analytics ব্যবহার করে আপনার অ্যাপের ব্যবহারকারীদের কাছ থেকে ডেটা সংগ্রহ করতে হয়, সেই ডেটা থেকে সুপারিশের জন্য একটি মেশিন লার্নিং মডেল তৈরি করতে হয় এবং তারপর সেই মডেলটি একটি অ্যান্ড্রয়েড অ্যাপে ব্যবহার করে অনুমান চালাতে হয় এবং সুপারিশ পেতে হয়। বিশেষ করে, আমাদের সুপারিশগুলি ব্যবহারকারীর পছন্দের সিনেমার তালিকা বিবেচনা করে কোন সিনেমাগুলি সবচেয়ে বেশি দেখা উচিত তা নির্দেশ করবে।
তুমি কি শিখবে
- ব্যবহারকারীর আচরণের তথ্য সংগ্রহের জন্য একটি অ্যান্ড্রয়েড অ্যাপে ফায়ারবেস অ্যানালিটিক্স একীভূত করুন
- সেই ডেটা গুগল বিগ কোয়েরিতে রপ্তানি করুন
- ডেটা প্রাক-প্রক্রিয়াজাত করুন এবং একটি TF Lite সুপারিশ মডেল প্রশিক্ষণ দিন
- Firebase ML-এ TF Lite মডেলটি স্থাপন করুন এবং আপনার অ্যাপ থেকে এটি অ্যাক্সেস করুন।
- ব্যবহারকারীদের সুপারিশ করার জন্য মডেলটি ব্যবহার করে ডিভাইসের অনুমান চালান।
তোমার যা লাগবে
- সর্বশেষ অ্যান্ড্রয়েড স্টুডিও সংস্করণ।
- নমুনা কোড।
- Android 7+ এবং Google Play পরিষেবা 9.8 বা তার পরবর্তী সংস্করণ সহ একটি পরীক্ষামূলক ডিভাইস, অথবা Google Play পরিষেবা 9.8 বা তার পরবর্তী সংস্করণ সহ একটি এমুলেটর
- যদি কোনও ডিভাইস ব্যবহার করেন, তাহলে একটি সংযোগ কেবল।
আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?
অ্যান্ড্রয়েড অ্যাপ তৈরির ক্ষেত্রে আপনার অভিজ্ঞতা কেমন হবে?
2. নমুনা কোড পান
কমান্ড লাইন থেকে GitHub রিপোজিটরি ক্লোন করুন।
$ git clone https://github.com/FirebaseExtended/codelab-contentrecommendation-android.git
৩. স্টার্টার অ্যাপটি আমদানি করুন
অ্যান্ড্রয়েড স্টুডিও থেকে, codelab-recommendations-android ডিরেক্টরিটি নির্বাচন করুন (
) নমুনা কোড ডাউনলোড থেকে ( ফাইল > খুলুন > .../codelab-recommendations-android/start )।
এখন আপনার অ্যান্ড্রয়েড স্টুডিওতে স্টার্ট প্রজেক্টটি খোলা থাকা উচিত।
৪. ফায়ারবেস কনসোল প্রকল্প তৈরি করুন
একটি নতুন প্রকল্প তৈরি করুন
- ফায়ারবেস কনসোলে যান।
- প্রকল্প যোগ করুন (অথবা যদি এটি প্রথমটি হয় তবে একটি প্রকল্প তৈরি করুন ) নির্বাচন করুন।
- একটি প্রকল্পের নাম নির্বাচন করুন বা লিখুন এবং চালিয়ে যান ক্লিক করুন।
- "এই প্রকল্পের জন্য গুগল অ্যানালিটিক্স সক্ষম করুন" সক্ষম আছে কিনা তা নিশ্চিত করুন।
- Firebase কনসোলে বাকি সেটআপ ধাপগুলি অনুসরণ করুন, তারপর Create project (অথবা যদি আপনি একটি বিদ্যমান Google project ব্যবহার করেন তবে Firebase যোগ করুন) এ ক্লিক করুন।
৫. ফায়ারবেস যোগ করুন
- আপনার নতুন প্রকল্পের ওভারভিউ স্ক্রিন থেকে, সেটআপ ওয়ার্কফ্লো চালু করতে অ্যান্ড্রয়েড আইকনে ক্লিক করুন।
- কোডল্যাবের প্যাকেজের নাম লিখুন:
com.google.firebase.codelabs.recommendations - রেজিস্টার অ্যাপ নির্বাচন করুন।
আপনার অ্যাপে google-services.json ফাইল যোগ করুন
প্যাকেজের নাম যোগ করে Register নির্বাচন করার পর, আপনার Firebase Android কনফিগারেশন ফাইলটি পেতে Download google-services.json এ ক্লিক করুন, তারপর google-services.json ফাইলটি আপনার প্রোজেক্টের app ডিরেক্টরিতে কপি করুন। ফাইলটি ডাউনলোড হওয়ার পর আপনি কনসোলে দেখানো পরবর্তী ধাপগুলি এড়িয়ে যেতে পারেন (বিল্ড-অ্যান্ড্রয়েড-স্টার্ট প্রোজেক্টে আপনার জন্য ইতিমধ্যেই সেগুলি করা হয়েছে)।
আপনার অ্যাপে গুগল-সার্ভিসেস প্লাগইন যোগ করুন
google-services প্লাগইনটি আপনার অ্যাপ্লিকেশনটিকে Firebase ব্যবহার করার জন্য কনফিগার করার জন্য google-services.json ফাইল ব্যবহার করে। প্রকল্পের build.gradle.kts ফাইলগুলিতে নিম্নলিখিত লাইনগুলি ইতিমধ্যেই যোগ করা উচিত (নিশ্চিত করতে চেক করুন):
অ্যাপ/বিল্ড.গ্রেড.কেটিএস
plugins {
id("com.google.gms.google-services")
}
বিল্ড.গ্রেড.কেটিএস
plugins {
id("com.google.gms.google-services") version "4.3.15" apply false
}
আপনার প্রকল্পটি gradle ফাইলের সাথে সিঙ্ক করুন
আপনার অ্যাপে সমস্ত নির্ভরতা উপলব্ধ আছে কিনা তা নিশ্চিত করার জন্য, এই মুহুর্তে আপনার প্রকল্পটি gradle ফাইলগুলির সাথে সিঙ্ক করা উচিত। Android Studio টুলবার থেকে File > Sync Project with Gradle Files নির্বাচন করুন।
৬. স্টার্টার অ্যাপটি চালান
এখন আপনি অ্যান্ড্রয়েড স্টুডিওতে প্রোজেক্টটি ইম্পোর্ট করেছেন এবং আপনার JSON ফাইল দিয়ে google-services প্লাগইন কনফিগার করেছেন, আপনি প্রথমবারের মতো অ্যাপটি চালানোর জন্য প্রস্তুত। আপনার অ্যান্ড্রয়েড ডিভাইসটি সংযুক্ত করুন এবং রান (
)অ্যান্ড্রয়েড স্টুডিও টুলবারে।
অ্যাপটি আপনার ডিভাইসে চালু হওয়া উচিত। এই মুহুর্তে, আপনি একটি কার্যকরী অ্যাপ্লিকেশন দেখতে পাবেন যা সিনেমার তালিকা, একটি পছন্দ করা সিনেমার ট্যাব এবং একটি সুপারিশ ট্যাব সহ একটি ট্যাব দেখায়। আপনি সিনেমার তালিকার একটি সিনেমাতে ক্লিক করে এটি আপনার পছন্দের তালিকায় যুক্ত করতে পারেন। কোডল্যাবের অবশিষ্ট ধাপগুলি সম্পন্ন করার পরে, আমরা সুপারিশ ট্যাবে সিনেমার সুপারিশ তৈরি করতে সক্ষম হব।
৭. অ্যাপটিতে ফায়ারবেস অ্যানালিটিক্স যোগ করুন
এই ধাপে, আপনি ব্যবহারকারীর আচরণের ডেটা (এই ক্ষেত্রে, কোন সিনেমাগুলি ব্যবহারকারী পছন্দ করেন) লগ করার জন্য অ্যাপে Firebase Analytics যোগ করবেন। সুপারিশ মডেলকে প্রশিক্ষণ দেওয়ার জন্য ভবিষ্যতের ধাপগুলিতে এই ডেটা সামগ্রিকভাবে ব্যবহার করা হবে।
ফায়ারবেস বিল অফ ম্যাটেরিয়ালস এবং অ্যানালিটিক্স নির্ভরতা যোগ করুন
আপনার অ্যাপে Firebase Analytics যোগ করার জন্য নিম্নলিখিত নির্ভরতাগুলি প্রয়োজন। এগুলি ইতিমধ্যেই app/build.gradle.kts ফাইলে (যাচাই করুন) অন্তর্ভুক্ত করা উচিত।
অ্যাপ/বিল্ড.গ্রেড.কেটিএস
implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-analytics-ktx")
অ্যাপে Firebase Analytics সেট আপ করুন
LikedMoviesViewModel- এ ব্যবহারকারীর পছন্দের সিনেমা সংরক্ষণ করার ফাংশন রয়েছে। ব্যবহারকারী যখনই কোনও নতুন সিনেমা পছন্দ করেন, তখন আমরা সেই লাইক রেকর্ড করার জন্য একটি বিশ্লেষণ লগ ইভেন্টও পাঠাতে চাই।
ব্যবহারকারী যখন কোনও মুভিতে লাইক ক্লিক করেন তখন একটি বিশ্লেষণ ইভেন্ট নিবন্ধন করতে নিচের কোডটি সহ onMovieLiked ফাংশনটি যুক্ত করুন।
পছন্দ করা হয়েছেমুভি দেখুনমডেল.কেটি
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.analytics.ktx.logEvent
import com.google.firebase.ktx.Firebase
class LikedMoviesViewModel internal constructor (application: Application) : AndroidViewModel(application) {
...
fun onMovieLiked(movie: Movie) {
movies.setLike(movie, true)
logAnalyticsEvent(movie.id.toString())
}
}
ব্যবহারকারীর পছন্দের তালিকায় একটি সিনেমা যোগ করা হলে একটি Analytics ইভেন্ট লগ করতে নিম্নলিখিত ক্ষেত্র এবং ফাংশন যোগ করুন।
পছন্দ করা হয়েছেমুভি দেখুনমডেল.কেটি
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.analytics.ktx.logEvent
import com.google.firebase.ktx.Firebase
class LikedMoviesViewModel internal constructor (application: Application) : AndroidViewModel(application) {
...
private val firebaseAnalytics = Firebase.analytics
...
/**
* Logs an event in Firebase Analytics that is used in aggregate to train the recommendations
* model.
*/
private fun logAnalyticsEvent(id: String) {
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) {
param(FirebaseAnalytics.Param.ITEM_ID, id)
}
}
৮. আপনার অ্যানালিটিক্স ইন্টিগ্রেশন পরীক্ষা করুন
এই ধাপে, আমরা অ্যাপে Analytics ইভেন্ট তৈরি করব এবং যাচাই করব যে সেগুলি Firebase কনসোলে পাঠানো হচ্ছে।
অ্যানালিটিক্স ডিবাগ লগিং সক্ষম করুন
Firebase Analytics ব্যবহারকারীর ব্যাটারি লাইফ সর্বাধিক করার জন্য ডিজাইন করা হয়েছে এবং এটি ডিভাইসে ইভেন্টগুলিকে ব্যাচ করবে এবং মাঝে মাঝে Firebase-এ পাঠাবে। ডিবাগিংয়ের উদ্দেশ্যে, শেলে নিম্নলিখিত কমান্ডটি চালিয়ে রিয়েল টাইমে লগ ইন থাকা ইভেন্টগুলি দেখতে আমরা এই আচরণটি অক্ষম করতে পারি।
টার্মিনাল
adb shell setprop debug.firebase.analytics.app com.google.firebase.codelabs.recommendations
Analytics ইভেন্টগুলি তৈরি হয়েছে কিনা তা যাচাই করুন
- অ্যান্ড্রয়েড স্টুডিওতে, আপনার অ্যাপ থেকে লগিং পরীক্ষা করতে লগক্যাট উইন্ডোটি খুলুন।
- লগক্যাট ফিল্টারটিকে "লগিং ইভেন্ট" স্ট্রিংয়ে সেট করুন।
- অ্যাপে যখনই আপনি কোনও সিনেমা পছন্দ করেন তখন "select_item" অ্যানালিটিক্স ইভেন্টগুলি নির্গত হয় কিনা তা যাচাই করুন।
এই মুহুর্তে, আপনি আপনার অ্যাপে Firebase Analytics সফলভাবে ইন্টিগ্রেট করেছেন। ব্যবহারকারীরা আপনার অ্যাপ ব্যবহার করলে এবং সিনেমা পছন্দ করলে, তাদের লাইকগুলি সামগ্রিকভাবে লগ ইন করা হবে। আমরা আমাদের সুপারিশ মডেলকে প্রশিক্ষণ দেওয়ার জন্য এই কোডল্যাবের বাকি অংশে এই সমষ্টিগত ডেটা ব্যবহার করব। Logcat-এ আপনি যে একই Analytics ইভেন্টগুলি দেখেছেন তা Firebase কনসোলে স্ট্রিম করার জন্য নিম্নলিখিতটি একটি ঐচ্ছিক পদক্ষেপ। পরবর্তী পৃষ্ঠায় যেতে দ্বিধা করবেন না।
ঐচ্ছিক: Firebase কনসোলে Analytics ইভেন্টগুলি নিশ্চিত করুন
- ফায়ারবেস কনসোলে যান।
- অ্যানালিটিক্সের অধীনে ডিবাগভিউ নির্বাচন করুন
- অ্যান্ড্রয়েড স্টুডিওতে, অ্যাপটি চালু করতে এবং আপনার পছন্দের তালিকায় কিছু সিনেমা যোগ করতে রান নির্বাচন করুন।
- Firebase কনসোলের DebugView-এ, অ্যাপে সিনেমা যোগ করার সাথে সাথে এই ইভেন্টগুলি লগ করা হচ্ছে কিনা তা যাচাই করুন।
৯. বিগ কোয়েরিতে অ্যানালিটিক্স ডেটা রপ্তানি করুন
বিগ কোয়েরি হল একটি গুগল ক্লাউড পণ্য যা আপনাকে প্রচুর পরিমাণে ডেটা পরীক্ষা এবং প্রক্রিয়া করার অনুমতি দেয়। এই ধাপে, আপনি আপনার ফায়ারবেস কনসোল প্রকল্পটিকে বিগ কোয়েরির সাথে সংযুক্ত করবেন যাতে আপনার অ্যাপ দ্বারা তৈরি অ্যানালিটিক্স ডেটা স্বয়ংক্রিয়ভাবে বিগ কোয়েরিতে রপ্তানি করা হয়।
বিগ কোয়েরি এক্সপোর্ট সক্ষম করুন
- ফায়ারবেস কনসোলে যান।
- Project Overview এর পাশে Settings গিয়ার আইকনটি নির্বাচন করুন, এবং তারপর Project settings নির্বাচন করুন।
- ইন্টিগ্রেশন ট্যাবটি নির্বাচন করুন।
- BigQuery ব্লকের ভিতরে লিঙ্ক (অথবা পরিচালনা ) নির্বাচন করুন।
- "ফায়ারবেসকে বিগকুয়েরির সাথে লিঙ্ক করার বিষয়ে" ধাপে " পরবর্তী" নির্বাচন করুন।
- কনফিগার ইন্টিগ্রেশন বিভাগের অধীনে, Google Analytics ডেটা পাঠানো সক্ষম করতে সুইচটিতে ক্লিক করুন এবং BigQuery-তে লিঙ্ক নির্বাচন করুন।
আপনি এখন আপনার Firebase কনসোল প্রজেক্টকে স্বয়ংক্রিয়ভাবে Big Query-তে Firebase Analytics ইভেন্ট ডেটা পাঠানোর সুবিধা প্রদান করেছেন। এটি আর কোনও ইন্টারঅ্যাকশন ছাড়াই স্বয়ংক্রিয়ভাবে ঘটে, তবে, BigQuery-তে অ্যানালিটিক্স ডেটাসেট তৈরি করে এমন প্রথম এক্সপোর্ট 24 ঘন্টার মধ্যে নাও হতে পারে। ডেটাসেট তৈরি হওয়ার পরে, Firebase ক্রমাগত নতুন অ্যানালিটিক্স ইভেন্টগুলিকে Big Query-তে ইন্ট্রাডে টেবিলে এক্সপোর্ট করে এবং বিগত দিনের ইভেন্টগুলিকে ইভেন্ট টেবিলে গ্রুপ করে।
একটি সুপারিশ মডেল প্রশিক্ষণের জন্য প্রচুর ডেটা প্রয়োজন। যেহেতু আমাদের কাছে ইতিমধ্যেই প্রচুর পরিমাণে ডেটা তৈরি করার জন্য কোনও অ্যাপ নেই, তাই পরবর্তী ধাপে আমরা এই টিউটোরিয়ালের বাকি অংশের জন্য BigQuery-তে একটি নমুনা ডেটাসেট আমদানি করব।
১০. মডেল প্রশিক্ষণের তথ্য পেতে BigQuery ব্যবহার করুন
এখন যেহেতু আমরা BigQuery-তে রপ্তানি করার জন্য আমাদের Firebase Console সংযুক্ত করেছি, আমাদের অ্যাপ অ্যানালিটিক্স ইভেন্ট ডেটা কিছু সময় পরে স্বয়ংক্রিয়ভাবে BigQuery কনসোলে প্রদর্শিত হবে। এই টিউটোরিয়ালের উদ্দেশ্যে কিছু প্রাথমিক ডেটা পেতে, এই ধাপে আমরা আমাদের সুপারিশ মডেলকে প্রশিক্ষণ দেওয়ার জন্য আপনার BigQuery কনসোলে একটি বিদ্যমান নমুনা ডেটাসেট আমদানি করব।
BigQuery-তে নমুনা ডেটাসেট আমদানি করুন
- গুগল ক্লাউড কনসোলের BigQuery ড্যাশবোর্ডে যান।
- মেনুতে আপনার প্রকল্পের নাম নির্বাচন করুন।
- বিস্তারিত দেখতে BigQuery এর বাম নেভিগেশনের নীচে আপনার প্রকল্পের নাম নির্বাচন করুন।
- ডেটাসেট তৈরির প্যানেল খুলতে "ডেটাসেট তৈরি করুন" নির্বাচন করুন।
- ডেটাসেট আইডির জন্য 'firebase_recommendations_dataset' লিখুন এবং Create dataset নির্বাচন করুন।
- নতুন ডেটাসেটটি প্রকল্পের নামের নীচে বাম মেনুতে প্রদর্শিত হবে। এটিতে ক্লিক করুন।
- টেবিল তৈরির প্যানেল খুলতে টেবিল তৈরি করুন নির্বাচন করুন।
- 'গুগল ক্লাউড স্টোরেজ' থেকে টেবিল তৈরির জন্য নির্বাচন করুন।
- "GCS বাকেট থেকে ফাইল নির্বাচন করুন" ক্ষেত্রে, 'gs://firebase-recommendations/recommendations-test/formatted_data_filtered.txt' লিখুন।
- ফাইল ফরম্যাট ড্রপ ডাউন থেকে 'JSONL' নির্বাচন করুন।
- টেবিলের নামের জন্য 'recommendations_table' লিখুন।
- স্কিমা > অটো ডিটেক্ট > স্কিমা এবং ইনপুট প্যারামিটারের অধীনে বাক্সটি চেক করুন।
- টেবিল তৈরি করুন নির্বাচন করুন
নমুনা ডেটাসেট অন্বেষণ করুন
এই মুহুর্তে, আপনি ঐচ্ছিকভাবে স্কিমাটি অন্বেষণ করতে পারেন এবং এই ডেটাসেটের পূর্বরূপ দেখতে পারেন।
- বাম মেনুতে firebase-recommendations-dataset নির্বাচন করুন যাতে এতে থাকা টেবিলগুলি প্রসারিত হয়।
- টেবিল স্কিমা দেখতে সুপারিশ-টেবিল টেবিল নির্বাচন করুন।
- এই টেবিলে থাকা প্রকৃত অ্যানালিটিক্স ইভেন্ট ডেটা দেখতে প্রিভিউ নির্বাচন করুন।
পরিষেবা অ্যাকাউন্টের শংসাপত্র তৈরি করুন
এখন, আমরা আমাদের গুগল ক্লাউড কনসোল প্রকল্পে পরিষেবা অ্যাকাউন্ট শংসাপত্র তৈরি করব যা আমরা নিম্নলিখিত ধাপে Colab পরিবেশে আমাদের BigQuery ডেটা অ্যাক্সেস এবং লোড করতে ব্যবহার করতে পারি।
- আপনার গুগল ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন।
- BigQuery এবং BigQuery স্টোরেজ API API সক্রিয় করুন। < এখানে ক্লিক করুন >
- পরিষেবা অ্যাকাউন্ট কী তৈরি করুন পৃষ্ঠায় যান।
- পরিষেবা অ্যাকাউন্ট তালিকা থেকে, নতুন পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
- পরিষেবা অ্যাকাউন্টের নাম ক্ষেত্রে, একটি নাম লিখুন।
- ভূমিকা তালিকা থেকে, প্রকল্প > মালিক নির্বাচন করুন।
- তৈরি করুন এ ক্লিক করুন। একটি JSON ফাইল যাতে আপনার কম্পিউটারে ডাউনলোড করা কীগুলি থাকে।
পরবর্তী ধাপে, আমরা এই ডেটা প্রি-প্রসেস করতে এবং আমাদের সুপারিশ মডেলকে প্রশিক্ষণ দিতে Google Colab ব্যবহার করব।
১১. প্রিপ্রসেস ডেটা এবং ট্রেন সুপারিশ মডেল
এই ধাপে, আমরা নিম্নলিখিত ধাপগুলি সম্পাদন করার জন্য একটি Colab নোটবুক ব্যবহার করব:
- Colab নোটবুকে BigQuery ডেটা ইম্পোর্ট করুন
- মডেল প্রশিক্ষণের জন্য প্রস্তুত করার জন্য ডেটা প্রাক-প্রক্রিয়াজাতকরণ করুন
- বিশ্লেষণ তথ্যের উপর সুপারিশ মডেলকে প্রশিক্ষণ দিন
- মডেলটিকে TF লাইট মডেল হিসেবে রপ্তানি করুন
- মডেলটি Firebase কনসোলে স্থাপন করুন যাতে আমরা এটি আমাদের অ্যাপে ব্যবহার করতে পারি
Colab প্রশিক্ষণ নোটবুক চালু করার আগে, আমরা প্রথমে Firebase মডেল ম্যানেজমেন্ট API সক্ষম করব যাতে Colab আমাদের Firebase কনসোলে প্রশিক্ষিত মডেলটি স্থাপন করতে পারে।
Firebase মডেল ম্যানেজমেন্ট API সক্ষম করুন
আপনার ML মডেলগুলি সংরক্ষণ করার জন্য একটি বালতি তৈরি করুন
আপনার Firebase কনসোলে, Storage-এ যান এবং Get started-এ ক্লিক করুন। 
তোমার বালতি সেট আপ করার জন্য সংলাপটি অনুসরণ করো।

Firebase ML API সক্ষম করুন
গুগল ক্লাউড কনসোলে ফায়ারবেস এমএল এপিআই পৃষ্ঠায় যান এবং সক্ষম করুন ক্লিক করুন।
মডেলটিকে প্রশিক্ষণ এবং স্থাপনের জন্য Colab নোটবুক ব্যবহার করুন
নিচের লিঙ্কটি ব্যবহার করে কোল্যাব নোটবুকটি খুলুন এবং এর মধ্যে থাকা ধাপগুলি সম্পূর্ণ করুন। কোল্যাব নোটবুকের ধাপগুলি সম্পন্ন করার পরে, আপনার কাছে একটি TF lite মডেল ফাইল থাকবে যা Firebase কনসোলে স্থাপন করা হবে যা আমরা আমাদের অ্যাপে সিঙ্ক করতে পারি।
কোলাবে খুলুন
১২. আপনার অ্যাপে মডেলটি ডাউনলোড করুন
এই ধাপে, আমরা Firebase Machine Learning থেকে আমাদের প্রশিক্ষিত মডেলটি ডাউনলোড করার জন্য আমাদের অ্যাপটি পরিবর্তন করব।
Firebase ML নির্ভরতা যোগ করুন
আপনার অ্যাপে Firebase মেশিন লার্নিং মডেল ব্যবহার করার জন্য নিম্নলিখিত নির্ভরতা প্রয়োজন। এটি ইতিমধ্যেই যোগ করা উচিত (যাচাই করুন)।
অ্যাপ/বিল্ড.গ্রেড.কেটিএস
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")
Firebase মডেল ম্যানেজার API দিয়ে মডেলটি ডাউনলোড করুন
মডেল ডাউনলোডের শর্তাবলী সেট আপ করতে নিচের কোডটি RecommendationClient.kt- এ কপি করুন এবং রিমোট মডেলটিকে আমাদের অ্যাপে সিঙ্ক করার জন্য একটি ডাউনলোড টাস্ক তৈরি করুন।
সুপারিশClient.kt
private fun downloadModel(modelName: String) {
val conditions = CustomModelDownloadConditions.Builder()
.requireWifi()
.build()
FirebaseModelDownloader.getInstance()
.getModel(modelName, DownloadType.LOCAL_MODEL, conditions)
.addOnCompleteListener {
if (!it.isSuccessful) {
showToast(context, "Failed to get model file.")
} else {
showToast(context, "Downloaded remote model: $modelName")
GlobalScope.launch { initializeInterpreter(it.result) }
}
}
.addOnFailureListener {
showToast(context, "Model download failed for recommendations, please check your connection.")
}
}
১৩. আপনার অ্যাপে টেনসরফ্লো লাইট সুপারিশ মডেলটি একীভূত করুন
Tensorflow Lite রানটাইম আপনাকে অ্যাপে আপনার মডেল ব্যবহার করে সুপারিশ তৈরি করতে সাহায্য করবে। আগের ধাপে আমরা ডাউনলোড করা মডেল ফাইলটি দিয়ে একটি TFlite ইন্টারপ্রেটার চালু করেছি। এই ধাপে, আমরা প্রথমে অনুমান ধাপে আমাদের মডেলের সাথে একটি অভিধান এবং লেবেল লোড করব, তারপর আমরা আমাদের মডেলে ইনপুট তৈরি করার জন্য প্রি-প্রসেসিং যোগ করব এবং পোস্ট-প্রসেসিং করব যেখানে আমরা আমাদের অনুমান থেকে ফলাফল বের করব।
অভিধান এবং লেবেল লোড করুন
সুপারিশ মডেল দ্বারা সুপারিশ প্রার্থী তৈরি করতে ব্যবহৃত লেবেলগুলি res/assets ফোল্ডারের sorted_movie_vocab.json ফাইলে তালিকাভুক্ত করা হয়েছে। এই প্রার্থীদের লোড করতে নিম্নলিখিত কোডটি অনুলিপি করুন।
সুপারিশClient.kt
/** Load recommendation candidate list. */
private suspend fun loadCandidateList() {
return withContext(Dispatchers.IO) {
val collection = MovieRepository.getInstance(context).getContent()
for (item in collection) {
candidates[item.id] = item
}
Log.v(TAG, "Candidate list loaded.")
}
}
প্রাক-প্রক্রিয়াকরণ বাস্তবায়ন করুন
প্রি-প্রসেসিং ধাপে, আমরা আমাদের মডেলের প্রত্যাশার সাথে মেলে ইনপুট ডেটার ফর্ম পরিবর্তন করি। এখানে, যদি আমরা ইতিমধ্যে অনেক ব্যবহারকারীর লাইক তৈরি না করে থাকি, তাহলে আমরা ইনপুট দৈর্ঘ্যকে একটি প্লেসহোল্ডার মান দিয়ে প্যাড করি। নীচের কোডটি অনুলিপি করুন:
সুপারিশClient.kt
/** Given a list of selected items, preprocess to get tflite input. */
@Synchronized
private suspend fun preprocess(selectedMovies: List<Movie>): IntArray {
return withContext(Dispatchers.Default) {
val inputContext = IntArray(config.inputLength)
for (i in 0 until config.inputLength) {
if (i < selectedMovies.size) {
val (id) = selectedMovies[i]
inputContext[i] = id
} else {
// Padding input.
inputContext[i] = config.pad
}
}
inputContext
}
}
সুপারিশ তৈরি করতে দোভাষী চালান
এখানে আমরা পূর্ববর্তী ধাপে ডাউনলোড করা মডেলটি ব্যবহার করে আমাদের প্রি-প্রসেসড ইনপুটটিতে ইনফারেন্স রান করি। আমরা আমাদের মডেলের জন্য ইনপুট এবং আউটপুটের ধরণ সেট করি এবং আমাদের মুভি সুপারিশ তৈরি করতে ইনফারেন্স রান করি। আপনার অ্যাপে নিম্নলিখিত কোডটি কপি করুন।
সুপারিশClient.kt
/** Given a list of selected items, and returns the recommendation results. */
@Synchronized
suspend fun recommend(selectedMovies: List<Movie>): List<Result> {
return withContext(Dispatchers.Default) {
val inputs = arrayOf<Any>(preprocess(selectedMovies))
// Run inference.
val outputIds = IntArray(config.outputLength)
val confidences = FloatArray(config.outputLength)
val outputs: MutableMap<Int, Any> = HashMap()
outputs[config.outputIdsIndex] = outputIds
outputs[config.outputScoresIndex] = confidences
tflite?.let {
it.runForMultipleInputsOutputs(inputs, outputs)
postprocess(outputIds, confidences, selectedMovies)
} ?: run {
Log.e(TAG, "No tflite interpreter loaded")
emptyList()
}
}
}
পোস্ট-প্রসেসিং বাস্তবায়ন করুন
অবশেষে, এই ধাপে আমরা আমাদের মডেল থেকে আউটপুট পোস্ট-প্রসেস করব, সর্বোচ্চ আত্মবিশ্বাসের সাথে ফলাফল নির্বাচন করব এবং অন্তর্ভুক্ত মানগুলি (ব্যবহারকারী ইতিমধ্যে পছন্দ করেছেন এমন সিনেমা) সরিয়ে দেব। নিম্নলিখিত কোডটি আপনার অ্যাপে কপি করব।
সুপারিশClient.kt
/** Postprocess to gets results from tflite inference. */
@Synchronized
private suspend fun postprocess(
outputIds: IntArray, confidences: FloatArray, selectedMovies: List<Movie>
): List<Result> {
return withContext(Dispatchers.Default) {
val results = ArrayList<Result>()
// Add recommendation results. Filter null or contained items.
for (i in outputIds.indices) {
if (results.size >= config.topK) {
Log.v(TAG, String.format("Selected top K: %d. Ignore the rest.", config.topK))
break
}
val id = outputIds[i]
val item = candidates[id]
if (item == null) {
Log.v(TAG, String.format("Inference output[%d]. Id: %s is null", i, id))
continue
}
if (selectedMovies.contains(item)) {
Log.v(TAG, String.format("Inference output[%d]. Id: %s is contained", i, id))
continue
}
val result = Result(
id, item,
confidences[i]
)
results.add(result)
Log.v(TAG, String.format("Inference output[%d]. Result: %s", i, result))
}
results
}
}
আপনার অ্যাপটি পরীক্ষা করুন!
আপনার অ্যাপটি পুনরায় চালান। আপনি কয়েকটি সিনেমা নির্বাচন করার সাথে সাথে এটি স্বয়ংক্রিয়ভাবে নতুন মডেলটি ডাউনলোড করবে এবং সুপারিশ তৈরি করা শুরু করবে!
১৪. অভিনন্দন!
আপনি TensorFlow Lite এবং Firebase ব্যবহার করে আপনার অ্যাপে একটি সুপারিশ বৈশিষ্ট্য তৈরি করেছেন। মনে রাখবেন যে এই কোডল্যাবে দেখানো কৌশল এবং পাইপলাইনগুলি সাধারণীকরণ করা যেতে পারে এবং অন্যান্য ধরণের সুপারিশ পরিবেশন করতেও ব্যবহার করা যেতে পারে।
আমরা যা কভার করেছি
- ফায়ারবেস এমএল
- ফায়ারবেস অ্যানালিটিক্স
- BigQuery-তে অ্যানালিটিক্স ইভেন্ট এক্সপোর্ট করুন
- বিশ্লেষণ ইভেন্টগুলি প্রিপ্রসেস করুন
- ট্রেনের সুপারিশ টেনসরফ্লো মডেল
- মডেল রপ্তানি করুন এবং Firebase কনসোলে স্থাপন করুন
- একটি অ্যাপে সিনেমার সুপারিশ পরিবেশন করুন
পরবর্তী পদক্ষেপ
- আপনার অ্যাপে Firebase ML সুপারিশগুলি বাস্তবায়ন করুন।

