TensorFlow Lite এবং Firebase - Android Codelab-এর সাথে আপনার অ্যাপে সুপারিশ যোগ করুন

1। সংক্ষিপ্ত বিবরণ

TensorFlow Lite এবং Firebase কোডল্যাবের সাথে সুপারিশগুলিতে স্বাগতম। এই কোডল্যাবে আপনি আপনার অ্যাপে একটি সুপারিশ মডেল স্থাপন করতে TensorFlow Lite এবং Firebase ব্যবহার করতে শিখবেন। এই কোডল্যাবটি এই টেনসরফ্লো লাইট উদাহরণের উপর ভিত্তি করে তৈরি করা হয়েছে।

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

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

আপনি কি শিখবেন

  • ব্যবহারকারীর আচরণের ডেটা সংগ্রহ করতে একটি অ্যান্ড্রয়েড অ্যাপে Firebase অ্যানালিটিক্সকে একীভূত করুন
  • Google Big Query-এ সেই ডেটা এক্সপোর্ট করুন
  • ডেটা প্রি-প্রসেস করুন এবং একটি TF Lite সুপারিশ মডেল প্রশিক্ষণ দিন
  • TF Lite মডেলটিকে Firebase ML-এ স্থাপন করুন এবং আপনার অ্যাপ থেকে এটি অ্যাক্সেস করুন
  • ব্যবহারকারীদের সুপারিশ করার জন্য মডেল ব্যবহার করে ডিভাইস ইনফারেন্সে চালান

আপনি কি প্রয়োজন হবে

  • সর্বশেষ অ্যান্ড্রয়েড স্টুডিও সংস্করণ।
  • কোডের উদাহরণ.
  • Android 7+ এবং Google Play পরিষেবা 9.8 বা তার পরবর্তী সংস্করণের একটি পরীক্ষামূলক ডিভাইস, অথবা Google Play পরিষেবাগুলির 9.8 বা তার পরের একটি এমুলেটর
  • যদি একটি ডিভাইস ব্যবহার করে, একটি সংযোগ তারের.

আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?

শুধুমাত্র মাধ্যমে এটি পড়ুন এটি পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

অ্যান্ড্রয়েড অ্যাপ তৈরি করার বিষয়ে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

2. নমুনা কোড পান

কমান্ড লাইন থেকে GitHub সংগ্রহস্থল ক্লোন করুন।

$ git clone https://github.com/FirebaseExtended/codelab-contentrecommendation-android.git

3. স্টার্টার অ্যাপ আমদানি করুন

অ্যান্ড্রয়েড স্টুডিও থেকে, codelab-recommendations-android ডিরেক্টরি নির্বাচন করুন ( android_studio_folder.png ) নমুনা কোড ডাউনলোড থেকে ( ফাইল > খুলুন > .../codelab-recommendations-android/start)।

আপনার এখন অ্যান্ড্রয়েড স্টুডিওতে স্টার্ট প্রজেক্ট খোলা থাকা উচিত।

4. ফায়ারবেস কনসোল প্রকল্প তৈরি করুন

একটি নতুন প্রকল্প তৈরি করুন

  1. ফায়ারবেস কনসোলে যান।
  2. প্রকল্প যোগ করুন নির্বাচন করুন (অথবা একটি প্রকল্প তৈরি করুন যদি এটি প্রথম হয়)।
  3. একটি প্রকল্পের নাম নির্বাচন করুন বা লিখুন এবং চালিয়ে যান ক্লিক করুন।
  4. নিশ্চিত করুন যে "এই প্রকল্পের জন্য Google Analytics সক্ষম করুন" সক্ষম করা আছে৷
  5. Firebase কনসোলে অবশিষ্ট সেটআপ পদক্ষেপগুলি অনুসরণ করুন, তারপরে প্রজেক্ট তৈরি করুন (বা যদি আপনি একটি বিদ্যমান Google প্রকল্প ব্যবহার করেন তবে Firebase যোগ করুন) ক্লিক করুন।

5. Firebase যোগ করুন

  1. আপনার নতুন প্রকল্পের ওভারভিউ স্ক্রীন থেকে, সেটআপ ওয়ার্কফ্লো চালু করতে Android আইকনে ক্লিক করুন।
  2. কোডল্যাবের প্যাকেজের নাম লিখুন: com.google.firebase.codelabs.recommendations
  3. রেজিস্টার অ্যাপ নির্বাচন করুন।

আপনার অ্যাপে google-services.json ফাইল যোগ করুন

