1. ওভারভিউ
রিয়েলটাইম অন-ডিভাইস ইন-অ্যাপ ক্রয় অপ্টিমাইজেশান কোডল্যাবে স্বাগতম। এই কোডল্যাবে আপনি শিখবেন কিভাবে TensorFlow Lite এবং Firebase ব্যবহার করতে হয় এবং আপনার অ্যাপে একটি কাস্টম পার্সোনালাইজেশন মডেল প্রশিক্ষিত করতে হয়।
এই টিউটোরিয়ালটি দেখায় যে কীভাবে ব্যক্তিগতকরণের জন্য একটি মেশিন লার্নিং মডেল তৈরি করতে হয়, বিশেষ করে যেটি বর্তমান ব্যবহারকারীর অবস্থার প্রেক্ষিতে সর্বোত্তম ইন-অ্যাপ ক্রয় (IAP) অফারটি ভবিষ্যদ্বাণী করে। এটি একটি প্রাসঙ্গিক দস্যু সমস্যার উদাহরণ, একটি গুরুত্বপূর্ণ এবং ব্যাপকভাবে প্রযোজ্য ধরনের মেশিন লার্নিং সমস্যা যা আপনি এই কোডল্যাবে আরও জানতে পারবেন
আপনি কি শিখবেন
- ফায়ারবেস বিশ্লেষণের মাধ্যমে বিশ্লেষণ ডেটা সংগ্রহ করুন
- BigQuery ব্যবহার করে বিশ্লেষণ ডেটা প্রিপ্রসেস করুন
- অ্যাপ-মধ্যস্থ কেনাকাটার (IAPs) অন-ডিভাইস অপ্টিমাইজেশনের জন্য একটি সাধারণ ML মডেলকে প্রশিক্ষণ দিন
- TFLite মডেলগুলি Firebase ML-এ স্থাপন করুন এবং আপনার অ্যাপ থেকে সেগুলি অ্যাক্সেস করুন৷
- Firebase A/B পরীক্ষার মাধ্যমে বিভিন্ন মডেলের সাথে পরিমাপ করুন এবং পরীক্ষা করুন
- একটি পুনরাবৃত্ত ক্যাডেন্সে সর্বশেষ ডেটা ব্যবহার করে নতুন মডেলগুলিকে প্রশিক্ষণ দিন এবং স্থাপন করুন৷
আপনি কি প্রয়োজন হবে
- অ্যান্ড্রয়েড স্টুডিও সংস্করণ 3.4+
- অ্যান্ড্রয়েড 2.3+ এবং Google Play পরিষেবা 9.8 বা তার পরে, বা Google Play পরিষেবাগুলির 9.8 বা তার পরে একটি এমুলেটর সহ একটি শারীরিক পরীক্ষা ডিভাইস
- একটি শারীরিক পরীক্ষা ডিভাইস ব্যবহার করলে, একটি সংযোগ তারের
- নবাগত এমএল জ্ঞান
আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?
আপনি অ্যান্ড্রয়েড অ্যাপ তৈরি করার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?
2. সমস্যা বিবৃতি
ধরা যাক আপনি একজন গেম ডেভেলপার যিনি প্রতিটি স্তরের শেষে ব্যক্তিগতকৃত ইন-অ্যাপ ক্রয় (IAP) পরামর্শগুলি দেখাতে চান৷ আপনি প্রতিবার শুধুমাত্র সীমিত সংখ্যক IAP বিকল্প দেখাতে পারেন, এবং আপনি জানেন না কোনটিতে সবচেয়ে ভালো রূপান্তর হবে। প্রতিটি ব্যবহারকারীকে দেওয়া এবং প্রতিটি সেশন আলাদা, আমরা কীভাবে IAP অফার খুঁজে বের করতে পারি যা সর্বোচ্চ প্রত্যাশিত পুরস্কার দেয়?
3. নমুনা কোড পান
কমান্ড লাইন থেকে GitHub সংগ্রহস্থল ক্লোন করুন।
git clone https://github.com/googlecodelabs/firebase-iap-optimization.git
এই রেপোতে রয়েছে:
- একটি জুপিটার নোটবুক (.ipynb) যা ব্যক্তিগতকরণ মডেলকে প্রশিক্ষণ দেয় এবং এটি একটি TFLite মডেলে প্যাকেজ করে
- একটি নমুনা Kotlin অ্যাপ যা ডিভাইসে ভবিষ্যদ্বাণী করতে TFLite মডেল ব্যবহার করে
4. Firebase দিয়ে অ্যাপটি চালান
এই কোডল্যাবে, আমরা আমাদের কাল্পনিক গেম অ্যাপ - Flappy Sparky- এর IAPs অপ্টিমাইজ করার জন্য কাজ করব। গেমটি একটি সাইড-স্ক্রোলার যেখানে প্লেয়ার একটি স্পার্কিকে নিয়ন্ত্রণ করে, তাদের আঘাত না করে দেয়ালের কলামের মধ্যে উড়ে যাওয়ার চেষ্টা করে। স্তরের শুরুতে, ব্যবহারকারীকে একটি IAP অফার দেওয়া হয় যা তাদের একটি পাওয়ার আপ দেবে। আমরা শুধুমাত্র এই কোডল্যাবে অ্যাপটির IAP অপ্টিমাইজেশন অংশ বাস্তবায়ন করব।
আপনি এখানে যা শিখবেন তা আপনার নিজের অ্যাপে প্রয়োগ করতে সক্ষম হবেন যা একটি Firebase প্রকল্পের সাথে সংযুক্ত। বিকল্পভাবে, আপনি এই কোডল্যাবের জন্য একটি নতুন ফায়ারবেস প্রকল্প তৈরি করতে পারেন। Firebase শুরু করার জন্য আপনার যদি সাহায্যের প্রয়োজন হয়, অনুগ্রহ করে এই বিষয়ে আমাদের টিউটোরিয়াল দেখুন ( Android এবং iOS )।
5. আপনার অ্যাপে বিশ্লেষণ ইভেন্ট সংগ্রহ করুন
অ্যানালিটিক্স ইভেন্টগুলি ব্যবহারকারীর আচরণের অন্তর্দৃষ্টি প্রদান করে এবং এমএল মডেলকে প্রশিক্ষণ দিতে ব্যবহৃত হয়। উদাহরণস্বরূপ, মডেলটি শিখতে পারে যে ব্যবহারকারীরা যারা বেশি সময় ধরে খেলে তাদের অতিরিক্ত জীবন পেতে IAP করার সম্ভাবনা বেশি। এই তথ্য শেখার জন্য ML মডেলের ইনপুট হিসাবে বিশ্লেষণ ইভেন্টের প্রয়োজন।
কিছু বিশ্লেষণ ইভেন্ট যা আমরা লগ করতে চাই তার মধ্যে রয়েছে:
- ব্যবহারকারী কতক্ষণ গেমটি খেলেন
- ব্যবহারকারী কোন পর্যায়ে পৌঁছায়
- ব্যবহারকারী কত কয়েন খরচ করে
- ব্যবহারকারীরা কোন আইটেম কেনেন
নমুনা ডেটা ডাউনলোড করুন (ঐচ্ছিক)
নিম্নলিখিত ধাপে, আমরা আমাদের মডেলে ব্যবহার করার জন্য বিশ্লেষণ ইভেন্টগুলি লগ করতে Firebase অ্যানালিটিক্স ব্যবহার করব৷ আপনার যদি ইতিমধ্যেই অ্যানালিটিক্স ডেটা থাকে যা আপনি ব্যবহার করতে চান, তাহলে এই কোডল্যাবের "অপ্টিমাইজেশান মডেলকে প্রশিক্ষণ দিন" বিভাগে যান এবং আপনি আমাদের নমুনা ডেটা সহ অনুসরণ করতে পারেন৷
Firebase Analytics SDK দিয়ে ডেটা সংগ্রহ করুন
এই অ্যানালিটিক্স ইভেন্টগুলি সংগ্রহ করতে আমরা Firebase অ্যানালিটিক্স ব্যবহার করব৷ Firebase Analytics SDK স্বয়ংক্রিয়ভাবে বেশ কয়েকটি ইভেন্ট এবং ব্যবহারকারীর বৈশিষ্ট্য ক্যাপচার করে। এটি আপনাকে আপনার অ্যাপের অনন্য ইভেন্টগুলি পরিমাপ করতে আপনার নিজস্ব কাস্টম ইভেন্টগুলিকে সংজ্ঞায়িত করার অনুমতি দেয়৷
Firebase Analytics SDK ইনস্টল করা হচ্ছে
আপনি 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 লগ ইভেন্ট ডকুমেন্টেশন দেখুন।
6. BigQuery-এ ডেটা প্রিপ্রসেস করুন
শেষ ধাপে, আমরা কোন IAP অফারটি ব্যবহারকারীর কাছে উপস্থাপন করা হয়েছে এবং কোন IAP অফারে ব্যবহারকারী দ্বারা ক্লিক করা হয়েছে সে সম্পর্কে ইভেন্টগুলি সংগ্রহ করেছি৷ এই ধাপে, আমরা ব্যবহারকারীর ডেটার সাথে এই ইভেন্ট ডেটা একত্রিত করব যাতে আমাদের মডেল একটি সম্পূর্ণ ছবি থেকে শিখতে পারে।
এটি করার জন্য, আমাদের বিগকুয়েরিতে অ্যানালিটিক্স ইভেন্ট এক্সপোর্ট করে শুরু করতে হবে।
আপনার Firebase প্রকল্প BigQuery-এর সাথে লিঙ্ক করুন
আপনার ফায়ারবেস প্রকল্প এবং এর অ্যাপগুলিকে BigQuery-এর সাথে লিঙ্ক করতে:
- Firebase এ সাইন ইন করুন।
- ক্লিক করুন , তারপর প্রকল্প সেটিংস নির্বাচন করুন।
- প্রকল্প সেটিংস পৃষ্ঠায়, ইন্টিগ্রেশন ট্যাবে ক্লিক করুন।
- BigQuery কার্ডে, লিঙ্কে ক্লিক করুন।
(ঐচ্ছিক) আপনার Firestore সংগ্রহগুলি BigQuery-এ এক্সপোর্ট করুন
এই ধাপে, আপনার কাছে Firestore থেকে BigQuery-এ অতিরিক্ত ব্যবহারকারীর ডেটা রপ্তানি করার বিকল্প রয়েছে যাতে আপনি মডেলটিকে প্রশিক্ষণ দিতে সাহায্য করতে পারেন। আপনি যদি এই ধাপটি আপাতত এড়িয়ে যেতে চান, তাহলে এই কোডল্যাবের "BigQuery-এ ডেটা প্রস্তুত করা" বিভাগে যান এবং আপনি শেষ ধাপে লগ করা Firebase Analytics ইভেন্টগুলি অনুসরণ করতে পারেন।
Firestore হতে পারে যেখানে আপনি ব্যবহারকারীদের সাইনআপের তারিখ, অ্যাপ-মধ্যস্থ কেনাকাটা, গেমের স্তর, ব্যালেন্সে কয়েন, বা মডেলের প্রশিক্ষণে উপযোগী হতে পারে এমন অন্য কোনো বৈশিষ্ট্য সংরক্ষণ করেছেন।
আপনার Firestore সংগ্রহগুলি BigQuery-এ এক্সপোর্ট করতে, আপনি Firestore BigQuery এক্সপোর্ট এক্সটেনশন ইনস্টল করতে পারেন। তারপর, আপনার ব্যক্তিগতকরণ মডেলে এবং এই কোডল্যাবের বাকি অংশ জুড়ে ব্যবহার করার জন্য Google Analytics-এর ডেটার সাথে এই ডেটা একত্রিত করতে BigQuery-এ টেবিলে যোগ দিন ।
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;
Google ক্লাউড স্টোরেজে bigQuery ডেটাসেট রপ্তানি করুন
সবশেষে, আমরা GCS-এ bigquery ডেটাসেট রপ্তানি করতে পারি যাতে আমরা আমাদের মডেল প্রশিক্ষণে এটি ব্যবহার করতে পারি।
7. অপ্টিমাইজেশান মডেলকে প্রশিক্ষণ দিন
নমুনা তথ্য
এই কোডল্যাবের বাকি অংশের সাথে অনুসরণ করার জন্য হয় পূর্ববর্তী ধাপের আপনার ডেটা, "BigQuery-এ ডেটা প্রিপ্রসেস করুন" অথবা এখানে দেওয়া ডাউনলোডযোগ্য নমুনা ডেটা ব্যবহার করুন।
সমস্যার সংজ্ঞা
আমরা মডেলের প্রশিক্ষণ শুরু করার আগে, আসুন আমাদের প্রাসঙ্গিক দস্যুদের সমস্যা সংজ্ঞায়িত করার জন্য কিছু সময় ব্যয় করি।
প্রাসঙ্গিক দস্যু ব্যাখ্যা
Flappy Sparky-এ প্রতিটি স্তরের শুরুতে, ব্যবহারকারীকে একটি IAP অফার দেওয়া হয় যা তাদের একটি পাওয়ার আপ দেবে। আমরা প্রতিবার শুধুমাত্র একটি IAP বিকল্প দেখাতে পারি, এবং আমরা জানি না কোনটিতে সবচেয়ে ভালো রূপান্তর হবে। প্রতিটি ব্যবহারকারীকে দেওয়া এবং প্রতিটি সেশন আলাদা, আমরা কীভাবে IAP অফার খুঁজে বের করতে পারি যা সর্বোচ্চ প্রত্যাশিত পুরস্কার দেয়?
এই ক্ষেত্রে, ব্যবহারকারী IAP অফার গ্রহণ না করলে পুরস্কার 0 করা যাক এবং IAP মান যদি তারা গ্রহণ না করে। আপনার পুরষ্কার সর্বাধিক করার চেষ্টা করার জন্য, আমরা আমাদের ঐতিহাসিক ডেটা ব্যবহার করে এমন একটি মডেলকে প্রশিক্ষণ দিতে পারি যা ব্যবহারকারীকে দেওয়া প্রতিটি কর্মের জন্য প্রত্যাশিত পুরষ্কারের ভবিষ্যদ্বাণী করে এবং সর্বোচ্চ পুরষ্কার সহ ক্রিয়াটি খুঁজে পেতে পারে।
আমরা ভবিষ্যদ্বাণীতে যা ব্যবহার করব তা নিম্নরূপ:
- রাজ্য: ব্যবহারকারী এবং তাদের বর্তমান সেশন সম্পর্কে তথ্য
- অ্যাকশন: IAP অফার আমরা দেখাতে বেছে নিতে পারি
- পুরস্কার: IAP অফারের মান
শোষণ বনাম অনুসন্ধান
সমস্ত মাল্টি-আর্মড দস্যুদের সমস্যার জন্য, অ্যালগরিদমকে অন্বেষণ (কোন ক্রিয়াটি সর্বোত্তম ফলাফল দেয় তা শিখতে আরও ডেটা পাওয়া) এবং শোষণ (সর্বোচ্চ পুরষ্কার পাওয়ার জন্য সর্বোত্তম ফলাফল ব্যবহার করে) এর মধ্যে ভারসাম্য বজায় রাখতে হবে।
সমস্যাটির আমাদের সংস্করণে, আমরা শুধুমাত্র মডেলটিকে পর্যায়ক্রমে ক্লাউডে প্রশিক্ষণ দেওয়ার জন্য এটিকে সহজ করব এবং ব্যবহারকারীর ডিভাইসে মডেলটি ব্যবহার করার সময় শুধুমাত্র ভবিষ্যদ্বাণী করব (ব্যবহারকারীর ডিভাইসে প্রশিক্ষণের বিপরীতে)। আমরা মডেল ব্যবহার করার পরে আমাদের কাছে পর্যাপ্ত প্রশিক্ষণের ডেটা আছে তা নিশ্চিত করতে, আমাদের অ্যাপ ব্যবহারকারীদের মাঝে মাঝে (যেমন 30%) এলোমেলো ফলাফল দেখাতে হবে। অনুসন্ধান এবং শোষণের ভারসাম্য রক্ষার এই কৌশলটিকে এপসিলন-লোভী বলা হয়।
মডেল প্রশিক্ষণ
আপনি শুরু করতে কোডল্যাবের সাথে প্রদত্ত ট্রেনিং স্ক্রিপ্ট ( training.ipynb
) ব্যবহার করতে পারেন। আমাদের লক্ষ্য হল এমন একটি মডেলকে প্রশিক্ষণ দেওয়া যা একটি রাজ্যে দেওয়া প্রতিটি কর্মের জন্য প্রত্যাশিত পুরষ্কারের ভবিষ্যদ্বাণী করে, তারপরে আমরা সেই ক্রিয়াটি খুঁজে পাই যা আমাদের সর্বোচ্চ প্রত্যাশিত পুরষ্কার দেয়।
স্থানীয়ভাবে প্রশিক্ষণ
আপনার নিজের মডেলের প্রশিক্ষণ দিয়ে শুরু করার সবচেয়ে সহজ উপায় হল এই কোডল্যাবের জন্য কোড নমুনায় নোটবুকের একটি অনুলিপি তৈরি করা।
এই কোডল্যাবের জন্য আপনার কোন GPU-এর প্রয়োজন নেই, তবে আপনার নিজের ডেটা অন্বেষণ করতে এবং নিজের মডেলকে প্রশিক্ষণ দেওয়ার জন্য যদি আপনার আরও শক্তিশালী মেশিনের প্রয়োজন হয়, তাহলে আপনি আপনার প্রশিক্ষণের গতি বাড়ানোর জন্য একটি AI প্ল্যাটফর্ম নোটবুক উদাহরণ পেতে পারেন।
প্রদত্ত প্রশিক্ষণ স্ক্রিপ্টে, আমরা একটি পুনরাবৃত্তিকারী তৈরি করেছি যা BigQuery থেকে রপ্তানি করা CSV ফাইলগুলি থেকে প্রশিক্ষণের ডেটা তৈরি করে। তারপরে আমরা কেরাসের সাথে আমাদের মডেল প্রশিক্ষণ শুরু করতে ডেটা ব্যবহার করেছি। মডেলটিকে কীভাবে প্রশিক্ষণ দেওয়া যায় তার বিশদ বিবরণ পাইথন নোটবুকের মন্তব্যে পাওয়া যাবে।
মডেল কর্মক্ষমতা পরিমাপ
মডেলটিকে প্রশিক্ষণ দেওয়ার সময়, আমরা এটিকে একটি র্যান্ডম এজেন্টের সাথে তুলনা করব যেটি এলোমেলোভাবে IAP অফারগুলি নির্বাচন করে তা দেখতে আমাদের মডেল আসলে শিখছে কিনা। এই যুক্তি ValidationCallback
অধীনে বাস করে .
প্রশিক্ষণ শেষে, আমরা আমাদের মডেল আবার পরীক্ষা করার জন্য test.csv
এ ডেটা ব্যবহার করি। মডেলটি আগে কখনও এই ডেটা দেখেনি, তাই আমরা নিশ্চিত হতে পারি যে ফলাফলটি অতিরিক্ত ফিটিং এর কারণে নয়। এই ক্ষেত্রে, মডেলটি র্যান্ডম এজেন্টের চেয়ে 28% ভাল পারফর্ম করে।
TFLite মডেল রপ্তানি করুন
এখন আমাদের কাছে একটি প্রশিক্ষিত মডেল রয়েছে যা ব্যবহার করার জন্য প্রস্তুত, এটি বর্তমানে একটি টেনসরফ্লো ফর্ম্যাটে রয়েছে। আমাদের মডেলটিকে TFLite ফর্ম্যাট হিসাবে রপ্তানি করতে হবে যাতে এটি মোবাইল ডিভাইসে চালানো যায়।
train.ipynb
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 আপনার মডেল হোস্ট করুন৷ এটি দুটি প্রধান কারণের জন্য দরকারী:
- আমরা অ্যাপের ইন্সটল সাইজ ছোট রাখতে পারি এবং প্রয়োজন হলে শুধুমাত্র মডেলটি ডাউনলোড করতে পারি
- মডেলটি নিয়মিত আপডেট করা যেতে পারে এবং সম্পূর্ণ অ্যাপের থেকে আলাদা রিলিজ চক্রের সাথে
কিভাবে Firebase ML-এ মডেলটি স্থাপন করতে হয় তা শিখতে, আপনি আপনার TFLite-চালিত Android অ্যাপ কোডল্যাবে Firebase যোগ করুন অনুসরণ করতে পারেন। আপনার কাছে ফায়ারবেস কনসোল বা পাইথন API ব্যবহার করে স্থাপন করার বিকল্প রয়েছে।
8. ডিভাইসে ভবিষ্যদ্বাণী করা
পরবর্তী ধাপ হল ডিভাইসে মডেল ব্যবহার করে ভবিষ্যদ্বাণী করা। আপনি একটি উদাহরণ অ্যাপ্লিকেশন খুঁজে পেতে পারেন যা আপনার ডাউনলোড করা নমুনা কোডের 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 পাওয়ার আপ।
মডেল নির্ভুলতা পরিমাপ
আমাদের মডেলের নির্ভুলতা পরিমাপ করতে, আমরা কেবল আমাদের মডেল দ্বারা পূর্বাভাসিত IAP অফারগুলির উপর নজর রাখতে পারি এবং সেগুলি Firebase Analytics ব্যবহার করে ক্লিক করা হয়েছে কিনা। আপনি মডেলের প্রকৃত কর্মক্ষমতা পরিমাপ করতে Firebase A/B পরীক্ষার সাথে এটি ব্যবহার করতে পারেন। এটিকে আরও এক ধাপ এগিয়ে নিয়ে, আপনি মডেলের বিভিন্ন পুনরাবৃত্তিতে A/B পরীক্ষাও করতে পারেন। আপনি A/B টেস্টিং ডকুমেন্টেশন সহ Firebase রিমোট কনফিগ পরীক্ষা তৈরি করুন -এ Firebase-এর সাথে A/B টেস্টিং সম্পর্কে আরও জানতে পারবেন।
9. (ঐচ্ছিক): নতুন ডেটা সহ নিয়মিত মডেল আপডেট করা
নতুন ডেটা আসার সাথে সাথে আপনার মডেল আপডেট করার প্রয়োজন হলে, আপনি পুনরাবৃত্ত ভিত্তিতে আপনার মডেলকে পুনরায় প্রশিক্ষণের জন্য একটি পাইপলাইন সেট আপ করতে পারেন। এটি করার জন্য, আপনাকে প্রথমে নিশ্চিত করতে হবে যে আমরা উপরে উল্লিখিত এপসিলন-লোভী কৌশলটি ব্যবহার করে প্রশিক্ষণের জন্য ব্যবহার করার জন্য আপনার কাছে নতুন ডেটা রয়েছে। (যেমন মডেল ভবিষ্যদ্বাণী ফলাফল 70% সময় এবং র্যান্ডম ফলাফল 30% সময় ব্যবহার করে)।
প্রশিক্ষণের জন্য একটি পাইপলাইন কনফিগার করা এবং নতুন ডেটা ব্যবহার করা এই কোডল্যাবের সুযোগের বাইরে, আপনি শুরু করতে Google Cloud AI প্ল্যাটফর্ম এবং TFX চেক করতে পারেন৷
10. অভিনন্দন!
এই কোডল্যাবে, আপনি শিখেছেন কিভাবে ফায়ারবেস ব্যবহার করে অ্যাপ-মধ্যস্থ কেনাকাটা অপ্টিমাইজ করার জন্য একটি অন-ডিভাইস TFLite মডেলকে প্রশিক্ষণ ও স্থাপন করতে হয়। TFLite এবং Firebase সম্পর্কে আরও জানতে, অন্যান্য TFLite নমুনা এবং Firebase শুরু করার নির্দেশিকাগুলি দেখুন।
আপনার কোনো প্রশ্ন থাকলে, আপনি সেগুলিকে স্ট্যাক ওভারফ্লো #firebase-machine-learning- এ রেখে যেতে পারেন।
আমরা কভার করেছি কি
- টেনসরফ্লো লাইট
- ফায়ারবেস এমএল
- ফায়ারবেস বিশ্লেষণ
- BigQuery
পরবর্তী পদক্ষেপ
- আপনার অ্যাপের জন্য একটি অপ্টিমাইজার মডেলকে প্রশিক্ষণ দিন এবং স্থাপন করুন।