রিয়েলটাইম অন-ডিভাইস ইন-অ্যাপ-পারচেজ অপ্টিমাইজেশান কোডল্যাব

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

1cbf855eda62c306.png

রিয়েলটাইম অন-ডিভাইস ইন-অ্যাপ পারচেজ অপটিমাইজেশন কোডল্যাবে আপনাকে স্বাগতম। এই কোডল্যাবে আপনি শিখবেন কীভাবে TensorFlow Lite এবং Firebase ব্যবহার করে আপনার অ্যাপে একটি কাস্টম পার্সোনালাইজেশন মডেলকে প্রশিক্ষণ ও স্থাপন করতে হয়।

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

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

  • ফায়ারবেস অ্যানালিটিক্সের মাধ্যমে অ্যানালিটিক্স ডেটা সংগ্রহ করুন
  • BigQuery ব্যবহার করে অ্যানালিটিক্স ডেটা প্রিপ্রসেস করুন
  • ইন-অ্যাপ পারচেজ (IAP)-এর অন-ডিভাইস অপ্টিমাইজেশনের জন্য একটি সহজ ML মডেলকে প্রশিক্ষণ দিন।
  • TFLite মডেলগুলো Firebase ML-এ স্থাপন করুন এবং আপনার অ্যাপ থেকে সেগুলো অ্যাক্সেস করুন।
  • ফায়ারবেস এ/বি টেস্টিং এর মাধ্যমে বিভিন্ন মডেল পরিমাপ ও পরীক্ষা করুন।
  • নিয়মিত বিরতিতে সর্বশেষ তথ্য ব্যবহার করে নতুন মডেলগুলোকে প্রশিক্ষণ দিন এবং প্রয়োগ করুন।

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

  • অ্যান্ড্রয়েড স্টুডিও সংস্করণ ৩.৪+
  • অ্যান্ড্রয়েড ২.৩+ এবং গুগল প্লে সার্ভিসেস ৯.৮ বা তার পরবর্তী সংস্করণসহ একটি ফিজিক্যাল টেস্ট ডিভাইস, অথবা গুগল প্লে সার্ভিসেস ৯.৮ বা তার পরবর্তী সংস্করণসহ একটি এমুলেটর
  • ভৌত পরীক্ষার ডিভাইস ব্যবহার করলে, একটি সংযোগ তারের প্রয়োজন হবে।
  • নবীন এমএল জ্ঞান

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

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

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

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

২. সমস্যার বিবরণ

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

৩. নমুনা কোডটি নিন।

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

git clone https://github.com/googlecodelabs/firebase-iap-optimization.git

এই রিপোজিটরিতে রয়েছে:

  1. একটি জুপিটার নোটবুক (.ipynb) যা পার্সোনালাইজেশন মডেলকে প্রশিক্ষণ দেয় এবং সেটিকে একটি TFLite মডেলে প্যাকেজ করে।
  2. একটি নমুনা কোটলিন অ্যাপ যা ডিভাইসে প্রেডিকশন করার জন্য TFLite মডেল ব্যবহার করে।

৪. ফায়ারবেস দিয়ে অ্যাপটি চালান।

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

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

৫. আপনার অ্যাপে অ্যানালিটিক্স ইভেন্ট সংগ্রহ করুন

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

কিছু অ্যানালিটিক্স ইভেন্ট যা আমরা লগ করতে চাইতে পারি, তার মধ্যে রয়েছে:

  • ব্যবহারকারী কতক্ষণ ধরে গেমটি খেলে
  • ব্যবহারকারী কোন স্তরে পৌঁছায়
  • ব্যবহারকারী কতগুলি মুদ্রা ব্যয় করে
  • ব্যবহারকারী কোন আইটেমগুলো কেনেন

নমুনা ডেটা ডাউনলোড করুন (ঐচ্ছিক)

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

Firebase Analytics SDK ব্যবহার করে ডেটা সংগ্রহ করুন

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

ফায়ারবেস অ্যানালিটিক্স এসডিকে ইনস্টল করা হচ্ছে