প্যাকেজের নাম যোগ করার পরে এবং নিবন্ধন নির্বাচন করার পরে, আপনার Firebase Android কনফিগার ফাইলটি পেতে google-services.json ডাউনলোড করুন ক্লিক করুন তারপর আপনার প্রকল্পের app ডিরেক্টরিতে google-services.json ফাইলটি অনুলিপি করুন। ফাইলটি ডাউনলোড হওয়ার পরে আপনি কনসোলে দেখানো পরবর্তী পদক্ষেপগুলি এড়িয়ে যেতে পারেন (সেগুলি ইতিমধ্যেই আপনার জন্য বিল্ড-অ্যান্ড্রয়েড-স্টার্ট প্রকল্পে করা হয়েছে)।

আপনার অ্যাপে google-services প্লাগইন যোগ করুন

Firebase ব্যবহার করার জন্য আপনার অ্যাপ্লিকেশন কনফিগার করতে google-services প্লাগইনটি google-services.json ফাইল ব্যবহার করে। নিম্নলিখিত লাইনগুলি ইতিমধ্যেই প্রকল্পের build.gradle.kts ফাইলগুলিতে যোগ করা উচিত (নিশ্চিত করতে চেক করুন):

app/build.grade.kts

plugins {
    id("com.google.gms.google-services")
}

build.grade.kts

plugins {
    id("com.google.gms.google-services") version "4.3.15" apply false
}

গ্রেডল ফাইলের সাথে আপনার প্রকল্প সিঙ্ক করুন

আপনার অ্যাপে সমস্ত নির্ভরতা উপলব্ধ রয়েছে তা নিশ্চিত করার জন্য, আপনাকে এই মুহুর্তে গ্রেডল ফাইলগুলির সাথে আপনার প্রকল্প সিঙ্ক করা উচিত। অ্যান্ড্রয়েড স্টুডিও টুলবার থেকে ফাইল > গ্রেডল ফাইলের সাথে সিঙ্ক প্রজেক্ট নির্বাচন করুন।

6. স্টার্টার অ্যাপ চালান

এখন আপনি অ্যান্ড্রয়েড স্টুডিওতে প্রোজেক্ট ইম্পোর্ট করেছেন এবং আপনার JSON ফাইলের সাথে google-services প্লাগইন কনফিগার করেছেন, আপনি প্রথমবারের জন্য অ্যাপটি চালানোর জন্য প্রস্তুত। আপনার অ্যান্ড্রয়েড ডিভাইস সংযোগ করুন, এবং রান ক্লিক করুন ( execute.png অ্যান্ড্রয়েড স্টুডিও টুলবারে।

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

7. অ্যাপে Firebase Analytics যোগ করুন

এই ধাপে, আপনি ব্যবহারকারীর আচরণের ডেটা লগ করার জন্য অ্যাপে Firebase অ্যানালিটিক্স যোগ করবেন (এই ক্ষেত্রে, ব্যবহারকারী কোন সিনেমা পছন্দ করেন)। সুপারিশ মডেল প্রশিক্ষণের জন্য ভবিষ্যতের ধাপে এই ডেটা সমষ্টিগতভাবে ব্যবহার করা হবে।

উপকরণ এবং বিশ্লেষণ নির্ভরতা Firebase বিল যোগ করুন

আপনার অ্যাপে Firebase অ্যানালিটিক্স যোগ করার জন্য নিম্নলিখিত নির্ভরতাগুলি প্রয়োজনীয়৷ তাদের ইতিমধ্যেই app/build.gradle.kts ফাইলে অন্তর্ভুক্ত করা উচিত (যাচাই করুন)।

app/build.grade.kts

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-analytics-ktx")

অ্যাপে Firebase Analytics সেট আপ করুন

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)
        }
    }

8. আপনার অ্যানালিটিক্স ইন্টিগ্রেশন পরীক্ষা করুন

এই ধাপে, আমরা অ্যাপে অ্যানালিটিক্স ইভেন্ট তৈরি করব এবং যাচাই করব যে সেগুলি Firebase কনসোলে পাঠানো হচ্ছে।

Analytics ডিবাগ লগিং সক্ষম করুন

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

টার্মিনাল

adb shell setprop debug.firebase.analytics.app com.google.firebase.codelabs.recommendations

বিশ্লেষণ ইভেন্ট তৈরি হয় যাচাই করুন

  1. অ্যান্ড্রয়েড স্টুডিওতে, আপনার অ্যাপ থেকে লগিং পরীক্ষা করতে Logcat উইন্ডো খুলুন।
  2. লগক্যাট ফিল্টারটিকে "লগিং ইভেন্ট" স্ট্রিংয়ে সেট করুন।
  3. যাচাই করুন যে "select_item" অ্যানালিটিক্স ইভেন্টগুলি যখনই আপনি অ্যাপে একটি মুভি পছন্দ করেন তখন নির্গত হয়৷

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

