১. সংক্ষিপ্ত বিবরণ
|
|
TensorFlow Lite এবং Firebase ব্যবহার করে সুপারিশ কোডল্যাবে আপনাকে স্বাগতম। এই কোডল্যাবে আপনি শিখবেন কিভাবে TensorFlow Lite এবং Firebase ব্যবহার করে আপনার অ্যাপে একটি সুপারিশ মডেল স্থাপন করতে হয়। এই কোডল্যাবটি এই TensorFlow Lite উদাহরণটির উপর ভিত্তি করে তৈরি।
সুপারিশের মাধ্যমে অ্যাপগুলো মেশিন লার্নিং ব্যবহার করে প্রতিটি ব্যবহারকারীর জন্য বুদ্ধিমত্তার সাথে সবচেয়ে প্রাসঙ্গিক কন্টেন্ট পরিবেশন করতে পারে। এটি বিপুল সংখ্যক অন্যান্য ব্যবহারকারীর সামগ্রিক আচরণের উপর প্রশিক্ষিত একটি মডেল ব্যবহার করে ব্যবহারকারীর অতীতের আচরণ বিবেচনা করে, এবং ভবিষ্যতে ব্যবহারকারী অ্যাপের কোন কন্টেন্টের সাথে ইন্টারঅ্যাক্ট করতে পছন্দ করতে পারে তার পরামর্শ দেয়।
এই টিউটোরিয়ালে দেখানো হয়েছে কীভাবে ফায়ারবেস অ্যানালিটিক্স ব্যবহার করে আপনার অ্যাপের ব্যবহারকারীদের কাছ থেকে ডেটা সংগ্রহ করতে হয়, সেই ডেটা থেকে সুপারিশের জন্য একটি মেশিন লার্নিং মডেল তৈরি করতে হয়, এবং তারপর একটি অ্যান্ড্রয়েড অ্যাপে সেই মডেলটি ব্যবহার করে ইনফারেন্স চালিয়ে সুপারিশ পেতে হয়। বিশেষ করে, ব্যবহারকারীর পূর্বে পছন্দ করা সিনেমার তালিকার উপর ভিত্তি করে আমাদের সুপারিশগুলো জানাবে যে, তিনি সম্ভবত কোন সিনেমাগুলো দেখবেন।
আপনি যা শিখবেন
- ব্যবহারকারীর আচরণের ডেটা সংগ্রহ করতে একটি অ্যান্ড্রয়েড অ্যাপে ফায়ারবেস অ্যানালিটিক্স সংযুক্ত করুন
- সেই ডেটা গুগল বিগ কোয়েরিতে এক্সপোর্ট করুন
- ডেটা প্রি-প্রসেস করুন এবং একটি TF Lite সুপারিশ মডেলকে প্রশিক্ষণ দিন।
- TF Lite মডেলটি Firebase ML-এ স্থাপন করুন এবং আপনার অ্যাপ থেকে এটি অ্যাক্সেস করুন।
- ব্যবহারকারীদের সুপারিশ প্রদানের জন্য মডেলটি ব্যবহার করে ডিভাইসে ইনফারেন্স চালান।
আপনার যা যা লাগবে
- অ্যান্ড্রয়েড স্টুডিওর সর্বশেষ সংস্করণ।
- নমুনা কোড।
- অ্যান্ড্রয়েড ৭+ এবং গুগল প্লে সার্ভিসেস ৯.৮ বা তার পরবর্তী সংস্করণসহ একটি টেস্ট ডিভাইস, অথবা গুগল প্লে সার্ভিসেস ৯.৮ বা তার পরবর্তী সংস্করণসহ একটি এমুলেটর
- ডিভাইস ব্যবহার করলে, একটি সংযোগ কেবল প্রয়োজন।
আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?
অ্যান্ড্রয়েড অ্যাপ তৈরির ক্ষেত্রে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
২. নমুনা কোডটি নিন।
কমান্ড লাইন থেকে গিটহাব রিপোজিটরিটি ক্লোন করুন।
$ git clone https://github.com/FirebaseExtended/codelab-contentrecommendation-android.git
৩. স্টার্টার অ্যাপটি ইম্পোর্ট করুন
অ্যান্ড্রয়েড স্টুডিও থেকে, codelab-recommendations-android ডিরেক্টরিটি নির্বাচন করুন (
নমুনা কোড ডাউনলোড থেকে ( ফাইল > খুলুন > .../codelab-recommendations-android/start )।
এখন আপনার অ্যান্ড্রয়েড স্টুডিওতে স্টার্ট প্রজেক্টটি খোলা থাকা উচিত।
৪. ফায়ারবেস কনসোল প্রজেক্ট তৈরি করুন
একটি নতুন প্রকল্প তৈরি করুন
- ফায়ারবেস কনসোলে যান।
- প্রজেক্ট যোগ করুন নির্বাচন করুন (অথবা এটি প্রথম হলে প্রজেক্ট তৈরি করুন )।
- একটি প্রজেক্টের নাম নির্বাচন করুন বা লিখুন এবং 'চালিয়ে যান'-এ ক্লিক করুন।
- "এই প্রকল্পের জন্য গুগল অ্যানালিটিক্স সক্ষম করুন" বিকল্পটি চালু আছে কিনা তা নিশ্চিত করুন।
- Firebase কনসোলে বাকি সেটআপ ধাপগুলো অনুসরণ করুন, তারপর Create project-এ ক্লিক করুন (অথবা Add Firebase-এ, যদি আপনি আগে থেকে থাকা কোনো Google প্রজেক্ট ব্যবহার করেন)।
৫. ফায়ারবেস যোগ করুন
- আপনার নতুন প্রজেক্টের ওভারভিউ স্ক্রিন থেকে, সেটআপ ওয়ার্কফ্লো চালু করতে অ্যান্ড্রয়েড আইকনটিতে ক্লিক করুন।
- কোডল্যাবের প্যাকেজের নাম লিখুন:
com.google.firebase.codelabs.recommendations - রেজিস্টার অ্যাপটি নির্বাচন করুন।
আপনার অ্যাপে google-services.json ফাইলটি যোগ করুন
প্যাকেজ নামটি যোগ করে এবং 'Register' নির্বাচন করার পর, আপনার Firebase Android কনফিগারেশন ফাইলটি পেতে 'Download google-services.json'-এ ক্লিক করুন। এরপর google-services.json ফাইলটি আপনার প্রোজেক্টের app ডিরেক্টরিতে কপি করুন। ফাইলটি ডাউনলোড হয়ে গেলে, আপনি কনসোলে দেখানো পরবর্তী ধাপগুলো এড়িয়ে যেতে পারেন (এগুলো 'build-android-start' প্রোজেক্টে আপনার জন্য ইতিমধ্যেই করে রাখা হয়েছে)।
আপনার অ্যাপে গুগল-সার্ভিসেস প্লাগইন যোগ করুন
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
}
আপনার প্রজেক্টটি গ্রেডল ফাইলের সাথে সিঙ্ক করুন।
আপনার অ্যাপে সমস্ত ডিপেন্ডেন্সি উপলব্ধ আছে কিনা তা নিশ্চিত করতে, এই পর্যায়ে আপনার প্রজেক্টটিকে গ্রেডল ফাইলের সাথে সিঙ্ক করা উচিত। অ্যান্ড্রয়েড স্টুডিও টুলবার থেকে ফাইল > সিঙ্ক প্রজেক্ট উইথ গ্রেডল ফাইলস (File > Sync Project with Gradle Files) নির্বাচন করুন।
৬. স্টার্টার অ্যাপটি চালান।
এখন যেহেতু আপনি অ্যান্ড্রয়েড স্টুডিওতে প্রজেক্টটি ইম্পোর্ট করেছেন এবং আপনার JSON ফাইল দিয়ে google-services প্লাগইনটি কনফিগার করেছেন, আপনি প্রথমবারের মতো অ্যাপটি চালানোর জন্য প্রস্তুত। আপনার অ্যান্ড্রয়েড ডিভাইসটি সংযুক্ত করুন এবং রান (Run) বোতামে ক্লিক করুন।
অ্যান্ড্রয়েড স্টুডিও টুলবারে।
অ্যাপটি আপনার ডিভাইসে চালু হবে। এই পর্যায়ে, আপনি একটি কার্যকরী অ্যাপ্লিকেশন দেখতে পাবেন যেখানে সিনেমার তালিকা, পছন্দের সিনেমার তালিকা এবং সুপারিশের তালিকা সহ একটি ট্যাব থাকবে। আপনি সিনেমার তালিকা থেকে কোনো সিনেমায় ক্লিক করে সেটিকে আপনার পছন্দের তালিকায় যুক্ত করতে পারেন। কোডল্যাবের বাকি ধাপগুলো সম্পন্ন করার পর, আমরা সুপারিশ ট্যাবে সিনেমার সুপারিশ তৈরি করতে সক্ষম হব।
৭. অ্যাপে ফায়ারবেস অ্যানালিটিক্স যোগ করুন
এই ধাপে, আপনি ব্যবহারকারীর আচরণের ডেটা (যেমন, একজন ব্যবহারকারী কোন সিনেমা পছন্দ করেন) লগ করার জন্য অ্যাপটিতে ফায়ারবেস অ্যানালিটিক্স যুক্ত করবেন। ভবিষ্যতের ধাপগুলোতে সুপারিশ মডেলকে প্রশিক্ষণ দেওয়ার জন্য এই ডেটা সমষ্টিগতভাবে ব্যবহার করা হবে।
ফায়ারবেস বিল অফ মেটেরিয়ালস এবং অ্যানালিটিক্স নির্ভরতা যোগ করুন
আপনার অ্যাপে Firebase Analytics যোগ করার জন্য নিম্নলিখিত নির্ভরতাগুলি প্রয়োজন। এগুলি app/build.gradle.kts ফাইলে আগে থেকেই অন্তর্ভুক্ত থাকা উচিত (যাচাই করুন)।
অ্যাপ/বিল্ড.গ্রেড.কেটিএস
implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-analytics-ktx")
অ্যাপে ফায়ারবেস অ্যানালিটিক্স সেট আপ করুন
LikedMoviesViewModel- টিতে ব্যবহারকারীর পছন্দের সিনেমাগুলো সংরক্ষণ করার জন্য ফাংশন রয়েছে। যখনই ব্যবহারকারী কোনো নতুন সিনেমা পছন্দ করবেন, আমরা সেই পছন্দটি রেকর্ড করার জন্য একটি অ্যানালিটিক্স লগ ইভেন্টও পাঠাতে চাই।
ব্যবহারকারী কোনো মুভিতে লাইক ক্লিক করলে একটি অ্যানালিটিক্স ইভেন্ট রেজিস্টার করতে, নিচের কোডসহ onMovieLiked ফাংশনটি যোগ করুন।
LikedMoviesViewModel.kt
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())
}
}
ব্যবহারকারীর পছন্দের তালিকায় কোনো সিনেমা যুক্ত হলে একটি অ্যানালিটিক্স ইভেন্ট লগ করার জন্য নিম্নলিখিত ফিল্ড এবং ফাংশনটি যোগ করুন।
LikedMoviesViewModel.kt
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)
}
}
৮. আপনার অ্যানালিটিক্স ইন্টিগ্রেশন পরীক্ষা করুন
এই ধাপে, আমরা অ্যাপে অ্যানালিটিক্স ইভেন্ট তৈরি করব এবং যাচাই করব যে সেগুলি ফায়ারবেস কনসোলে পাঠানো হচ্ছে।
অ্যানালিটিক্স ডিবাগ লগিং সক্ষম করুন
ফায়ারবেস অ্যানালিটিক্স ব্যবহারকারীর ব্যাটারির আয়ু সর্বাধিক করার জন্য ডিজাইন করা হয়েছে এবং এটি ডিভাইসের ইভেন্টগুলোকে ব্যাচ করে মাঝে মাঝে ফায়ারবেসে পাঠায়। ডিবাগিংয়ের উদ্দেশ্যে, আমরা শেল-এ নিম্নলিখিত কমান্ডটি চালিয়ে এই আচরণটি নিষ্ক্রিয় করতে পারি, যাতে ইভেন্টগুলো রিয়েল-টাইমে লগ হওয়ার সাথে সাথে দেখা যায়।
টার্মিনাল
adb shell setprop debug.firebase.analytics.app com.google.firebase.codelabs.recommendations
অ্যানালিটিক্স ইভেন্ট তৈরি হয়েছে কিনা যাচাই করুন
- অ্যান্ড্রয়েড স্টুডিওতে, আপনার অ্যাপের লগিং পরীক্ষা করার জন্য Logcat উইন্ডোটি খুলুন।
- Logcat ফিল্টারটি 'Logging event' স্ট্রিংটিতে সেট করুন।
- অ্যাপে প্রতিবার কোনো মুভি পছন্দ করার সময় "select_item" অ্যানালিটিক্স ইভেন্ট নির্গত হচ্ছে কিনা তা যাচাই করুন।
এই পর্যায়ে, আপনি সফলভাবে আপনার অ্যাপে ফায়ারবেস অ্যানালিটিক্স যুক্ত করেছেন। ব্যবহারকারীরা যখন আপনার অ্যাপ ব্যবহার করে সিনেমা পছন্দ করবে, তখন তাদের পছন্দগুলো সমষ্টিগতভাবে লগ করা হবে। এই কোডল্যাবের বাকি অংশে আমরা আমাদের সুপারিশ মডেলকে প্রশিক্ষণ দিতে এই সমষ্টিগত ডেটা ব্যবহার করব। লগক্যাটে দেখা অ্যানালিটিক্স ইভেন্টগুলো ফায়ারবেস কনসোলেও স্ট্রিম হতে দেখার জন্য নিম্নলিখিত ধাপটি ঐচ্ছিক। আপনি চাইলে সরাসরি পরবর্তী পৃষ্ঠায় চলে যেতে পারেন।
ঐচ্ছিক: ফায়ারবেস কনসোলে অ্যানালিটিক্স ইভেন্টগুলি নিশ্চিত করুন
- ফায়ারবেস কনসোলে যান।
- অ্যানালিটিক্স-এর অধীনে ডিবাগভিউ নির্বাচন করুন
- অ্যান্ড্রয়েড স্টুডিওতে, অ্যাপটি চালু করতে রান (Run) নির্বাচন করুন এবং আপনার পছন্দের তালিকায় কিছু সিনেমা যোগ করুন।
- Firebase কনসোলের DebugView-তে যাচাই করুন যে, অ্যাপে মুভি যোগ করার সময় এই ইভেন্টগুলো লগ হচ্ছে কি না।
৯. অ্যানালিটিক্স ডেটা বিগ কোয়েরিতে এক্সপোর্ট করুন
বিগ কোয়েরি হলো গুগল ক্লাউডের একটি পণ্য যা আপনাকে বিপুল পরিমাণ ডেটা পরীক্ষা ও প্রক্রিয়াকরণ করতে সাহায্য করে। এই ধাপে, আপনি আপনার ফায়ারবেস কনসোল প্রজেক্টকে বিগ কোয়েরির সাথে সংযুক্ত করবেন, যাতে আপনার অ্যাপ দ্বারা তৈরি অ্যানালিটিক্স ডেটা স্বয়ংক্রিয়ভাবে বিগ কোয়েরিতে এক্সপোর্ট হয়ে যায়।
বিগ কোয়েরি এক্সপোর্ট সক্ষম করুন
- ফায়ারবেস কনসোলে যান।
- প্রজেক্ট ওভারভিউ- এর পাশে থাকা সেটিংস গিয়ার আইকনটি সিলেক্ট করুন, এবং তারপর প্রজেক্ট সেটিংস সিলেক্ট করুন।
- ইন্টিগ্রেশন ট্যাবটি নির্বাচন করুন।
- BigQuery ব্লকের ভিতরে Link (বা Manage ) নির্বাচন করুন।
- Firebase-কে BigQuery-এর সাথে লিঙ্ক করার বিষয়ে ধাপে Next নির্বাচন করুন।
- ইন্টিগ্রেশন কনফিগার করুন (Configure integration ) বিভাগের অধীনে, গুগল অ্যানালিটিক্স ডেটা পাঠানো সক্ষম করতে সুইচটিতে ক্লিক করুন এবং 'বিগকোয়েরি-তে লিঙ্ক করুন ' (Link to BigQuery) নির্বাচন করুন।
আপনি এখন আপনার Firebase কনসোল প্রজেক্টকে Firebase Analytics ইভেন্টের ডেটা স্বয়ংক্রিয়ভাবে Big Query-তে পাঠানোর জন্য সক্ষম করেছেন। এটি কোনো অতিরিক্ত হস্তক্ষেপ ছাড়াই স্বয়ংক্রিয়ভাবে ঘটে, তবে BigQuery-তে অ্যানালিটিক্স ডেটাসেট তৈরি করার প্রথম এক্সপোর্টটি হতে ২৪ ঘণ্টা পর্যন্ত সময় লাগতে পারে। ডেটাসেটটি তৈরি হয়ে যাওয়ার পর, Firebase ক্রমাগত নতুন অ্যানালিটিক্স ইভেন্টগুলোকে Big Query-এর ইন্ট্রাডে টেবিলে এক্সপোর্ট করে এবং বিগত দিনগুলোর ইভেন্টগুলোকে ইভেন্টস টেবিলে গ্রুপ করে।
একটি সুপারিশ মডেলকে প্রশিক্ষণ দিতে প্রচুর ডেটার প্রয়োজন হয়। যেহেতু আমাদের কাছে আগে থেকেই প্রচুর পরিমাণে ডেটা তৈরি করার মতো কোনো অ্যাপ নেই, তাই পরবর্তী ধাপে আমরা এই টিউটোরিয়ালের বাকি অংশের জন্য BigQuery-তে একটি নমুনা ডেটাসেট ইম্পোর্ট করব।
১০. মডেল প্রশিক্ষণের ডেটা পেতে BigQuery ব্যবহার করুন।
এখন যেহেতু আমরা BigQuery-তে ডেটা এক্সপোর্ট করার জন্য আমাদের Firebase কনসোল সংযুক্ত করেছি, আমাদের অ্যাপ অ্যানালিটিক্স ইভেন্টের ডেটা কিছু সময় পরে স্বয়ংক্রিয়ভাবে BigQuery কনসোলে দেখা যাবে। এই টিউটোরিয়ালের জন্য কিছু প্রাথমিক ডেটা পেতে, এই ধাপে আমরা আমাদের রিকমেন্ডেশন মডেলকে প্রশিক্ষণের জন্য আপনার BigQuery কনসোলে একটি বিদ্যমান স্যাম্পল ডেটাসেট ইম্পোর্ট করব।
BigQuery-তে নমুনা ডেটাসেট আমদানি করুন
- গুগল ক্লাউড কনসোলে BigQuery ড্যাশবোর্ডে যান।
- মেনু থেকে আপনার প্রজেক্টের নাম নির্বাচন করুন।
- বিস্তারিত দেখতে BigQuery-এর বাম দিকের নেভিগেশনের নিচে আপনার প্রজেক্টের নামটি নির্বাচন করুন।
- ডেটা সেট তৈরির প্যানেলটি খুলতে 'Create dataset' নির্বাচন করুন।
- ডেটা সেট আইডি হিসেবে 'firebase_recommendations_dataset' লিখুন এবং 'Create dataset' নির্বাচন করুন।
- নতুন ডেটাসেটটি বাম দিকের মেনুতে প্রজেক্ট নামের নিচে দেখা যাবে। এটিতে ক্লিক করুন।
- টেবিল তৈরির প্যানেলটি খুলতে 'Create table' নির্বাচন করুন।
- টেবিল তৈরি করার জন্য 'গুগল ক্লাউড স্টোরেজ' নির্বাচন করুন।
- 'Select file from GCS bucket' ফিল্ডে 'gs://firebase-recommendations/recommendations-test/formatted_data_filtered.txt' লিখুন।
- ফাইল ফরম্যাট ড্রপডাউন থেকে 'JSONL' নির্বাচন করুন।
- টেবিলের নাম হিসেবে 'recommendations_table' লিখুন।
- স্কিমা > স্বয়ংক্রিয় সনাক্তকরণ > স্কিমা এবং ইনপুট প্যারামিটার- এর অধীনে বক্সটি চেক করুন।
- টেবিল তৈরি করুন নির্বাচন করুন
নমুনা ডেটাসেট অন্বেষণ করুন
এই পর্যায়ে, আপনি চাইলে স্কিমাটি অন্বেষণ করতে এবং এই ডেটাসেটটির প্রিভিউ দেখতে পারেন।
- এর অন্তর্ভুক্ত টেবিলগুলো প্রসারিত করতে বাম দিকের মেনু থেকে firebase-recommendations-dataset নির্বাচন করুন।
- টেবিল স্কিমা দেখতে recommendations-table টেবিলটি নির্বাচন করুন।
- এই টেবিলে থাকা প্রকৃত অ্যানালিটিক্স ইভেন্টের ডেটা দেখতে প্রিভিউ নির্বাচন করুন।
পরিষেবা অ্যাকাউন্টের পরিচয়পত্র তৈরি করুন
এখন, আমরা আমাদের গুগল ক্লাউড কনসোল প্রজেক্টে সার্ভিস অ্যাকাউন্ট ক্রেডেনশিয়াল তৈরি করব, যা আমরা পরবর্তী ধাপে কোলাব পরিবেশে আমাদের BigQuery ডেটা অ্যাক্সেস ও লোড করার জন্য ব্যবহার করতে পারব।
- আপনার গুগল ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা, তা নিশ্চিত করুন।
- BigQuery এবং BigQuery Storage API সক্রিয় করুন। < এখানে ক্লিক করুন >
- সার্ভিস অ্যাকাউন্ট কী তৈরি করুন পৃষ্ঠায় যান।
- সার্ভিস অ্যাকাউন্ট তালিকা থেকে নতুন সার্ভিস অ্যাকাউন্ট নির্বাচন করুন।
- সার্ভিস অ্যাকাউন্ট নেম ফিল্ডে একটি নাম লিখুন।
- ভূমিকার তালিকা থেকে, প্রকল্প > মালিক নির্বাচন করুন।
- Create-এ ক্লিক করুন। আপনার কম্পিউটারে আপনার কী (key) সম্বলিত একটি JSON ফাইল ডাউনলোড হবে।
পরবর্তী ধাপে, আমরা গুগল কোলাব ব্যবহার করে এই ডেটা প্রিপ্রসেস করব এবং আমাদের রিকমেন্ডেশন মডেলকে প্রশিক্ষণ দেব।
১১. ডেটা প্রাক-প্রক্রিয়া করুন এবং সুপারিশ মডেলকে প্রশিক্ষণ দিন
এই ধাপে, আমরা একটি কোলাব নোটবুক ব্যবহার করে নিম্নলিখিত ধাপগুলো সম্পন্ন করব:
- BigQuery ডেটা Colab নোটবুকে ইম্পোর্ট করুন
- মডেল প্রশিক্ষণের জন্য ডেটা প্রস্তুত করতে প্রিপ্রসেস করুন।
- অ্যানালিটিক্স ডেটার উপর সুপারিশ মডেলটিকে প্রশিক্ষণ দিন
- মডেলটিকে একটি TF lite মডেল হিসেবে রপ্তানি করুন
- মডেলটি ফায়ারবেস কনসোলে ডিপ্লয় করুন, যাতে আমরা এটি আমাদের অ্যাপে ব্যবহার করতে পারি।
কোলাব ট্রেনিং নোটবুকটি চালু করার আগে, আমরা প্রথমে ফায়ারবেস মডেল ম্যানেজমেন্ট এপিআই (Firebase Model Management API) সক্রিয় করব, যাতে কোলাব প্রশিক্ষিত মডেলটি আমাদের ফায়ারবেস কনসোলে স্থাপন করতে পারে।
ফায়ারবেস মডেল ম্যানেজমেন্ট এপিআই সক্রিয় করুন
আপনার এমএল মডেলগুলো সংরক্ষণ করার জন্য একটি বাকেট তৈরি করুন।
আপনার Firebase Console-এ, Storage-এ যান এবং Get started-এ ক্লিক করুন। 
আপনার বাকেটটি সেট আপ করতে নির্দেশাবলী অনুসরণ করুন।

