1. ভূমিকা
Kubeflow হল Kubernetes- এর জন্য একটি মেশিন লার্নিং টুলকিট। প্রকল্পটি Kubernetes-এ সহজ, বহনযোগ্য এবং স্কেলযোগ্য মেশিন লার্নিং (ML) কর্মপ্রবাহের স্থাপনার জন্য নিবেদিত। লক্ষ্য হল বিভিন্ন পরিকাঠামোতে ML-এর জন্য সর্বোত্তম-প্রজাতির ওপেন-সোর্স সিস্টেম স্থাপন করার একটি সহজ উপায় প্রদান করা। |
একটি Kubeflow স্থাপনা দেখতে কেমন?
একটি Kubeflow স্থাপনা হল:
- পোর্টেবল - যেকোন কুবারনেটস ক্লাস্টারে কাজ করে, তা Google ক্লাউড প্ল্যাটফর্মে (GCP), প্রাঙ্গনে বা প্রদানকারী জুড়ে থাকে।
- পরিমাপযোগ্য - অস্থির সম্পদ ব্যবহার করতে পারে এবং শুধুমাত্র কুবারনেটস ক্লাস্টারে বরাদ্দকৃত সম্পদের সংখ্যা দ্বারা সীমাবদ্ধ।
- কম্পোজেবল - এমএল ফ্রেমওয়ার্ক এবং লাইব্রেরির একটি কিউরেটেড সেট থেকে বেছে নিয়ে আপনাকে সম্পূর্ণ এমএল ওয়ার্কফ্লোতে স্বাধীন পদক্ষেপগুলি কনফিগার করতে সক্ষম করে৷
Kubeflow আপনাকে একটি একক ইউনিট হিসাবে ঢিলেঢালাভাবে সংযুক্ত মাইক্রোসার্ভিসগুলিকে সংগঠিত করার ক্ষমতা দেয় এবং সেগুলিকে ল্যাপটপে, প্রাঙ্গনে বা ক্লাউডে সহ বিভিন্ন স্থানে স্থাপন করার ক্ষমতা দেয়৷
এই কোডল্যাব আপনাকে MiniKF ব্যবহার করে আপনার নিজস্ব Kubeflow স্থাপনা তৈরি করে, তারপর একটি মডেলকে প্রশিক্ষণ ও পরিবেশন করার জন্য হাইপারপ্যারামিটার টিউনিং সহ একটি Kubeflow পাইপলাইন ওয়ার্কফ্লো চালায়। আপনি একটি জুপিটার নোটবুকের ভিতর থেকে এটি সব করেন।
আপনি কি নির্মাণ করবেন
এই কোডল্যাবে, আপনি কোনো CLI কমান্ড বা SDK ব্যবহার না করে কুবেফ্লো পাইপলাইনে হাইপারপ্যারামিটার টিউনিং সহ একটি জটিল ডেটা সায়েন্স পাইপলাইন তৈরি করবেন। আপনার কোন কুবারনেটস বা ডকার জ্ঞান থাকতে হবে না। সমাপ্তির পরে, আপনার পরিকাঠামোতে থাকবে:
- একটি MiniKF (Mini Kubeflow) VM যা স্বয়ংক্রিয়ভাবে ইনস্টল করে:
- কুবারনেটস (মিনিকুব ব্যবহার করে)
- কুবেফ্লো
- Kale , সাধারণ উদ্দেশ্য জুপিটার নোটবুককে কুবেফ্লো পাইপলাইন ওয়ার্কফ্লোতে রূপান্তর করার একটি টুল ( GitHub )
- ডেটা সংস্করণ এবং প্রজননযোগ্যতার জন্য Arrikto Rok
আপনি কি শিখবেন
- MiniKF এর সাথে কুবেফ্লো কীভাবে ইনস্টল করবেন
- কোন CLI কমান্ড বা SDK ব্যবহার না করে কীভাবে আপনার জুপিটার নোটবুকগুলিকে কুবেফ্লো পাইপলাইনে রূপান্তর করবেন
- একটি বোতামে ক্লিক করে একটি নোটবুকের ভিতর থেকে হাইপারপ্যারামিটার টিউনিং সহ কুবেফ্লো পাইপলাইনগুলি কীভাবে চালাবেন
- একটি নোটবুকে এবং প্রতিটি পাইপলাইন ধাপে কীভাবে স্বয়ংক্রিয়ভাবে আপনার ডেটা সংস্করণ করবেন
আপনি কি প্রয়োজন হবে
- একটি সক্রিয় GCP প্রকল্প যার জন্য আপনার মালিকের অনুমতি রয়েছে৷
এটি একটি উন্নত কোডল্যাব যা কুবেফ্লোকে কেন্দ্র করে। আরও পটভূমি এবং প্ল্যাটফর্মের একটি ভূমিকার জন্য, কুবেফ্লো ডকুমেন্টেশনের ভূমিকা দেখুন। অ-প্রাসঙ্গিক ধারণা এবং কোড ব্লকগুলিকে চকচকে করা হয়েছে এবং আপনাকে কেবল অনুলিপি এবং পেস্ট করার জন্য সরবরাহ করা হয়েছে।
2. পরিবেশ সেট আপ করুন
আপনার GCP প্রকল্প সেট আপ করুন
একটি GCP প্রকল্প তৈরি করতে বা আপনার বিদ্যমান GCP প্রকল্প কনফিগার করতে নীচের পদক্ষেপগুলি অনুসরণ করুন৷ আপনি যদি একটি বিদ্যমান GCP প্রকল্প ব্যবহার করার পরিকল্পনা করেন, তবে নিশ্চিত করুন যে প্রকল্পটি নীচে বর্ণিত ন্যূনতম প্রয়োজনীয়তাগুলি পূরণ করে৷ প্রথম ধাপ হল GCP কনসোলে রিসোর্স ম্যানেজার খোলা।
একটি নতুন প্রকল্প তৈরি করুন বা একটি বিদ্যমান প্রকল্প নির্বাচন করুন:
নিম্নলিখিত ন্যূনতম প্রয়োজনীয়তা পরীক্ষা করুন:
- প্রকল্পের মালিকের ভূমিকা আপনার আছে কিনা তা নিশ্চিত করুন।
- আপনার প্রকল্পের জন্য বিলিং সক্ষম করা হয়েছে তা নিশ্চিত করুন৷
- আপনি যদি GCP ফ্রি টিয়ার বা $300 ক্রেডিট সহ 12-মাসের ট্রায়াল পিরিয়ড ব্যবহার করেন তবে মনে রাখবেন যে আপনি MiniKF-এর ডিফল্ট GCP ইনস্টলেশন চালাতে পারবেন না, কারণ বিনামূল্যের স্তরটি পর্যাপ্ত সংস্থান সরবরাহ করে না। আপনাকে একটি প্রদত্ত অ্যাকাউন্টে আপগ্রেড করতে হবে।
একটি GCP প্রকল্প সেট আপ করার বিষয়ে আরও সাহায্যের জন্য, GCP ডকুমেন্টেশন দেখুন।
আপনার GCP প্রকল্প সেট আপ করার পরে, MiniKF ইনস্টল করার জন্য সরাসরি নির্দেশাবলীতে যান।
আপনার আগে থেকে বরাদ্দ করা GCP প্রকল্প খুলুন
আপনার আগে থেকে বরাদ্দ করা GCP প্রকল্প খুলতে, GCP কনসোলে যেতে নীচের বোতামে ক্লিক করুন এবং উপরের বামদিকে হ্যামবার্গার মেনুতে পাওয়া হোম প্যানেলটি খুলুন। যদি স্ক্রীনটি খালি থাকে তবে একটি ড্যাশবোর্ড তৈরি করতে প্রম্পটে হ্যাঁ ক্লিক করুন।
যদি প্রকল্পটি ইতিমধ্যে নির্বাচিত না হয় তবে একটি প্রকল্প নির্বাচন করুন ক্লিক করুন:
আপনার প্রকল্প নির্বাচন করুন. আপনার শুধুমাত্র একটি থাকা উচিত:
3. MiniKF ইনস্টল করুন
MiniKF সহ একটি কম্পিউট দৃষ্টান্ত তৈরি করুন
GCP মার্কেটপ্লেসে, "MiniKF" অনুসন্ধান করুন।
Arrikto দ্বারা MiniKF ভার্চুয়াল মেশিন নির্বাচন করুন:
লঞ্চ বোতামে ক্লিক করুন এবং আপনার প্রকল্প নির্বাচন করুন:
কনফিগার এবং স্থাপন উইন্ডোতে, আপনার MiniKF উদাহরণের জন্য একটি নাম এবং একটি অঞ্চল চয়ন করুন এবং ডিফল্ট বিকল্পগুলি ছেড়ে দিন। তারপর Deploy বাটনে ক্লিক করুন:
MiniKF Compute দৃষ্টান্ত বুট আপ করার জন্য অপেক্ষা করুন:
MiniKF এ লগ ইন করুন
MiniKF VM চালু হলে, SSH বোতামে ক্লিক করে সংযোগ করুন এবং লগ ইন করুন। minikf
কমান্ড চালানোর জন্য অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন, যা Minikube, Kubeflow এবং Rok-এর স্থাপনা শুরু করবে। এটি সম্পূর্ণ হতে কয়েক মিনিট সময় লাগবে।
কুবেফ্লোতে লগ ইন করুন
ইনস্টলেশন সম্পূর্ণ হলে এবং সমস্ত পড প্রস্তুত হলে, MiniKF ড্যাশবোর্ডে যান। MiniKF ব্যবহারকারীর নাম এবং পাসওয়ার্ড ব্যবহার করে Kubeflow এ লগ ইন করুন:
Chrome ব্যবহারকারীরা এই স্ক্রীনটি দেখতে পাবেন:
ফায়ারফক্স ব্যবহারকারীরা এই স্ক্রীনটি দেখতে পাবেন:
সাফারি ব্যবহারকারীরা এই স্ক্রীনটি দেখতে পাবেন:
Rok এ লগ ইন করুন
কুবেফ্লোতে লগ ইন করার পরে, হ্যামবার্গার আইকনে ক্লিক করে বাম মেনু খুলুন। Snapshots- এ ক্লিক করুন এবং MiniKF ব্যবহারকারীর নাম এবং পাসওয়ার্ড ব্যবহার করে Rok-এ লগ ইন করুন।
অভিনন্দন! আপনি সফলভাবে GCP-এ MiniKF স্থাপন করেছেন। আপনি এখন নোটবুক তৈরি করতে পারেন, আপনার এমএল কোড লিখতে পারেন, কুবেফ্লো পাইপলাইন চালাতে পারেন এবং ডেটা সংস্করণ এবং পুনরুত্পাদনযোগ্যতার জন্য Rok ব্যবহার করতে পারেন৷
4. আপনার নোটবুকের ভিতর থেকে একটি পাইপলাইন চালান
এই বিভাগে, আপনি কুকুরের জাত শনাক্তকরণ উদাহরণ চালাবেন, Udacity AI Nanodegree-এর একটি প্রকল্প। একটি কুকুরের একটি চিত্র দেওয়া, চূড়ান্ত মডেল কুকুরের শাবক একটি অনুমান প্রদান করবে।
আপনার Kubeflow ক্লাস্টারে একটি নোটবুক সার্ভার তৈরি করুন
কুবেফ্লো কেন্দ্রীয় ড্যাশবোর্ডে নোটবুক লিঙ্কে নেভিগেট করুন।
নতুন সার্ভারে ক্লিক করুন।
আপনার নোটবুক সার্ভারের জন্য একটি নাম উল্লেখ করুন।
নিশ্চিত করুন যে আপনি নিম্নলিখিত ডকার চিত্রটি নির্বাচন করেছেন (মনে রাখবেন যে চিত্র ট্যাগটি আলাদা হতে পারে):
gcr.io/arrikto/jupyter-kale:f20978e
5GB আকারের একটি নতুন, খালি ডেটা ভলিউম যুক্ত করুন এবং এটিকে ডেটা নাম দিন।
নোটবুক সার্ভার তৈরি করতে লঞ্চ এ ক্লিক করুন।
নোটবুক সার্ভার উপলব্ধ হলে, এটির সাথে সংযোগ করতে সংযোগে ক্লিক করুন।
ডেটা এবং নোটবুক ডাউনলোড করুন
JupyterLab ল্যান্ডিং পৃষ্ঠার সাথে একটি নতুন ট্যাব খুলবে। JupyterLab এ একটি নতুন টার্মিনাল তৈরি করুন।
টার্মিনাল উইন্ডোতে, ডেটা ফোল্ডারে নেভিগেট করতে এই কমান্ডগুলি চালান এবং নোটবুক এবং ডেটা ডাউনলোড করুন যা আপনি ল্যাবের অবশিষ্টাংশের জন্য ব্যবহার করবেন:
cd data/ git clone https://github.com/kubeflow-kale/kale
ক্লোন করা সংগ্রহস্থলে ডেটা এবং টীকাযুক্ত নোটবুক সহ একাধিক কিউরেটেড উদাহরণ রয়েছে।
সাইডবারে, data/kale/examples/dog-breed-classification/
ফোল্ডারে নেভিগেট করুন এবং dog-breed.ipynb
নোটবুক খুলুন।
কুকুরের জাত শনাক্তকরণ উদাহরণের এমএল কোডটি অন্বেষণ করুন
আপাতত, ডেটাসেটগুলি ডাউনলোড করে এমন সেলগুলি চালাবেন না , কারণ আপনি এইমাত্র ক্লোন করা রিপোজিটরিতে অন্তর্ভুক্ত কিছু ছোট ডেটাসেট ব্যবহার করতে চলেছেন৷ আপনি যদি বাড়ি থেকে নিজের গতিতে এই উদাহরণটি চালান, তাহলে নির্দ্বিধায় ডেটাসেটগুলি ডাউনলোড করুন৷
সমস্ত প্রয়োজনীয় লাইব্রেরি আমদানি করতে imports
সেল চালান৷ নোট করুন যে কোডটি ব্যর্থ হয়েছে কারণ একটি লাইব্রেরি অনুপস্থিত:
সাধারণত, নতুন ইনস্টল করা লাইব্রেরিগুলিকে অন্তর্ভুক্ত করার জন্য এই নোটবুকটিকে একটি Kubeflow পাইপলাইন হিসাবে চালানোর জন্য আপনাকে একটি নতুন ডকার ইমেজ তৈরি করতে হবে। সৌভাগ্যবশত, Rok এবং Kale নিশ্চিত করেন যে বিকাশের সময় আপনি যেকোন লাইব্রেরি ইনস্টল করবেন সেগুলি আপনার পাইপলাইনে তাদের পথ খুঁজে পাবে, Rok-এর স্ন্যাপশট করার প্রযুক্তি এবং Kale সেই স্ন্যাপশট করা ভলিউমগুলিকে পাইপলাইনের ধাপে মাউন্ট করার জন্য ধন্যবাদ।
অনুপস্থিত লাইব্রেরি ইনস্টল করতে পরবর্তী সেল চালান:
রিস্টার্ট আইকনে ক্লিক করে নোটবুক কার্নেল রিস্টার্ট করুন:
সঠিক লাইব্রেরি ইনস্টল করে আবার imports
সেল চালান এবং এটি সফল হতে দেখুন।
আপনার নোটবুককে কুবেফ্লো পাইপলাইনে একটি পাইপলাইনে রূপান্তর করুন
নোটবুকের বাম ফলকে কুবেফ্লো আইকনে ক্লিক করে ক্যাল সক্ষম করুন:
Kale ডিপ্লয়মেন্ট প্যানেলে স্লাইডারে ক্লিক করে Kale সক্ষম করুন :
নোটবুকের মধ্যে প্রতি-কোষ নির্ভরতা অন্বেষণ করুন। দেখুন কিভাবে একাধিক নোটবুক সেল একটি একক পাইপলাইন ধাপের অংশ হতে পারে, যেমন ঘরের বাম দিকের রঙের বার দ্বারা নির্দেশিত হয়েছে, এবং কিভাবে একটি পাইপলাইন ধাপ পূর্ববর্তী ধাপগুলির উপর নির্ভর করতে পারে, যেমনটি নির্দেশিত সেলগুলির উপরে লেবেলের উপর নির্ভর করে ৷ উদাহরণস্বরূপ, নীচের ছবিটি একই পাইপলাইনের ধাপের অংশ এমন একাধিক কক্ষ দেখায়। তাদের একই লাল রঙ রয়েছে এবং তারা পূর্ববর্তী পাইপলাইনের ধাপের উপর নির্ভর করে।
কম্পাইল এবং রান বোতামে ক্লিক করুন:
এখন Kale আপনার নোটবুকটি একটি কুবেফ্লো পাইপলাইন পাইপলাইনে রূপান্তর করে এটির দখল নেয় এবং তৈরি করে৷ এছাড়াও, যেহেতু ক্যাল বর্তমান নোটবুকের ডেটা ভলিউমের স্ন্যাপশট নিতে Rok-এর সাথে একীভূত হয়েছে, আপনি স্ন্যাপশটের অগ্রগতি দেখতে পারেন। Rok ডেটা ভার্সনিং এবং পুরো পরিবেশ পুনরুত্পাদনের যত্ন নেয় যখন আপনি কম্পাইল এবং রান বোতামে ক্লিক করেছিলেন। এইভাবে, আপনার ডেটা এবং কোডের জন্য আপনার কাছে একটি টাইম মেশিন রয়েছে এবং আপনার পাইপলাইন একই পরিবেশে চলবে যেখানে আপনি আপনার কোড তৈরি করেছেন, নতুন ডকার ইমেজ তৈরি করার প্রয়োজন ছাড়াই।
পাইপলাইনটি কম্পাইল করে কুবেফ্লো পাইপলাইনে আপলোড করা হয়েছে। এখন Kubeflow Pipelines UI এ যেতে এবং রান দেখতে লিঙ্কটিতে ক্লিক করুন।
Kubeflow Pipelines UI একটি নতুন ট্যাবে খোলে। রান শেষ হওয়ার জন্য অপেক্ষা করুন।
অভিনন্দন! আপনি আপনার নোটবুক থেকে শুরু করে কুবেফ্লো পাইপলাইনে এন্ড-টু-এন্ড পাইপলাইন চালিয়েছেন!
5. হাইপারপ্যারামিটার টিউনিং সহ শিক্ষা স্থানান্তর করুন
ফলাফল পরীক্ষা করুন
সিএনএন-ফ্রম-স্ক্র্যাচ ধাপের লগগুলি দেখুন। (Kubeflow Pipelines UI-এর গ্রাফের ধাপে ক্লিক করুন, তারপর লগ ট্যাবে ক্লিক করুন।) এটি সেই ধাপ যেখানে আপনি স্ক্র্যাচ থেকে একটি কনভোলিউশনাল নিউরাল নেটওয়ার্ক (CNN) প্রশিক্ষণ দিয়েছেন। লক্ষ্য করুন যে প্রশিক্ষিত মডেলটির সঠিকতা খুবই কম এবং তার উপরে, এই ধাপটি সম্পূর্ণ হতে অনেক সময় লেগেছে।
cnn-vgg16 ধাপের লগগুলি দেখুন। এই ধাপে, আপনি প্রাক-প্রশিক্ষিত VGG-16 মডেলে ট্রান্সফার লার্নিং ব্যবহার করেছেন—ভিজ্যুয়াল জিওমেট্রি গ্রুপ (ভিজিজি) দ্বারা প্রশিক্ষিত একটি নিউরাল নেটওয়ার্ক। নির্ভুলতা আগের মডেলের তুলনায় অনেক বেশি, তবে আমরা এখনও আরও ভাল করতে পারি।
এখন, cnn-resnet50 ধাপের লগগুলি দেখুন। এই ধাপে, আপনি প্রাক-প্রশিক্ষিত ResNet-50 মডেলে ট্রান্সফার লার্নিং ব্যবহার করেছেন। নির্ভুলতা অনেক বেশি। তাই এই মডেলটি আপনি এই কোডল্যাবের বাকি অংশের জন্য ব্যবহার করবেন।
হাইপারপ্যারামিটার টিউনিং
আপনার Kubeflow UI-তে নোটবুক সার্ভারে ফিরে যান, এবং dog-breed-katib.ipynb
(পথ data/kale/examples/dog-breed-classification/
) নামের নোটবুকটি খুলুন। এই নোটবুকে, আপনি কাতিব ব্যবহার করে ResNet-50 মডেলে কিছু হাইপারপ্যারামিটার টিউনিং পরীক্ষা চালাতে যাচ্ছেন। লক্ষ্য করুন যে প্যারামিটার ঘোষণা করার জন্য নোটবুকের শুরুতে আপনার একটি ঘর আছে:
নোটবুকের বাম ফলকে, হাইপারপ্যারামিটার টিউনিং চালানোর জন্য কাতিবের সাথে HP টিউনিং সক্ষম করুন:
তারপর কাতিব কনফিগার করতে সেট আপ কাতিব জব এ ক্লিক করুন:
প্রতিটি প্যারামিটারের জন্য অনুসন্ধান স্থান সংজ্ঞায়িত করুন এবং একটি লক্ষ্য নির্ধারণ করুন:
কম্পাইল এবং রান কাতিব জব বোতামে ক্লিক করুন:
কাতিব পরীক্ষার অগ্রগতি দেখুন:
কাতিব পরীক্ষাটি দেখতে ভিউতে ক্লিক করুন:
Kubeflow Pipelines (KFP) এ রান দেখতে সম্পন্ন এ ক্লিক করুন:
কাতিব পরীক্ষা পৃষ্ঠায় আপনি নতুন পরীক্ষাগুলি দেখতে পাবেন:
এবং KFP UI এ আপনি নতুন রান দেখতে পাবেন:
এইমাত্র যা ঘটেছে তা খুলে দেখি। পূর্বে, কালে একটি নোটবুক থেকে চালানো একটি পাইপলাইন তৈরি করেছিল এবং এখন এটি একাধিক পাইপলাইন রান তৈরি করছে, যেখানে প্রতিটিকে আলাদা আলাদা যুক্তির সমন্বয় দেওয়া হয়।
সাধারণ উদ্দেশ্য হাইপারপ্যারামিটার টিউনিং কাজগুলি চালানোর জন্য কাতিব হল Kubeflow এর উপাদান। কাতিব আসলে যে কাজগুলো চলছে সে সম্পর্কে কিছুই জানে না (কাতিব জার্গনে ট্রায়াল বলা হয়)। Kale যা কিছু চিন্তা করে তা হল অনুসন্ধানের স্থান, অপ্টিমাইজেশান অ্যালগরিদম এবং লক্ষ্য। কাতিব ট্রায়াল হিসাবে সাধারণ জবস (অর্থাৎ পডস) চালানো সমর্থন করে, কিন্তু ক্যালে একটি শিম প্রয়োগ করে যাতে ট্রায়ালগুলি আসলে কুবেফ্লো পাইপলাইনে পাইপলাইন চালায় এবং তারপর পাইপলাইন রান থেকে মেট্রিক্স সংগ্রহ করে।
কাতিব পরীক্ষা যেহেতু ট্রায়াল তৈরি করছে, আপনি কাতিব UI-তে আরও ট্রায়াল দেখতে পাবেন:
এবং KFP UI-তে আরও রান:
কাতিব পরীক্ষা শেষ হলে, আপনি কাতিব UI-তে সমস্ত ট্রায়াল দেখতে পারেন:
এবং KFP UI-তে সমস্ত রান:
আপনি যদি নোটবুকে ফিরে যান, আপনি ক্যালে প্যানেলের ভিতরে কাতিব পরীক্ষার ঠিক পাশে একটি তথ্য বোতাম দেখতে পাবেন:
এটিতে ক্লিক করুন এবং আপনি সেরা ফলাফল এবং এটি উত্পাদিত পরামিতিগুলি দেখতে পাবেন:
6. পরিষ্কার করুন
MiniKF VM ধ্বংস করুন
GCP কনসোলে ডিপ্লোয়মেন্ট ম্যানেজার -এ নেভিগেট করুন এবং minikf-on-gcp
ডিপ্লয়মেন্ট মুছে দিন।
7. অভিনন্দন
অভিনন্দন, আপনি Kubeflow (MiniKF), Kale, এবং Rok ব্যবহার করে সফলভাবে একটি এন্ড-টু-এন্ড ডেটা সায়েন্স ওয়ার্কফ্লো পরিচালনা করেছেন!
এরপর কি?
কুবেফ্লো কমিউনিটিতে যোগ দিন:
- github.com/kubeflow
- কুবেফ্লো স্ল্যাক
- kubeflow-discuss@googlegroups.com
- সাপ্তাহিক সম্প্রদায় কল, স্ল্যাক এবং অন্যান্য সম্প্রদায়ের বিবরণ