ঐচ্ছিক: Firebase কনসোলে Analytics ইভেন্ট নিশ্চিত করুন

  1. ফায়ারবেস কনসোলে যান।
  2. বিশ্লেষণের অধীনে DebugView নির্বাচন করুন
  3. অ্যান্ড্রয়েড স্টুডিওতে, অ্যাপটি চালু করতে রান নির্বাচন করুন এবং আপনার পছন্দের তালিকায় কিছু চলচ্চিত্র যোগ করুন।
  4. Firebase কনসোলের DebugView-এ, আপনি অ্যাপে সিনেমা যোগ করার সাথে সাথে এই ইভেন্টগুলি লগ করা হচ্ছে কিনা তা যাচাই করুন।

9. বিগ কোয়েরিতে বিশ্লেষণ ডেটা রপ্তানি করুন

Big Query হল একটি Google ক্লাউড পণ্য যা আপনাকে প্রচুর পরিমাণে ডেটা পরীক্ষা এবং প্রক্রিয়া করার অনুমতি দেয়। এই ধাপে, আপনি আপনার ফায়ারবেস কনসোল প্রজেক্টকে Big Query-এর সাথে সংযুক্ত করবেন যাতে আপনার অ্যাপের দ্বারা জেনারেট করা Analytics ডেটা স্বয়ংক্রিয়ভাবে Big Query-এ রপ্তানি হয়।

Big Query রপ্তানি সক্ষম করুন

  1. ফায়ারবেস কনসোলে যান।
  2. প্রজেক্ট ওভারভিউ এর পাশে সেটিংস গিয়ার আইকন নির্বাচন করুন এবং তারপরে প্রজেক্ট সেটিংস নির্বাচন করুন
  3. ইন্টিগ্রেশন ট্যাবটি নির্বাচন করুন।
  4. BigQuery ব্লকের মধ্যে লিঙ্ক (বা পরিচালনা করুন ) নির্বাচন করুন।
  5. BigQuery ধাপে Firebase লিঙ্ক করার বিষয়ে পরবর্তী নির্বাচন করুন।
  6. কনফিগার ইন্টিগ্রেশন বিভাগের অধীনে, Google Analytics ডেটা পাঠানো সক্ষম করতে সুইচটিতে ক্লিক করুন এবং BigQuery-এর লিঙ্ক নির্বাচন করুন।

আপনি এখন আপনার Firebase কনসোল প্রকল্প সক্ষম করেছেন যাতে স্বয়ংক্রিয়ভাবে Firebase Analytics ইভেন্ট ডেটা Big Query-এ পাঠানো হয়। এটি আর কোনও ইন্টারঅ্যাকশন ছাড়াই স্বয়ংক্রিয়ভাবে ঘটে, তবে, BigQuery-এ অ্যানালিটিক্স ডেটাসেট তৈরি করে এমন প্রথম এক্সপোর্ট 24 ঘণ্টার জন্য নাও হতে পারে। ডেটাসেট তৈরি হওয়ার পর, Firebase ক্রমাগত নতুন অ্যানালিটিক্স ইভেন্টগুলিকে ইন্ট্রাডে টেবিলে Big Query-এ রপ্তানি করে এবং ইভেন্ট টেবিলে বিগত দিনের ইভেন্টগুলিকে গোষ্ঠীভুক্ত করে।

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

10. মডেল প্রশিক্ষণ ডেটা পেতে BigQuery ব্যবহার করুন

এখন যেহেতু আমরা BigQuery এ রপ্তানি করার জন্য আমাদের Firebase কনসোল সংযুক্ত করেছি, আমাদের অ্যাপ বিশ্লেষণ ইভেন্ট ডেটা কিছু সময়ের পরে BigQuery কনসোলে স্বয়ংক্রিয়ভাবে প্রদর্শিত হবে। এই টিউটোরিয়ালের উদ্দেশ্যে কিছু প্রাথমিক ডেটা পেতে, এই ধাপে আমরা আমাদের সুপারিশ মডেল প্রশিক্ষণের জন্য ব্যবহার করার জন্য আপনার BigQuery কনসোলে একটি বিদ্যমান নমুনা ডেটাসেট আমদানি করব।

