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

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

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

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

আপনি যা শিখবেন

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

আপনার যা লাগবে

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

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

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

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

নবীন ইন্টারমিডিয়েট দক্ষ

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

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

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

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

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

  1. যান Firebase কনসোল
  2. প্রকল্প যোগ নির্বাচন করুন (অথবা একটি প্রকল্প তৈরি করুন যদি এটি প্রথম এক)।
  3. নির্বাচন করুন অথবা একটি প্রকল্প নাম লিখুন এবং অবিরত ক্লিক করুন।
  4. নিশ্চিত করুন যে "এই প্রকল্পের জন্য Google Analytics সক্ষম করুন" সক্ষম করা আছে।
  5. ফায়ারবেস কনসোলের বাকি সেটআপ ধাপগুলি অনুসরণ করুন, তারপর প্রজেক্ট তৈরি করুন (অথবা আপনি যদি বিদ্যমান গুগল প্রজেক্ট ব্যবহার করেন তবে ফায়ারবেস যুক্ত করুন) ক্লিক করুন।
  1. আপনার নতুন প্রকল্পের ওভারভিউ স্ক্রীন থেকে, সেটআপ ওয়ার্কফ্লো চালু করতে অ্যান্ড্রয়েড আইকনে ক্লিক করুন।
  2. Codelab প্যাকেজ নাম লিখুন: com.google.firebase.codelabs.recommendations
  3. নিবন্ধন অ্যাপ্লিকেশন নির্বাচন করুন।

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

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

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

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

app/build.grade

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

build.grade

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

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

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

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

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

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

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

আপনার অ্যাপে Firebase অ্যানালিটিক্স যোগ করার জন্য নিম্নলিখিত নির্ভরতা প্রয়োজন। এটি ইতিমধ্যে অ্যাপ/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)
        }
    }

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

অ্যানালিটিক্স ডিবাগ লগিং সক্ষম করুন

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

টার্মিনাল

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

যাচাই করুন অ্যানালিটিক্স ইভেন্ট তৈরি হয়েছে

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

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

ঐচ্ছিক: Firebase কনসোলে নিশ্চিত অ্যানালিটিক্স ঘটনা

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

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

বড় প্রশ্ন রপ্তানি সক্ষম করুন

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

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

একটি সুপারিশ মডেল প্রশিক্ষণ অনেক তথ্য প্রয়োজন। যেহেতু আমাদের কাছে ইতিমধ্যেই প্রচুর পরিমাণে ডেটা তৈরি করার কোনো অ্যাপ নেই, তাই পরবর্তী ধাপে আমরা এই টিউটোরিয়ালের বাকি অংশের জন্য 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 ক্লাউড কনসোল প্রকল্পে পরিষেবা অ্যাকাউন্টের শংসাপত্র তৈরি করব যা আমরা আমাদের ধাপে ধাপে Colab পরিবেশে ব্যবহার করে আমাদের BigQuery ডেটা অ্যাক্সেস এবং লোড করতে পারি।

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

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

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

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

কোলাব প্রশিক্ষণ নোটবুক চালু করার আগে, আমরা প্রথমে ফায়ারবেস মডেল ম্যানেজমেন্ট এপিআই সক্ষম করব যাতে কোলাব প্রশিক্ষিত মডেলকে আমাদের ফায়ারবেস কনসোলে স্থাপন করতে পারে।

Firebase মডেল ম্যানেজমেন্ট API সক্ষম করুন

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

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

আপনার বালতি সেট আপ করার জন্য সংলাপ অনুসরণ করুন।

19517c0d6d2aa14d.png

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

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

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

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

কোলাবে খোলা

এই ধাপে, আমরা ফায়ারবেস মেশিন লার্নিং থেকে আমাদের সদ্য প্রশিক্ষিত মডেলটি ডাউনলোড করার জন্য আমাদের অ্যাপটি সংশোধন করব।

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

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

app/build.grade

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

ফায়ারবেস মডেল ম্যানেজার এপিআই দিয়ে মডেলটি ডাউনলোড করুন

যার অধীনে শর্ত মডেল ডাউনলোড ঘটে সেট আপ করুন এবং আমাদের অ্যাপ্লিকেশন দূরবর্তী মডেল সিঙ্ক করার জন্য একটি ডাউনলোড টাস্ক তৈরি করার জন্য নীচের কোড কপি করুন 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.")
            }
    }



টেন্সরফ্লো লাইট রানটাইম আপনাকে সুপারিশ তৈরি করতে অ্যাপটিতে আপনার মডেল ব্যবহার করতে দেবে। আগের ধাপে আমরা আমাদের ডাউনলোড করা মডেল ফাইলের সাথে একটি 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
        }
    }


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

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

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

যা আমরা েকে রেখেছি

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

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

  • আপনার অ্যাপে Firebase ML সুপারিশগুলি প্রয়োগ করুন।

আরো জানুন

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

সমস্যা প্রতিবেদন করুন