আপনি "Get Started with Google Analytics" ডকুমেন্টেশন অনুসরণ করে আপনার অ্যাপে Firebase Analytics ব্যবহার শুরু করতে পারেন। এই কোডল্যাবের শুরুতে ক্লোন করা firebase-iap-optimization রিপোজিটরিটিতে ইতিমধ্যেই Firebase Analytics SDK অন্তর্ভুক্ত রয়েছে।

কাস্টম ইভেন্টগুলি লগ করুন

Firebase Analytics SDK সেট আপ করার পর, আমরা আমাদের মডেলকে প্রশিক্ষণের জন্য প্রয়োজনীয় ইভেন্টগুলো লগ করা শুরু করতে পারি।

সেটা করার আগে, অ্যানালিটিক্স ইভেন্টে একটি ইউজার আইডি সেট করা জরুরি, যাতে আমরা সেই ইউজারের অ্যানালিটিক্স ডেটাকে অ্যাপে থাকা তার বিদ্যমান ডেটার সাথে সংযুক্ত করতে পারি।

MainActivity.kt

firebaseAnalytics.setUserId("player1")

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

MainActivity.kt

predictButton?.setOnClickListener {
  predictionResult = iapOptimizer.predict()

  firebaseAnalytics.logEvent("offer_iap"){
    param("offer_type", predictionResult)
    param("offer_id", sessionId)
  }
}

acceptButton?.setOnClickListener {
  firebaseAnalytics.logEvent("offer_accepted") {
    param("offer_type", predictionResult)
    param("offer_id", sessionId)
  }
}

কাস্টম ইভেন্ট লগিং সম্পর্কে আরও তথ্যের জন্য, Firebase Analytics Log Events ডকুমেন্টেশন দেখুন।

৬. BigQuery-তে ডেটা প্রিপ্রসেস করুন

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

এটি করার জন্য, আমাদের প্রথমে অ্যানালিটিক্স ইভেন্টগুলোকে BigQuery-তে এক্সপোর্ট করতে হবে।

আপনার Firebase প্রজেক্ট এবং এর অ্যাপগুলোকে BigQuery-এর সাথে লিঙ্ক করতে:

  1. ফায়ারবেসে সাইন ইন করুন।
  2. ক্লিক করুন the Settings icon তারপর প্রজেক্ট সেটিংস নির্বাচন করুন।
  3. প্রজেক্ট সেটিংস পেজে, ইন্টিগ্রেশন ট্যাবে ক্লিক করুন।
  4. BigQuery কার্ডে থাকা লিঙ্কে ক্লিক করুন।

(ঐচ্ছিক) আপনার ফায়ারস্টোর কালেকশনগুলো বিগকোয়েরিতে এক্সপোর্ট করুন।

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

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

আপনার Firestore কালেকশনগুলো BigQuery-তে এক্সপোর্ট করার জন্য, আপনি Firestore BigQuery Export Extension ইনস্টল করতে পারেন। এরপর, আপনার পার্সোনালাইজেশন মডেলে এবং এই কোডল্যাবের বাকি অংশে ব্যবহারের জন্য, BigQuery-তে টেবিলগুলো জয়েন করে এই ডেটাগুলোকে Google Analytics-এর ডেটার সাথে একত্রিত করুন।

BigQuery-তে ডেটা প্রস্তুত করা

পরবর্তী কয়েকটি ধাপে, আমরা BigQuery ব্যবহার করে আমাদের কাঁচা অ্যানালিটিক্স ডেটাকে মডেল প্রশিক্ষণের জন্য ব্যবহারযোগ্য ডেটাতে রূপান্তর করব।

ব্যবহারকারী এবং গেমের অবস্থার উপর ভিত্তি করে কোন IAP অফারটি উপস্থাপন করতে হবে, তা আমাদের মডেলকে শেখানোর জন্য নিম্নলিখিত বিষয়গুলো সম্পর্কে ডেটা সংগঠিত করতে হবে:

  • ব্যবহারকারী
  • গেমের অবস্থা
  • উপস্থাপিত প্রস্তাব
  • উপস্থাপিত অফারটিতে ক্লিক করা হোক বা না হোক

