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

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

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

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

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

তুমি কি শিখবে

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

তোমার যা লাগবে

  • এক্সকোড ১১ (বা উচ্চতর)
  • কোকোপডস ১.৯.১ (বা উচ্চতর)

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

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

iOS অ্যাপ তৈরির ক্ষেত্রে আপনার অভিজ্ঞতা কেমন হবে?

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

2. Firebase কনসোল প্রকল্প তৈরি করুন

প্রকল্পে Firebase যোগ করুন

  1. ফায়ারবেস কনসোলে যান।
  2. নতুন প্রকল্প তৈরি করুন নির্বাচন করুন এবং আপনার প্রকল্পের নাম দিন "Firebase ML iOS Codelab"।

৩. নমুনা প্রকল্পটি পান

কোডটি ডাউনলোড করুন

নমুনা প্রকল্পটি ক্লোন করে এবং প্রকল্প ডিরেক্টরিতে pod update চালানোর মাধ্যমে শুরু করুন:

git clone https://github.com/FirebaseExtended/codelab-contentrecommendation-ios.git
cd codelab-contentrecommendation-ios/start
pod install --repo-update

যদি আপনার গিট ইনস্টল না থাকে, তাহলে আপনি এর গিটহাব পৃষ্ঠা থেকে অথবা এই লিঙ্কে ক্লিক করে নমুনা প্রকল্পটি ডাউনলোড করতে পারেন। প্রকল্পটি ডাউনলোড করার পরে, এটি Xcode এ চালান এবং এটি কীভাবে কাজ করে তা অনুভব করার জন্য সুপারিশটি ব্যবহার করে দেখুন।

ফায়ারবেস সেট আপ করুন

একটি নতুন Firebase প্রকল্প তৈরি করতে ডকুমেন্টেশন অনুসরণ করুন। আপনার প্রকল্পটি হয়ে গেলে, Firebase কনসোল থেকে আপনার প্রকল্পের GoogleService-Info.plist ফাইলটি ডাউনলোড করুন এবং এটিকে Xcode প্রকল্পের রুটে টেনে আনুন।

4a923d5c7ae0d8f3.png - [অনলাইন].

আপনার পডফাইলে ফায়ারবেস যোগ করুন এবং পড ইনস্টল চালান।

pod 'FirebaseAnalytics'
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
pod 'TensorFlowLiteSwift'

আপনার AppDelegate এর didFinishLaunchingWithOptions পদ্ধতিতে, ফাইলের শীর্ষে Firebase আমদানি করুন

import FirebaseCore

এবং Firebase কনফিগার করার জন্য একটি কল যোগ করুন।

FirebaseApp.configure()

অ্যাপটি সঠিকভাবে কনফিগার করা আছে এবং লঞ্চের সময় ক্র্যাশ না হয় তা নিশ্চিত করতে প্রকল্পটি আবার চালান।

  1. "এই প্রকল্পের জন্য গুগল অ্যানালিটিক্স সক্ষম করুন" সক্ষম আছে কিনা তা নিশ্চিত করুন।
  2. Firebase কনসোলে বাকি সেটআপ ধাপগুলি অনুসরণ করুন, তারপর Create project (অথবা যদি আপনি একটি বিদ্যমান Google project ব্যবহার করেন তবে Firebase যোগ করুন) এ ক্লিক করুন।

৪. অ্যাপটিতে ফায়ারবেস অ্যানালিটিক্স যোগ করুন

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

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

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

ব্যবহারকারী যখন কোনও সিনেমায় লাইক ক্লিক করেন তখন একটি বিশ্লেষণ ইভেন্ট নিবন্ধন করতে নীচের কোডটি যুক্ত করুন।

AllMoviesCollectionViewController.swift সম্পর্কে

import FirebaseAnalytics
//


override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
//

if movie.liked == nil {
      movie.liked = true
      Analytics.logEvent(AnalyticsEventSelectItem, parameters: [AnalyticsParameterItemID: movie.id])
    } else {
      movie.liked?.toggle()
    }
       
}

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

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

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

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

আপনার ডেভেলপমেন্ট ডিভাইসে অ্যানালিটিক্স ডিবাগ মোড সক্ষম করতে, Xcode-এ নিম্নলিখিত কমান্ড লাইন আর্গুমেন্টটি নির্দিষ্ট করুন:

-FIRDebugEnabled

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

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

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

৬. বিগ কোয়েরিতে অ্যানালিটিক্স ডেটা রপ্তানি করুন

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

বিগ কোয়েরি এক্সপোর্ট সক্ষম করুন

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

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

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

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

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

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

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

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

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

  1. বাম মেনুতে firebase-recommendations-dataset নির্বাচন করুন যাতে এতে থাকা টেবিলগুলি প্রসারিত হয়।
  2. টেবিল স্কিমা দেখতে সুপারিশ-টেবিল টেবিল নির্বাচন করুন।
  3. এই টেবিলে থাকা প্রকৃত অ্যানালিটিক্স ইভেন্ট ডেটা দেখতে প্রিভিউ নির্বাচন করুন।

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

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

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

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

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

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

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

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

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

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

আপনার Firebase কনসোলে, Storage-এ যান এবং Get started-এ ক্লিক করুন। অনুসরণ

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

19517c0d6d2aa14d.png

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

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

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

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

কোলাবে খুলুন

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

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

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

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

পডফাইল

import FirebaseCore
import FirebaseMLModelDownloader

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

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

মডেললোডার.সুইফট