BigQuery-এ নমুনা ডেটাসেট আমদানি করুন

  1. Google ক্লাউড কনসোলে BigQuery ড্যাশবোর্ডে যান।
  2. মেনুতে আপনার প্রকল্পের নাম নির্বাচন করুন।
  3. বিশদ বিবরণ দেখতে BigQuery বাঁদিকের নেভিগেশনের নীচে আপনার প্রকল্পের নাম নির্বাচন করুন।
  4. ডেটাসেট তৈরির প্যানেল খুলতে ডেটাসেট তৈরি করুন নির্বাচন করুন।
  5. ডেটাসেট আইডির জন্য 'firebase_recommendations_dataset' লিখুন এবং ডেটাসেট তৈরি করুন নির্বাচন করুন।
  6. নতুন ডেটাসেটটি প্রকল্পের নামের অধীনে বাম মেনুতে প্রদর্শিত হবে। এটি ক্লিক করুন.
  7. টেবিল তৈরির প্যানেল খুলতে টেবিল তৈরি করুন নির্বাচন করুন।
  8. 'গুগল ক্লাউড স্টোরেজ' নির্বাচন থেকে টেবিল তৈরি করার জন্য।
  9. GCS বাকেট ফিল্ড থেকে ফাইল নির্বাচন করুন , 'gs://firebase-recommendations/recommendations-test/formatted_data_filtered.txt' লিখুন।
  10. ফাইল ফরম্যাট ড্রপ ডাউনে 'JSONL' নির্বাচন করুন।
  11. টেবিল নামের জন্য 'recommendations_table' লিখুন।
  12. স্কিমা > অটো ডিটেক্ট > স্কিমা এবং ইনপুট প্যারামিটারের অধীনে বক্সটি চেক করুন
  13. টেবিল তৈরি করুন নির্বাচন করুন

নমুনা ডেটাসেট অন্বেষণ

এই মুহুর্তে, আপনি ঐচ্ছিকভাবে স্কিমা অন্বেষণ করতে পারেন এবং এই ডেটাসেটের পূর্বরূপ দেখতে পারেন।

  1. এতে থাকা সারণীগুলিকে প্রসারিত করতে বাম মেনুতে ফায়ারবেস-সুপারিশ-ডেটাসেট নির্বাচন করুন৷
  2. টেবিল স্কিমা দেখতে সুপারিশ-সারণী টেবিল নির্বাচন করুন।
  3. এই সারণীতে থাকা প্রকৃত Analytics ইভেন্ট ডেটা দেখতে পূর্বরূপ নির্বাচন করুন।

পরিষেবা অ্যাকাউন্টের শংসাপত্র তৈরি করুন

এখন, আমরা আমাদের Google ক্লাউড কনসোল প্রজেক্টে পরিষেবা অ্যাকাউন্টের শংসাপত্র তৈরি করব যা আমরা আমাদের BigQuery ডেটা অ্যাক্সেস এবং লোড করার জন্য নিম্নলিখিত ধাপে Colab পরিবেশে ব্যবহার করতে পারি।

  1. আপনার Google ক্লাউড প্রকল্পের জন্য বিলিং সক্ষম করা আছে তা নিশ্চিত করুন৷
  2. BigQuery এবং BigQuery স্টোরেজ API এপিআই সক্ষম করুন। < এখানে ক্লিক করুন >
  3. সার্ভিস অ্যাকাউন্ট কী পৃষ্ঠাতে যান।
  4. পরিষেবা অ্যাকাউন্ট তালিকা থেকে, নতুন পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
  5. পরিষেবা অ্যাকাউন্ট নাম ক্ষেত্রে, একটি নাম লিখুন।
  6. ভূমিকা তালিকা থেকে, প্রকল্প > মালিক নির্বাচন করুন।
  7. তৈরি করুন ক্লিক করুন। একটি JSON ফাইল যা আপনার কম্পিউটারে আপনার কী ডাউনলোডগুলি ধারণ করে৷

পরবর্তী ধাপে, আমরা এই ডেটা প্রিপ্রসেস করতে এবং আমাদের সুপারিশের মডেলকে প্রশিক্ষণ দিতে Google Colab ব্যবহার করব।

11. প্রিপ্রসেস ডেটা এবং ট্রেন সুপারিশ মডেল

এই ধাপে, আমরা নিম্নলিখিত ধাপগুলি সম্পাদন করার জন্য একটি Colab নোটবুক ব্যবহার করব:

  1. Colab নোটবুকে BigQuery ডেটা আমদানি করুন
  2. মডেল প্রশিক্ষণের জন্য প্রস্তুত করার জন্য ডেটা প্রিপ্রসেস করুন
  3. বিশ্লেষণী তথ্যের উপর সুপারিশ মডেল প্রশিক্ষণ
  4. একটি TF লাইট মডেল হিসাবে মডেল রপ্তানি করুন
  5. মডেলটিকে ফায়ারবেস কনসোলে স্থাপন করুন যাতে আমরা এটিকে আমাদের অ্যাপে ব্যবহার করতে পারি