আমাদের মডেলের প্রক্রিয়াকরণের জন্য এই সমস্ত ডেটাকে একটি টেবিলের একটিমাত্র সারিতে সাজাতে হবে। সৌভাগ্যবশত, BigQuery ঠিক এই কাজটি করতে আমাদের সাহায্য করার জন্যই তৈরি করা আছে।

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

প্রতিটি ইন-অ্যাপ পারচেজ অফারে ক্লিক করা হয়েছে কিনা তা দেখতে, আমাদের আগের ধাপে লগ করা offer_iap এবং offer_accepted ইভেন্টগুলোকে জয়েন করতে হবে।

all_offers_joined - BigQuery ভিউ

SELECT
  iap_offers.*,
  CASE
    WHEN accepted_offers.accepted IS NULL THEN FALSE ELSE TRUE
  END
  is_clicked,
FROM
  `iap-optimization.ml_sample.accepted_offers` AS accepted_offers
RIGHT JOIN
  `iap-optimization.ml_sample.iap_offers` AS iap_offers
ON
 accepted_offers.offer_id =iap_offers.offer_id;

all_offers_with_user_data - BigQuery ভিউ

SELECT
  offers.is_clicked,
  offers.presented_powerup,
  offers.last_run_end_reason,
  offers.event_timestamp,
  users.*
FROM
  `iap-optimization.ml_sample.all_offers_joined` AS offers
LEFT JOIN
  `iap-optimization.ml_sample.all_users` AS users
ON
  users.user_id = offers.user_id;

বিগকোয়েরি ডেটাসেট গুগল ক্লাউড স্টোরেজে রপ্তানি করুন

সবশেষে, আমরা bigquery ডেটাসেটটি GCS-এ এক্সপোর্ট করতে পারি, যাতে আমরা এটি আমাদের মডেল প্রশিক্ষণে ব্যবহার করতে পারি।

888daa7ba4db8e44.png14d22bf474fae455.png

৭. অপ্টিমাইজেশন মডেলটিকে প্রশিক্ষণ দিন

নমুনা ডেটা

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

সমস্যার সংজ্ঞা

মডেলের প্রশিক্ষণ শুরু করার আগে, চলুন আমাদের কনটেক্সচুয়াল ব্যান্ডিটস সমস্যাটি সংজ্ঞায়িত করতে কিছুটা সময় ব্যয় করি।

প্রসঙ্গগত দস্যুদের ব্যাখ্যা করা হলো

Flappy Sparky-এর প্রতিটি লেভেলের শুরুতে, ব্যবহারকারীকে একটি IAP অফার দেওয়া হয় যা তাকে একটি পাওয়ারআপ দেবে। আমরা প্রতিবার কেবল একটি IAP অপশনই দেখাতে পারি, এবং আমরা জানি না কোনগুলো থেকে সবচেয়ে ভালো কনভার্সন হবে। যেহেতু প্রতিটি ব্যবহারকারী এবং প্রতিটি সেশন আলাদা, আমরা কীভাবে সেই IAP অফারটি খুঁজে বের করব যা সর্বোচ্চ প্রত্যাশিত পুরস্কার দেয়?

এক্ষেত্রে, ব্যবহারকারী যদি IAP অফারটি গ্রহণ না করে, তাহলে পুরস্কার ০ ধরা যাক, এবং গ্রহণ করলে IAP-এর সমপরিমাণ পুরস্কার দেওয়া যাক। আপনার পুরস্কার সর্বোচ্চ করার জন্য, আমরা আমাদের পূর্ববর্তী ডেটা ব্যবহার করে এমন একটি মডেলকে প্রশিক্ষণ দিতে পারি যা একজন ব্যবহারকারীর প্রতিটি কাজের জন্য প্রত্যাশিত পুরস্কারের পূর্বাভাস দেবে এবং সর্বোচ্চ পুরস্কারযুক্ত কাজটি খুঁজে বের করবে।

e7d3264141498bff.jpeg

ভবিষ্যদ্বাণী করার জন্য আমরা নিম্নলিখিত বিষয়গুলো ব্যবহার করব:

  • অবস্থা: ব্যবহারকারী এবং তাদের বর্তমান সেশন সম্পর্কিত তথ্য
  • করণীয়: IAP অফারগুলো আমরা বেছে নিয়ে দেখাতে পারি।
  • পুরস্কার: আইএপি অফারের মূল্য