ফায়ারবেস এমএল এপিআই সক্রিয় করুন
গুগল ক্লাউড কনসোলে Firebase ML API পৃষ্ঠায় যান এবং Enable-এ ক্লিক করুন।
মডেলটি প্রশিক্ষণ ও স্থাপন করতে কোলাব নোটবুক ব্যবহার করুন।
নিচের লিঙ্কটি ব্যবহার করে কোলাব নোটবুকটি খুলুন এবং এর ভেতরের ধাপগুলো সম্পূর্ণ করুন। কোলাব নোটবুকের ধাপগুলো শেষ করার পর, ফায়ারবেস কনসোলে একটি TF lite মডেল ফাইল ডেপ্লয় করা হবে, যা আমরা আমাদের অ্যাপে সিঙ্ক করতে পারব।
কোলাবে খুলুন
১২. আপনার অ্যাপে মডেলটি ডাউনলোড করুন।
এই ধাপে, আমরা আমাদের অ্যাপটিকে এমনভাবে পরিবর্তন করব যাতে এটি ফায়ারবেস মেশিন লার্নিং থেকে সদ্য প্রশিক্ষিত মডেলটি ডাউনলোড করতে পারে।
ফায়ারবেস এমএল নির্ভরতা যোগ করুন
আপনার অ্যাপে ফায়ারবেস মেশিন লার্নিং মডেল ব্যবহার করার জন্য নিম্নলিখিত ডিপেন্ডেন্সিটি প্রয়োজন। এটি ইতিমধ্যে যুক্ত থাকা উচিত (যাচাই করুন)।
অ্যাপ/বিল্ড.গ্রেড.কেটিএস
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")
Firebase Model Manager API ব্যবহার করে মডেলটি ডাউনলোড করুন।
মডেল ডাউনলোডের শর্তাবলী নির্ধারণ করতে এবং রিমোট মডেলটিকে আমাদের অ্যাপের সাথে সিঙ্ক করার জন্য একটি ডাউনলোড টাস্ক তৈরি করতে, নিচের কোডটি RecommendationClient.kt ফাইলে কপি করুন।
RecommendationClient.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 ফাইলে তালিকাভুক্ত করা আছে। এই প্রার্থীগুলোকে লোড করতে নিম্নলিখিত কোডটি কপি করুন।
RecommendationClient.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.")
}
}
প্রি-প্রসেসিং বাস্তবায়ন করুন
প্রি-প্রসেসিং ধাপে, আমরা ইনপুট ডেটার ফর্ম পরিবর্তন করে আমাদের মডেলের প্রত্যাশার সাথে মিলিয়ে নিই। এখানে, যদি আগে থেকে প্রচুর ইউজার লাইক তৈরি না হয়ে থাকে, তাহলে আমরা ইনপুটের দৈর্ঘ্য একটি প্লেসহোল্ডার ভ্যালু দিয়ে পূরণ করে দিই। নিচের কোডটি কপি করুন:
RecommendationClient.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
}
}
সুপারিশ তৈরি করতে ইন্টারপ্রেটার চালান
এখানে আমরা আগের ধাপে ডাউনলোড করা মডেলটি ব্যবহার করে আমাদের প্রি-প্রসেসড ইনপুটের উপর ইনফারেন্স চালাই। আমরা আমাদের মডেলের জন্য ইনপুট এবং আউটপুটের ধরন সেট করি এবং মুভি রিকমেন্ডেশন তৈরি করার জন্য ইনফারেন্স চালাই। নিচের কোডটি আপনার অ্যাপে কপি করুন।
RecommendationClient.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()
}
}
}
পোস্ট-প্রসেসিং বাস্তবায়ন করুন
অবশেষে, এই ধাপে আমরা আমাদের মডেলের আউটপুটকে পোস্ট-প্রসেস করি, সর্বোচ্চ কনফিডেন্স সহ ফলাফলগুলো নির্বাচন করি এবং এর মধ্যে থাকা ভ্যালুগুলো (যে সিনেমাগুলো ব্যবহারকারী আগে থেকেই পছন্দ করেছেন) সরিয়ে দিই। নিচের কোডটি আপনার অ্যাপে কপি করুন।
RecommendationClient.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-তে অ্যানালিটিক্স ইভেন্ট রপ্তানি করুন
- অ্যানালিটিক্স ইভেন্টগুলি প্রিপ্রসেস করুন
- সুপারিশসমূহ TensorFlow মডেলকে প্রশিক্ষণ দিন
- মডেলটি এক্সপোর্ট করুন এবং ফায়ারবেস কনসোলে ডিপ্লয় করুন
- একটি অ্যাপে সিনেমার সুপারিশ পরিবেশন করুন
পরবর্তী পদক্ষেপ
- আপনার অ্যাপে Firebase ML-এর সুপারিশগুলো প্রয়োগ করুন।

