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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5. Firebase যোগ করুন

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

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

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

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

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

app/build.grade

apply plugin: 'com.google.gms.google-services'

বিল্ড.গ্রেড

classpath 'com.google.gms:google-services:4.3.4'

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

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

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

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

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

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

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

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

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

app/build.grade

implementation 'com.google.firebase:firebase-analytics-ktx:17.6.0'

অ্যাপে 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 কনসোলে নিশ্চিত অ্যানালিটিক্স ঘটনা

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

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

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

Big Query এক্সপোর্ট সক্ষম করুন

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

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

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

  1. নির্বাচন firebase-সুপারিশ-ডেটা সেটটি বাম মেনুতে টেবিল এটা রয়েছে প্রসারিত করতে।
  2. টেবিল স্কিমা দেখুন সুপারিশ-টেবিল টেবিল নির্বাচন করুন।
  3. প্রকৃত অ্যানালিটিক্স ঘটনা ডেটা এই টেবিল ধারন দেখতে পূর্বরূপ নির্বাচন করুন।

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

এখন, আমরা আমাদের 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 সক্ষম করুন৷

যান Firebase এমএল এপিআই পৃষ্ঠা Google ক্লাউড কনসোলে এবং সক্ষম করুন এ ক্লিক করুন।

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

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

Colab-এ খুলুন

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

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

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

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

app/build.grade

implementation 'com.google.firebase:firebase-ml-model-interpreter:22.0.4'

Firebase মডেল ম্যানেজার API দিয়ে মডেলটি ডাউনলোড করুন

যার অধীনে শর্ত মডেল ডাউনলোড ঘটে সেট আপ করুন এবং আমাদের অ্যাপ্লিকেশন দূরবর্তী মডেল সিঙ্ক করার জন্য একটি ডাউনলোড টাস্ক তৈরি করার জন্য নীচের কোড কপি করুন RecommendationClient.kt মধ্যে।

RecommendationClient.kt

    private fun downloadModel(modelName: String) {
        val remoteModel = FirebaseCustomRemoteModel.Builder(modelName).build()
        val firebaseModelManager = FirebaseModelManager.getInstance()
        firebaseModelManager
            .isModelDownloaded(remoteModel)
            .continueWithTask { task ->
                // Create update condition if model is already downloaded, otherwise create download
                // condition.
                val conditions = if (task.result != null && task.result == true) {
                    FirebaseModelDownloadConditions.Builder()
                        .requireWifi()
                        .build() // Update condition that requires wifi.
                } else {
                    FirebaseModelDownloadConditions.Builder().build(); // Download condition.
                }
                firebaseModelManager.download(remoteModel, conditions)
            }
            .addOnSuccessListener {
                firebaseModelManager.getLatestModelFile(remoteModel)
                    .addOnCompleteListener {
                        val model = it.result
                        if (model == null) {
                            showToast(context, "Failed to get model file.")
                        } else {
                            showToast(context, "Downloaded remote model")
                            GlobalScope.launch { initializeInterpreter(model) }
                        }
                    }
            }
            .addOnFailureListener {
                showToast(context, "Model download failed for recommendations, please check your connection.")
            }
    }



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

Tensorflow Lite রানটাইম আপনাকে সুপারিশ তৈরি করতে অ্যাপে আপনার মডেল ব্যবহার করতে দেবে। পূর্ববর্তী ধাপে আমরা ডাউনলোড করা মডেল ফাইলের সাথে একটি TFlite দোভাষী শুরু করেছি। এই ধাপে, আমরা প্রথমে অনুমান ধাপে আমাদের মডেলের সাথে একটি অভিধান এবং লেবেল লোড করব, তারপরে আমরা আমাদের মডেলে ইনপুট তৈরি করতে প্রাক-প্রসেসিং যোগ করব এবং পোস্ট-প্রসেসিং করব যেখানে আমরা আমাদের অনুমান থেকে ফলাফল বের করব। .

অভিধান এবং লেবেল লোড করুন

/ সম্পদ ফোল্ডারে লেবেল জেনারেট করতে সুপারিশ মডেল দ্বারা সুপারিশ প্রার্থীর মাঝামাঝি ফাইল 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 সুপারিশ বাস্তবায়ন করুন।

আরও জানুন

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

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