static func downloadModel(named name: String,
                            completion: @escaping (CustomModel?, DownloadError?) -> Void) {
    guard FirebaseApp.app() != nil else {
      completion(nil, .firebaseNotInitialized)
      return
    }
    guard success == nil && failure == nil else {
      completion(nil, .downloadInProgress)
      return
    }
    let conditions = ModelDownloadConditions(allowsCellularAccess: false)
    ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in
            switch (result) {
            case .success(let customModel):
                    // Download complete.
                    // The CustomModel object contains the local path of the model file,
                    // which you can use to instantiate a TensorFlow Lite classifier.
                    return completion(customModel, nil)
            case .failure(let error):
                // Download was unsuccessful. Notify error message.
              completion(nil, .downloadFailed(underlyingError: error))
            }
    }
  }

১০. আপনার অ্যাপে টেনসরফ্লো লাইট সুপারিশ মডেলটি একীভূত করুন

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

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

সুপারিশ মডেল দ্বারা সুপারিশ প্রার্থী তৈরি করতে ব্যবহৃত লেবেলগুলি সম্পদ ফোল্ডারের sorted_movie_vocab.json ফাইলে তালিকাভুক্ত করা হয়েছে। এই প্রার্থীদের লোড করতে নিম্নলিখিত কোডটি অনুলিপি করুন।

সুপারিশসমূহViewController.swift

  func getMovies() -> [MovieItem] {
    let barController = self.tabBarController as! TabBarController
    return barController.movies
  }

প্রাক-প্রক্রিয়াকরণ বাস্তবায়ন করুন

প্রি-প্রসেসিং ধাপে, আমরা আমাদের মডেলের প্রত্যাশার সাথে মেলে ইনপুট ডেটার ফর্ম পরিবর্তন করি। এখানে, যদি আমরা ইতিমধ্যে অনেক ব্যবহারকারীর লাইক তৈরি না করে থাকি, তাহলে আমরা ইনপুট দৈর্ঘ্যকে একটি প্লেসহোল্ডার মান দিয়ে প্যাড করি। নীচের কোডটি অনুলিপি করুন:

সুপারিশসমূহViewController.swift

  // Given a list of selected items, preprocess to get tflite input.
  func preProcess() -> Data {
    let likedMovies = getLikedMovies().map { (MovieItem) -> Int32 in
      return MovieItem.id
    }
    var inputData = Data(copyingBufferOf: Array(likedMovies.prefix(10)))

    // Pad input data to have a minimum of 10 context items (4 bytes each)
    while inputData.count < 10*4 {
      inputData.append(0)
    }
    return inputData
  }

সুপারিশ তৈরি করতে দোভাষী চালান

এখানে আমরা পূর্ববর্তী ধাপে ডাউনলোড করা মডেলটি ব্যবহার করে আমাদের প্রি-প্রসেসড ইনপুটটিতে ইনফারেন্স রান করি। আমরা আমাদের মডেলের জন্য ইনপুট এবং আউটপুটের ধরণ সেট করি এবং আমাদের মুভি সুপারিশ তৈরি করতে ইনফারেন্স রান করি। আপনার অ্যাপে নিম্নলিখিত কোডটি কপি করুন।

সুপারিশসমূহViewController.swift

import TensorFlowLite

সুপারিশসমূহViewController.swift

 private var interpreter: Interpreter?

 func loadModel() {
    // Download the model from Firebase
    print("Fetching recommendations model...")
    ModelDownloader.fetchModel(named: "recommendations") { (filePath, error) in
      guard let path = filePath else {
        if let error = error {
          print(error)
        }
        return
      }
      print("Recommendations model download complete")
      self.loadInterpreter(path: path)
    }
  }

 func loadInterpreter(path: String) {
    do {
      interpreter = try Interpreter(modelPath: path)

      // Allocate memory for the model's input `Tensor`s.
      try interpreter?.allocateTensors()

      let inputData = preProcess()

      // Copy the input data to the input `Tensor`.
      try self.interpreter?.copy(inputData, toInputAt: 0)

      // Run inference by invoking the `Interpreter`.
      try self.interpreter?.invoke()

      // Get the output `Tensor`
      let confidenceOutputTensor = try self.interpreter?.output(at: 0)
      let idOutputTensor = try self.interpreter?.output(at: 1)

      // Copy output to `Data` to process the inference results.
      let confidenceOutputSize = confidenceOutputTensor?.shape.dimensions.reduce(1, {x, y in x * y})

      let idOutputSize = idOutputTensor?.shape.dimensions.reduce(1, {x, y in x * y})

      let confidenceResults =
        UnsafeMutableBufferPointer<Float32>.allocate(capacity: confidenceOutputSize!)
      let idResults =
        UnsafeMutableBufferPointer<Int32>.allocate(capacity: idOutputSize!)
      _ = confidenceOutputTensor?.data.copyBytes(to: confidenceResults)
      _ = idOutputTensor?.data.copyBytes(to: idResults)

      postProcess(idResults, confidenceResults)

      print("Successfully ran inference")
      DispatchQueue.main.async {
        self.tableView.reloadData()
      }
    } catch {
      print("Error occurred creating model interpreter: \(error)")
    }
  }

পোস্ট-প্রসেসিং বাস্তবায়ন করুন

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

সুপারিশসমূহViewController.swift

  // Postprocess to get results from tflite inference.
  func postProcess(_ idResults: UnsafeMutableBufferPointer<Int32>, _ confidenceResults: UnsafeMutableBufferPointer<Float32>) {
    for i in 0..<10 {
      let id = idResults[i]
      let movieIdx = getMovies().firstIndex { $0.id == id }
      let title = getMovies()[movieIdx!].title
      recommendations.append(Recommendation(title: title, confidence: confidenceResults[i]))
    }
  }

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

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

১১. অভিনন্দন!

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

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

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

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

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

আরও জানুন

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

সমস্যাগুলি রিপোর্ট করুন