শোষণ বনাম অন্বেষণ

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

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

মডেলকে প্রশিক্ষণ দেওয়া

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

স্থানীয়ভাবে প্রশিক্ষণ

আপনার নিজের মডেলের প্রশিক্ষণ শুরু করার সবচেয়ে সহজ উপায় হলো এই কোডল্যাবের কোড স্যাম্পলে থাকা নোটবুকটির একটি অনুলিপি তৈরি করা।

এই কোডল্যাবের জন্য আপনার জিপিইউ (GPU) প্রয়োজন নেই, কিন্তু আপনার নিজের ডেটা বিশ্লেষণ করতে এবং মডেলকে প্রশিক্ষণ দিতে যদি আরও শক্তিশালী মেশিনের প্রয়োজন হয়, তবে প্রশিক্ষণের গতি বাড়ানোর জন্য আপনি একটি এআই প্ল্যাটফর্ম নোটবুক (AI Platform Notebook) ইনস্ট্যান্স নিতে পারেন।

প্রদত্ত ট্রেনিং স্ক্রিপ্টটিতে, আমরা একটি ইটারেটর তৈরি করেছি যা BigQuery থেকে এক্সপোর্ট করা CSV ফাইলগুলো থেকে ট্রেনিং ডেটা তৈরি করে। এরপর আমরা সেই ডেটা ব্যবহার করে Keras-এর সাহায্যে আমাদের মডেলের ট্রেনিং শুরু করেছি। মডেলটি কীভাবে ট্রেনিং করাতে হয় তার বিস্তারিত বিবরণ পাইথন নোটবুকের কমেন্টগুলোতে পাওয়া যাবে।

মডেলের কর্মক্ষমতা পরিমাপ করুন

মডেলটি প্রশিক্ষণের সময়, আমাদের মডেলটি আসলেই শিখছে কিনা তা দেখার জন্য আমরা এটিকে এমন একটি র‍্যান্ডম এজেন্টের সাথে তুলনা করব যেটি এলোমেলোভাবে IAP অফার নির্বাচন করে। এই লজিকটি ValidationCallback অধীনে থাকে .

প্রশিক্ষণের শেষে, আমরা আমাদের মডেলটি পুনরায় পরীক্ষা করার জন্য test.csv ফাইলের ডেটা ব্যবহার করি। মডেলটি এই ডেটা আগে কখনও দেখেনি, তাই আমরা নিশ্চিত হতে পারি যে ফলাফলটি ওভারফিটিং- এর কারণে হয়নি। এক্ষেত্রে, মডেলটি র‍্যান্ডম এজেন্টের চেয়ে ২৮% ভালো পারফর্ম করে।

TFLite মডেলটি রপ্তানি করুন

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

ট্রেন.আইপিএনবি

converter = tflite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

with tf.io.gfile.GFile('iap-optimizer.tflite', 'wb') as f:
  f.write(tflite_model)

এখান থেকে আপনি মডেলটি ডাউনলোড করে আপনার অ্যাপের সাথে যুক্ত করতে পারবেন।

ঐচ্ছিকভাবে, প্রোডাকশন অ্যাপের জন্য আমরা সুপারিশ করি যে আপনি মডেলটি Firebase ML-এ ডেপ্লয় করুন এবং Firebase-কে আপনার মডেলটি হোস্ট করার দায়িত্ব দিন। এর দুটি প্রধান কারণ রয়েছে:

  1. আমরা অ্যাপ ইনস্টলের আকার ছোট রাখতে পারি এবং শুধুমাত্র প্রয়োজন হলেই মডেলটি ডাউনলোড করতে পারি।
  2. মডেলটি নিয়মিত এবং সম্পূর্ণ অ্যাপের চেয়ে ভিন্ন একটি রিলিজ চক্রে আপডেট করা যেতে পারে।

