১. ভূমিকা
| কুবেফ্লো হলো কুবারনেটিসের জন্য একটি মেশিন লার্নিং টুলকিট। এই প্রকল্পের মূল উদ্দেশ্য হলো কুবারনেটিসে মেশিন লার্নিং (এমএল) ওয়ার্কফ্লো স্থাপনকে সহজ, বহনযোগ্য এবং সম্প্রসারণযোগ্য করে তোলা। এর লক্ষ্য হলো বিভিন্ন ধরনের অবকাঠামোতে এমএল-এর জন্য সেরা ওপেন-সোর্স সিস্টেমগুলো স্থাপনের একটি সহজ উপায় প্রদান করা। |
একটি কুবেফ্লো ডেপ্লয়মেন্ট দেখতে কেমন হয়?
একটি কুবেফ্লো ডেপ্লয়মেন্ট হলো:
- বহনযোগ্য - যেকোনো Kubernetes ক্লাস্টারে কাজ করে, তা Google Cloud Platform (GCP)-এ থাকুক, নিজস্ব প্রাঙ্গণে থাকুক, বা বিভিন্ন প্রোভাইডারের অধীনে থাকুক।
- স্কেলেবল - এটি পরিবর্তনশীল রিসোর্স ব্যবহার করতে পারে এবং এর সীমাবদ্ধতা কেবল কুবারনেটিস ক্লাস্টারের জন্য বরাদ্দকৃত রিসোর্সের সংখ্যার মধ্যেই সীমাবদ্ধ থাকে।
- কম্পোজেবল - সার্ভিস ওয়ার্কার দ্বারা উন্নত করা হয়েছে, যা অফলাইনে বা নিম্নমানের নেটওয়ার্কেও কাজ করতে পারে।
এটি শিথিলভাবে সংযুক্ত মাইক্রোসার্ভিসগুলোকে একটি একক ইউনিট হিসেবে সংগঠিত করার এবং সেগুলোকে বিভিন্ন স্থানে, যেমন ল্যাপটপ বা ক্লাউডে, স্থাপন করার একটি উপায়।
এই কোডল্যাবটি আপনাকে MiniKF ব্যবহার করে নিজস্ব Kubeflow ডিপ্লয়মেন্ট তৈরি করতে এবং একটি Jupyter Notebook-এর ভেতর থেকে Kubeflow Pipelines ওয়ার্কফ্লো চালাতে ধাপে ধাপে শেখাবে।
আপনি যা তৈরি করবেন
এই কোডল্যাবে, আপনি কোনো CLI কমান্ড বা SDK ব্যবহার না করে Kubeflow Pipelines দিয়ে একটি জটিল ডেটা সায়েন্স পাইপলাইন তৈরি করবেন। আপনার Kubernetes বা Docker সম্পর্কে কোনো জ্ঞানের প্রয়োজন নেই। কোর্সটি সম্পন্ন করার পর, আপনার ইনফ্রাস্ট্রাকচারে থাকবে:
- একটি মিনিকেএফ (মিনি কুবেফ্লো) ভিএম যা স্বয়ংক্রিয়ভাবে ইনস্টল করে:
- কুবারনেটিস (মিনিকিউব ব্যবহার করে)
- কুবেফ্লো
- Kale , সাধারণ Jupyter নোটবুককে Kubeflow Pipelines ওয়ার্কফ্লোতে রূপান্তর করার একটি টুল ( GitHub )
- ডেটা ভার্সনিং এবং পুনরুৎপাদনযোগ্যতার জন্য আরিক্টো রক
আপনি যা শিখবেন
- MiniKF দিয়ে Kubeflow কীভাবে ইনস্টল করবেন
- কোনো CLI কমান্ড বা SDK ব্যবহার না করে কীভাবে আপনার Jupyter নোটবুকগুলিকে Kubeflow পাইপলাইনে রূপান্তর করবেন
- নোটবুকের ভেতর থেকে একটি বোতামে ক্লিক করে কীভাবে কুবেফ্লো পাইপলাইন চালানো যায়
- নোটবুকে এবং প্রতিটি পাইপলাইন ধাপে কীভাবে স্বয়ংক্রিয়ভাবে আপনার ডেটার ভার্সন তৈরি করবেন
আপনার যা যা লাগবে
- একটি সক্রিয় GCP প্রজেক্ট যার জন্য আপনার মালিকের অনুমতি রয়েছে
এটি কুবেফ্লো-এর উপর ভিত্তি করে তৈরি একটি অ্যাডভান্সড কোডল্যাব। প্ল্যাটফর্মটি সম্পর্কে আরও বিস্তারিত পটভূমি ও পরিচিতির জন্য, “ Introduction to Kubeflow” ডকুমেন্টেশনটি দেখুন। অপ্রাসঙ্গিক ধারণা এবং কোড ব্লকগুলো সংক্ষেপে আলোচনা করা হয়েছে এবং আপনার কেবল কপি-পেস্ট করার জন্য সরবরাহ করা হয়েছে।
২. পরিবেশ প্রস্তুত করুন
আপনার GCP প্রজেক্ট আইডি এবং ক্লাস্টারের নাম সেট করুন
আপনার প্রজেক্ট আইডি খুঁজে পেতে, উপরের বাম দিকের হ্যামবার্গার মেনুতে থাকা GCP কনসোলের হোম প্যানেলে যান। যদি স্ক্রিনটি খালি থাকে, তাহলে একটি ড্যাশবোর্ড তৈরি করার জন্য আসা প্রম্পটে 'Yes'-এ ক্লিক করুন।