Colab ট্রেনিং নোটবুক লঞ্চ করার আগে, আমরা প্রথমে Firebase মডেল ম্যানেজমেন্ট API চালু করব যাতে Colab আমাদের Firebase কনসোলে প্রশিক্ষিত মডেল স্থাপন করতে পারে।

Firebase মডেল ব্যবস্থাপনা API সক্ষম করুন

আপনার ML মডেলগুলি সংরক্ষণ করার জন্য একটি বালতি তৈরি করুন৷

আপনার ফায়ারবেস কনসোলে, স্টোরেজে যান এবং শুরু করুন ক্লিক করুন। fbbea78f0eb3dc9f.png

আপনার বালতি সেট আপ পেতে ডায়ালগ অনুসরণ করুন.

19517c0d6d2aa14d.png

Firebase ML API সক্ষম করুন৷

Google ক্লাউড কনসোলে Firebase ML API পৃষ্ঠাতে যান এবং Enable এ ক্লিক করুন।

মডেলকে প্রশিক্ষণ ও স্থাপন করতে Colab নোটবুক ব্যবহার করুন

নিম্নলিখিত লিঙ্কটি ব্যবহার করে কোলাব নোটবুকটি খুলুন এবং এর মধ্যে পদক্ষেপগুলি সম্পূর্ণ করুন৷ Colab নোটবুকের ধাপগুলি শেষ করার পরে, আপনার কাছে একটি TF লাইট মডেল ফাইল Firebase কনসোলে স্থাপন করা হবে যা আমরা আমাদের অ্যাপে সিঙ্ক করতে পারি।

Colab-এ খুলুন

12. আপনার অ্যাপে মডেলটি ডাউনলোড করুন

এই ধাপে, আমরা Firebase Machine Learning থেকে এইমাত্র প্রশিক্ষিত মডেলটি ডাউনলোড করতে আমাদের অ্যাপটি পরিবর্তন করব।

Firebase ML নির্ভরতা যোগ করুন

আপনার অ্যাপে ফায়ারবেস মেশিন লার্নিং মডেলগুলি ব্যবহার করার জন্য নিম্নলিখিত নির্ভরতা প্রয়োজন৷ এটি ইতিমধ্যে যোগ করা উচিত (যাচাই)।

app/build.grade.kts

implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

Firebase মডেল ম্যানেজার 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.")
            }
    }

13. আপনার অ্যাপে Tensorflow Lite সুপারিশ মডেলকে একীভূত করুন

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
        }
    }


আপনার অ্যাপ পরীক্ষা করুন!

আপনার অ্যাপ পুনরায় চালান। আপনি কয়েকটি চলচ্চিত্র নির্বাচন করার সাথে সাথে এটি স্বয়ংক্রিয়ভাবে নতুন মডেল ডাউনলোড করবে এবং সুপারিশ তৈরি করা শুরু করবে!

14. অভিনন্দন!

আপনি TensorFlow Lite এবং Firebase ব্যবহার করে আপনার অ্যাপে একটি সুপারিশ বৈশিষ্ট্য তৈরি করেছেন। মনে রাখবেন যে এই কোডল্যাবে দেখানো কৌশল এবং পাইপলাইনগুলি সাধারণীকরণ করা যেতে পারে এবং অন্যান্য ধরণের সুপারিশগুলিও পরিবেশন করতে ব্যবহার করা যেতে পারে।

আমরা কভার করেছি কি

  • ফায়ারবেস এমএল
  • ফায়ারবেস বিশ্লেষণ
  • BigQuery-এ অ্যানালিটিক্স ইভেন্ট এক্সপোর্ট করুন
  • প্রিপ্রসেস বিশ্লেষণ ইভেন্ট
  • ট্রেনের সুপারিশ TensorFlow মডেল
  • মডেল এক্সপোর্ট করুন এবং ফায়ারবেস কনসোলে স্থাপন করুন
  • একটি অ্যাপে চলচ্চিত্রের সুপারিশ পরিবেশন করুন

পরবর্তী পদক্ষেপ

  • আপনার অ্যাপে Firebase ML সুপারিশ বাস্তবায়ন করুন।

আরও জানুন

একটি প্রশ্ন আছে?

রিপোর্ট সমস্যা