Firebase ML-এ মডেলটি কীভাবে ডেপ্লয় করতে হয় তা শিখতে, আপনি “Add Firebase to your TFLite-powered Android App” কোডল্যাবটি অনুসরণ করতে পারেন। আপনার কাছে Firebase কনসোল অথবা Python API ব্যবহার করে ডেপ্লয় করার বিকল্প রয়েছে।

৮. ডিভাইসে পূর্বাভাস তৈরি করা

পরবর্তী ধাপ হলো ডিভাইসে মডেলটি ব্যবহার করে পূর্বাভাস দেওয়া। আপনি ডাউনলোড করা নমুনা কোডের app ফোল্ডারে একটি উদাহরণ অ্যাপ খুঁজে পাবেন, যেটি Firebase ML থেকে একটি মডেল ডাউনলোড করে এবং কিছু ক্লায়েন্ট-সাইড ডেটা দিয়ে ইনফারেন্স সম্পাদন করতে এটি ব্যবহার করে।

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

এরপরে, আমরা মডেলটিকে নিম্নরূপে একটি পরীক্ষামূলক ইনপুট দিই:

IapOptimzer.kt

  val testInput = mapOf(
    "coins_spent" to                       2048f,
    "distance_avg" to                      1234f,
    "device_os" to                         "ANDROID",
    "game_day" to                          10f,
    "geo_country" to                       "Canada",
    "last_run_end_reason" to               "laser"
  )

মডেলটি থেকে বোঝা যায় যে এই নির্দিষ্ট ব্যবহারকারীর জন্য sparky_armor হলো সেরা IAP পাওয়ারআপ।

a3381dbcdbdf811e.png

মডেলের নির্ভুলতা পরিমাপ করুন

আমাদের মডেলের নির্ভুলতা পরিমাপ করার জন্য, আমরা ফায়ারবেস অ্যানালিটিক্স ব্যবহার করে আমাদের মডেল দ্বারা পূর্বাভাসিত IAP অফারগুলো এবং সেগুলোতে ক্লিক করা হচ্ছে কিনা, তা সহজেই ট্র্যাক করতে পারি। মডেলের প্রকৃত পারফরম্যান্স পরিমাপ করার জন্য আপনি ফায়ারবেস A/B টেস্টিং-এর সাথে এটি ব্যবহার করতে পারেন। এটিকে আরও এক ধাপ এগিয়ে নিয়ে, আপনি মডেলের বিভিন্ন পুনরাবৃত্তির উপর A/B টেস্টও করতে পারেন। আপনি "Create Firebase Remote Config Experiments with A/B Testing" ডকুমেন্টেশনে ফায়ারবেসের সাথে A/B টেস্টিং সম্পর্কে আরও জানতে পারবেন।

৯. (ঐচ্ছিক): নতুন ডেটা দিয়ে নিয়মিত মডেল আপডেট করা

নতুন ডেটা আসার সাথে সাথে যদি আপনার মডেল আপডেট করার প্রয়োজন হয়, তবে আপনি একটি নির্দিষ্ট সময় পর পর আপনার মডেলকে পুনরায় প্রশিক্ষণ দেওয়ার জন্য একটি পাইপলাইন সেট আপ করতে পারেন। এটি করার জন্য, আপনাকে প্রথমে নিশ্চিত করতে হবে যে উপরে উল্লিখিত এপসিলন-গ্রিডি কৌশলটি ব্যবহার করে প্রশিক্ষণের জন্য আপনার কাছে নতুন ডেটা রয়েছে। (যেমন, ৭০% সময় মডেলের পূর্বাভাসের ফলাফল এবং ৩০% সময় এলোমেলো ফলাফল ব্যবহার করা)।

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

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

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

আপনার কোনো প্রশ্ন থাকলে, সেগুলো Stack Overflow-এর #firebase-machine-learning লিঙ্কে জানাতে পারেন।

আমরা যা আলোচনা করেছি

  • TensorFlow Lite
  • ফায়ারবেস এমএল
  • ফায়ারবেস অ্যানালিটিক্স
  • বিগকোয়েরি

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

  • আপনার অ্যাপের জন্য একটি অপটিমাইজার মডেলকে প্রশিক্ষণ দিন এবং স্থাপন করুন।

আরও জানুন