প্রকল্পটি আগে থেকে নির্বাচিত না থাকলে, 'একটি প্রকল্প নির্বাচন করুন' -এ ক্লিক করুন:

এবং আপনার প্রজেক্টটি নির্বাচন করুন। আপনার কেবল একটিই থাকা উচিত:

৩. মিনিকেএফ ইনস্টল করুন
একটি কম্পিউট ইনস্ট্যান্স তৈরি করুন
GCP মার্কেটপ্লেসে 'MiniKF' লিখে অনুসন্ধান করুন।
Arrikto-র MiniKF ভার্চুয়াল মেশিনটি নির্বাচন করুন।

Launch on Compute Engine বাটনটিতে ক্লিক করুন এবং আপনার প্রজেক্টটি নির্বাচন করুন।

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

MiniKF Compute ইনস্ট্যান্সটি বুট হওয়ার জন্য অপেক্ষা করুন।

মিনিকেএফ-এ লগ ইন করুন
যখন MiniKF VM চালু হবে, তখন SSH বোতামে ক্লিক করে সংযোগ করুন এবং লগইন করুন। minikf কমান্ডটি চালানোর জন্য স্ক্রিনে দেওয়া নির্দেশাবলী অনুসরণ করুন, যা Minikube, Kubeflow, এবং Rok-এর ডেপ্লয়মেন্ট শুরু করবে। এটি সম্পন্ন হতে কয়েক মিনিট সময় লাগবে।

Kubeflow-এ লগ ইন করুন
ইনস্টলেশন সম্পন্ন হলে এবং সমস্ত পড প্রস্তুত হয়ে গেলে, MiniKF ড্যাশবোর্ডে যান। MiniKF ইউজারনেম এবং পাসওয়ার্ড ব্যবহার করে Kubeflow-তে লগ ইন করুন।


ক্রোম ব্যবহারকারীরা এই স্ক্রিনটি দেখতে পাবেন:

ফায়ারফক্স ব্যবহারকারীরা এই স্ক্রিনটি দেখতে পাবেন:

সাফারি ব্যবহারকারীরা এই স্ক্রিনটি দেখতে পাবেন:

Rok-এ লগ ইন করুন
Kubeflow-তে লগ ইন করার পর, হ্যামবার্গার আইকনে ক্লিক করে বাম দিকের মেনুটি খুলুন। Snapshot Store-এ যান এবং MiniKF ইউজারনেম ও পাসওয়ার্ড ব্যবহার করে Rok-এ লগ ইন করুন।


অভিনন্দন! আপনি সফলভাবে GCP-তে MiniKF স্থাপন করেছেন! এখন আপনি নোটবুক তৈরি করতে, আপনার ML কোড লিখতে এবং কুবেফ্লো পাইপলাইন চালাতে পারবেন। ডেটা ভার্সনিং এবং পুনরুৎপাদনযোগ্যতার জন্য Rok ব্যবহার করুন।
৪. আপনার নোটবুকের ভেতর থেকে একটি পাইপলাইন চালান।
এই অংশে, আপনি টাইটানিক উদাহরণটি চালাবেন, যা একটি ক্যাগল প্রতিযোগিতা এবং এর মাধ্যমে ভবিষ্যদ্বাণী করা হয় যে টাইটানিক জাহাজডুবি থেকে কোন যাত্রীরা বেঁচে গিয়েছিলেন।
একটি নোটবুক সার্ভার তৈরি করুন
Kubeflow সেন্ট্রাল ড্যাশবোর্ডে থাকা নোটবুক সার্ভারস লিঙ্কে যান।

নতুন সার্ভারে ক্লিক করুন।

আপনার নোটবুক সার্ভারের জন্য একটি নাম নির্দিষ্ট করুন।

নিশ্চিত করুন যে আপনি এই ছবিটি নির্বাচন করেছেন:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
৫ জিবি আকারের একটি নতুন, খালি ডেটা ভলিউম যোগ করুন এবং এর নাম দিন ' data' ।

নোটবুক সার্ভার তৈরি করতে লঞ্চ-এ ক্লিক করুন।

যখন নোটবুক সার্ভারটি উপলব্ধ হবে, সেটিতে সংযোগ করতে 'কানেক্ট' বাটনে ক্লিক করুন।

ডেটা এবং নোটবুক ডাউনলোড করুন
জুপিটারল্যাব ল্যান্ডিং পেজ সহ একটি নতুন ট্যাব খুলে যাবে। জুপিটারল্যাবে একটি নতুন টার্মিনাল তৈরি করুন।

টার্মিনাল উইন্ডোতে, ডেটা ফোল্ডারে যেতে এবং ল্যাবের বাকি অংশের জন্য প্রয়োজনীয় নোটবুক ও ডেটা ডাউনলোড করতে এই কমান্ডগুলো চালান।
cd data/ git clone -b kubecon-workshop https://github.com/kubeflow-kale/examples
এই রিপোজিটরিটিতে ডেটা ও টীকাযুক্ত নোটবুকসহ নির্বাচিত কিছু উদাহরণ রয়েছে। সাইডবারে থাকা data/examples/titanic-ml-dataset/ ফোল্ডারে যান এবং titanic_dataset_ml.ipynb নোটবুকটি খুলুন।

টাইটানিক চ্যালেঞ্জের এমএল কোডটি অন্বেষণ করুন
নোটবুকটি ধাপে ধাপে চালান। লক্ষ্য করুন যে একটি লাইব্রেরি অনুপস্থিত থাকার কারণে কোডটি ব্যর্থ হচ্ছে।

টার্মিনালে ফিরে যান এবং অনুপস্থিত লাইব্রেরিটি ইনস্টল করুন।
pip3 install --user seaborn

রিফ্রেশ আইকনে ক্লিক করে নোটবুক কার্নেলটি পুনরায় চালু করুন।

সঠিক লাইব্রেরিগুলো ইনস্টল করে সেলটি আবার চালান এবং দেখুন এটি সফল হয়।
আপনার নোটবুককে কুবেফ্লো পাইপলাইনে রূপান্তর করুন
বাম প্যানেলে থাকা Kubeflow আইকনে ক্লিক করে Kale সক্রিয় করুন।

প্রতিটি সেলের নির্ভরশীলতা অন্বেষণ করুন। দেখুন কীভাবে একাধিক সেল একটি একক পাইপলাইন ধাপের অংশ হতে পারে এবং কীভাবে একটি পাইপলাইন ধাপ পূর্ববর্তী ধাপগুলোর উপর নির্ভরশীল হতে পারে।

কম্পাইল এবং রান বোতামে ক্লিক করুন।

স্ন্যাপশটটির অগ্রগতি পর্যবেক্ষণ করুন।

পাইপলাইন রানের অগ্রগতি পর্যবেক্ষণ করুন।

Kubeflow Pipelines UI-তে যেতে এবং রানটি দেখতে লিঙ্কটিতে ক্লিক করুন।

এটি সম্পূর্ণ হওয়া পর্যন্ত অপেক্ষা করুন।


অভিনন্দন! আপনি এইমাত্র আপনার নোটবুক থেকে একটি এন্ড-টু-এন্ড কুবেফ্লো পাইপলাইন চালালেন!
৫. ভলিউম স্ন্যাপশটের মাধ্যমে পুনরুৎপাদনযোগ্যতা
ফলাফলগুলো পরীক্ষা করুন
পাইপলাইনের শেষ ধাপের আগের ধাপ 'Results'- এর লগগুলো দেখুন। লক্ষ্য করুন যে, সমস্ত প্রেডিক্টর ১০০% স্কোর দেখাচ্ছে। একজন অভিজ্ঞ ডেটা সায়েন্টিস্টের কাছে এটি সঙ্গে সঙ্গেই সন্দেহজনক মনে হবে। এটি একটি স্পষ্ট ইঙ্গিত যে আমাদের মডেলগুলো জেনারেলাইজ করতে পারছে না, বরং ট্রেনিং ডেটা সেটের উপর ওভারফিটিং হচ্ছে। সম্ভবত মডেলগুলো যে ডেটা ব্যবহার করছে, তাতে কোনো সমস্যার কারণে এমনটা হচ্ছে।

পূর্ববর্তী অবস্থা পুনরুৎপাদন করুন
সৌভাগ্যবশত, Rok ডেটা ভার্সনিং এবং সম্পূর্ণ পরিবেশটিকে ঠিক সেই অবস্থায় ফিরিয়ে আনার দায়িত্ব নেয়, যখন আপনি 'কম্পাইল অ্যান্ড রান' বোতামে ক্লিক করেছিলেন। এইভাবে, আপনার ডেটা এবং কোডের জন্য আপনার কাছে একটি টাইম মেশিন থাকে। তাই চলুন, মডেলগুলোর মধ্যে একটিকে প্রশিক্ষণ দেওয়ার আগের পাইপলাইনের অবস্থায় ফিরে যাই এবং দেখি কী ঘটছে। randomforest ধাপটি দেখুন, তারপর Artifacts- এ ক্লিক করুন।

মার্কডাউনে দেওয়া ধাপগুলো অনুসরণ করুন, অর্থাৎ সংশ্লিষ্ট লিঙ্কে ক্লিক করে Rok UI-তে স্ন্যাপশটটি দেখুন।

Rok URL-টি কপি করুন।

নোটবুক সার্ভার লিঙ্কে যান।

নতুন সার্ভারে ক্লিক করুন।

পূর্বে কপি করা Rok URL-টি পেস্ট করুন এবং অটোফিল বোতামে ক্লিক করুন।

আপনার নোটবুকের জন্য একটি নাম নির্দিষ্ট করুন।

নিশ্চিত করুন যে আপনি এই ছবিটি নির্বাচন করেছেন:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
নোটবুক সার্ভার তৈরি করতে লঞ্চ-এ ক্লিক করুন।

যখন নোটবুক সার্ভারটি উপলব্ধ হবে, সেটিতে সংযোগ করতে 'কানেক্ট' বাটনে ক্লিক করুন।

লক্ষ্য করুন যে নোটবুকটি আপনার তৈরি করা পাইপলাইন স্টেপের ঠিক সেই সেলে খোলে।

নেপথ্যে, কেল সমস্ত লাইব্রেরি ইম্পোর্ট করে এবং পূর্ববর্তী ধাপগুলো থেকে ভেরিয়েবলগুলো লোড করে নোটবুকটির অবস্থা পুনরায় চালু করেছে।
পূর্ববর্তী অবস্থা ডিবাগ করুন
এই সেলে একটি প্রিন্ট কমান্ড যোগ করুন:
print(acc_random_forest)
র্যান্ডম ফরেস্টকে পুনরায় প্রশিক্ষণ দিতে এবং স্কোরটি প্রিন্ট করতে Shift + Return চেপে সক্রিয় সেলটি চালান। স্কোরটি হলো ১০০।

এখন ট্রেনিং ডেটাতে কোনো অস্বাভাবিকতা আছে কিনা তা দেখার পালা। এই সমস্যাটি অনুসন্ধান ও সমাধান করতে, আগের সেলটি সিলেক্ট করে প্লাস আইকনে (+) ক্লিক করার মাধ্যমে র্যান্ডম ফরেস্ট মার্কডাউনের উপরে একটি সেল যোগ করুন।

ট্রেনিং সেটটি প্রিন্ট করার জন্য নিম্নলিখিত টেক্সটটি যোগ করুন এবং সেলটি এক্সিকিউট করুন।
train_df

ওহ! ট্রেনিং লেবেলযুক্ত কলামটি ("Survived") ভুলবশত ইনপুট ফিচার হিসেবে অন্তর্ভুক্ত হয়ে গেছে! মডেলটি "Survived" ফিচারটির উপর মনোযোগ দিতে এবং বাকিগুলোকে উপেক্ষা করতে শিখেছে, যা ইনপুটকে দূষিত করছে। এই কলামটি মডেলের লক্ষ্যের সাথে হুবহু মিলে যায় এবং প্রেডিকশনের সময় এটি উপস্থিত থাকে না, তাই মডেলকে অন্যান্য ফিচারগুলো থেকে শেখার সুযোগ দেওয়ার জন্য এটিকে ট্রেনিং ডেটাসেট থেকে সরিয়ে ফেলা প্রয়োজন।
একটি বাগফিক্স যোগ করুন
এই কলামটি সরাতে, সেলটি সম্পাদনা করে এই কমান্ডটি যোগ করুন:
train_df.drop('Survived', axis=1, inplace=True)
train_df

Kale সক্রিয় করুন এবং নিশ্চিত করুন যে, যে সেলটি ' Survived' লেবেলগুলি সরিয়ে দেয়, সেটি 'featureengineering' পাইপলাইন ধাপের অংশ (এর আউটলাইনের রঙ একই হওয়া উচিত)।
কম্পাইল এবং রান বোতামে ক্লিক করে পাইপলাইনটি পুনরায় চালান।
Kubeflow Pipelines UI-তে যেতে এবং রানটি দেখতে লিঙ্কটিতে ক্লিক করুন।
ফলাফল ধাপটি সম্পূর্ণ হওয়া পর্যন্ত অপেক্ষা করুন এবং চূড়ান্ত ফলাফল দেখতে লগগুলো দেখুন। এখন আপনার কাছে বাস্তবসম্মত পূর্বাভাস স্কোর রয়েছে!

৬. পরিষ্কার করুন
MiniKF VM ধ্বংস করুন
GCP কনসোলে Deployment Manager- এ যান এবং minikf-1 ডিপ্লয়মেন্টটি ডিলিট করুন।
৭. অভিনন্দন
অভিনন্দন, আপনি Kubeflow (MiniKF), Kale, এবং Rok ব্যবহার করে সফলভাবে একটি এন্ড-টু-এন্ড ডেটা সায়েন্স ওয়ার্কফ্লো সম্পন্ন করেছেন!
এরপর কী?
Kubeflow কমিউনিটিতে যোগদান করুন:
- github.com/kubeflow
- কুবেফ্লো স্ল্যাক
- kubeflow-discuss@googlegroups.com
- মঙ্গলবারে কমিউনিটি কল
