১. ভূমিকা
এই হ্যান্ডস-অন কোডল্যাব আপনাকে NVIDIA NIM™ মাইক্রোসার্ভিসের সাহায্যে Google Kubernetes Engine (GKE)-এ কন্টেনারাইজড AI মডেল ডিপ্লয় ও ম্যানেজ করার ব্যাপারে গাইড করবে।
এই টিউটোরিয়ালটি সেইসব ডেভেলপার ও ডেটা বিজ্ঞানীদের জন্য তৈরি করা হয়েছে যারা:
- AI ইনফারেন্স ডিপ্লয়মেন্ট সহজ করা: GKE-তে প্রোডাকশনে AI মডেল আরও দ্রুত ও সহজে ডিপ্লয় করার জন্য কীভাবে আগে থেকে তৈরি NIM ব্যবহার করতে হয় তা জানুন।
- NVIDIA GPU-তে পারফর্ম্যান্স অপ্টিমাইজ করা: আপনার GKE ক্লাস্টারের মধ্যে GPU-তে অপ্টিমাইজ করা ইনফারেন্সের জন্য NVIDIA TensorRT ব্যবহার করে এমন NIM ডিপ্লয় করার ব্যাপারে ব্যবহারিক অভিজ্ঞতা পান।
- AI ইনফারেন্স ওয়ার্কলোড স্কেল করা: অটোস্কেলিং ও কম্পিউট রিসোর্স ম্যানেজ করার জন্য Kubernetes ব্যবহার করে কীভাবে আপনার NIM ডিপ্লয়মেন্টকে চাহিদা অনুযায়ী স্কেল করবেন তা জানুন।
২. আপনি কী শিখবেন
এই টিউটোরিয়ালের শেষে, আপনি এগুলি সম্পর্কে অভিজ্ঞতা লাভ করবেন:
- GKE-তে NIM ডিপ্লয় করা: আপনার GKE ক্লাস্টারে বিভিন্ন ইনফারেন্স টাস্কের জন্য আগে থেকে তৈরি NVIDIA NIM ডিপ্লয় করুন।
- NIM ডিপ্লয়মেন্ট ম্যানেজ করা: আপনার ডিপ্লয় করা NIM ম্যানেজ, মনিটর ও স্কেল করতে kubectl কমান্ড ব্যবহার করুন।
- ইনফারেন্স ওয়ার্কলোড স্কেলিং: ট্রাফিকের চাহিদার উপর ভিত্তি করে আপনার NIM ডিপ্লয়মেন্ট অটোস্কেল করার জন্য Kubernetes ফিচার ব্যবহার করুন।
৩. উপাদানগুলি সম্পর্কে জানুন
Google Kubernetes Engine (GKE)-এ GPU
GPU আপনাকে মেশিন লার্নিং ও ডেটা প্রসেসিংয়ের মতো নোডে চলা নির্দিষ্ট ওয়ার্কলোড দ্রুত করতে দেয়। GKE, নোড কনফিগারেশনের জন্য বিভিন্ন ধরনের মেশিন টাইপ বিকল্প প্রদান করে, যার মধ্যে NVIDIA H100, L4 এবং A100 GPU সহ মেশিন টাইপ অন্তর্ভুক্ত।
NVIDIA NIM
NVIDIA NIM হল সহজে ব্যবহারযোগ্য ইনফারেন্স মাইক্রোসার্ভিসের একটি সেট যা যেকোনও ক্লাউড বা ডেটা সেন্টারে ফাউন্ডেশন মডেলের ডিপ্লয়মেন্ট দ্রুততর করতে এবং আপনার ডেটা সুরক্ষিত রাখতে সাহায্য করে।
NVIDIA AI Enterprise
NVIDIA AI Enterprise হল একটি এন্ড-টু-এন্ড, ক্লাউড-নেটিভ সফ্টওয়্যার প্ল্যাটফর্ম যা ডেটা সায়েন্স পাইপলাইনকে দ্রুততর করে এবং প্রোডাকশন-গ্রেড কো-পাইলট ও অন্যান্য জেনারেটিভ AI অ্যাপ্লিকেশনের ডেভেলপমেন্ট ও ডিপ্লয়মেন্টকে স্ট্রিমলাইন করে। GCP Marketplace-এর মাধ্যমে উপলভ্য।
৪. পূর্বশর্ত
- প্রোজেক্ট: বিলিং চালু করা আছে এমন Google Cloud প্রোজেক্ট।
- অনুমতি: GKE ক্লাস্টার ও অন্যান্য সম্পর্কিত রিসোর্স তৈরি করার জন্য পর্যাপ্ত অনুমতি।
- Helm: Helm হল Kubernetes-এর জন্য একটি প্যাকেজ ম্যানেজার।
- NVIDIA GPU অপারেটর: GPU প্রোভিশন করার জন্য প্রয়োজনীয় সব NVIDIA সফ্টওয়্যার কম্পোনেন্টের ম্যানেজমেন্ট অটোমেট করে এমন একটি Kubernetes অ্যাড-অন।
- NVIDIA API কী: এই লিঙ্কে ক্লিক করুন এবং কীভাবে অ্যাকাউন্ট তৈরি করতে ও API কী জেনারেট করতে হয় সেই সংক্রান্ত নির্দেশাবলী অনুসরণ করুন। NIM কন্টেনার ডাউনলোড করার জন্য API কী প্রয়োজন হবে।
- NVIDIA GPU: নিচে উল্লেখ করা GPU-গুলির মধ্যে একটি কাজ করা উচিত (মনে রাখবেন, আপনার কাছে পর্যাপ্ত GPU না থাকলে, কোটা বাড়ানোর অনুরোধ করতে এইসব ধাপ অনুসরণ করতে পারেন)
- ঐচ্ছিক - GCloud SDK:** আপনি যদি GCP পোর্টালের Cloud Shell ব্যবহার না করেন, তাহলে নিশ্চিত করুন যে আপনার Google Cloud SDK ইনস্টল ও কনফিগার করা আছে।
- ঐচ্ছিক - kubectl:** আপনি যদি GCP পোর্টালের Cloud Shell ব্যবহার না করেন, তাহলে নিশ্চিত করুন যে আপনার kubectl কমান্ড-লাইন টুল ইনস্টল ও কনফিগার করা আছে।
৫. GPU সহ GKE ক্লাস্টার তৈরি করা
- Cloud Shell বা আপনার টার্মিনাল খুলুন।
- নিম্নলিখিত প্যারামিটার নির্দিষ্ট করুন:
export PROJECT_ID=<YOUR PROJECT ID> export REGION=<YOUR REGION> export ZONE=<YOUR ZONE> export CLUSTER_NAME=nim-demo export NODE_POOL_MACHINE_TYPE=g2-standard-16 export CLUSTER_MACHINE_TYPE=e2-standard-4 export GPU_TYPE=nvidia-l4 export GPU_COUNT=1
মনে রাখবেন, আপনি কী ধরনের Compute Instance ও GPU ব্যবহার করছেন তার উপর নির্ভর করে আপনাকে NODE_POOL_MACHINE_TYPE, CLUSTER_MACHINE_TYPE ও GPU_TYPE-এর ভ্যালু পরিবর্তন করতে হতে পারে।
- GKE ক্লাস্টার তৈরি করুন:
gcloud container clusters create ${CLUSTER_NAME} \ --project=${PROJECT_ID} \ --location=${ZONE} \ --release-channel=rapid \ --machine-type=${CLUSTER_MACHINE_TYPE} \ --num-nodes=1 - GPU নোড পুল তৈরি করুন:
gcloud container node-pools create gpupool \ --accelerator type=${GPU_TYPE},count=${GPU_COUNT},gpu-driver-version=latest \ --project=${PROJECT_ID} \ --location=${ZONE} \ --cluster=${CLUSTER_NAME} \ --machine-type=${NODE_POOL_MACHINE_TYPE} \ --num-nodes=1
৬. NVIDIA NGC API Key কনফিগার করা
NGC API কী আপনাকে NVIDIA NGC থেকে কাস্টম ছবি পুল করার অনুমতি দেয়। আপনার কী নির্দিষ্ট করতে:
export NGC_CLI_API_KEY="<YOUR NGC API KEY>"
এটি হল সেই কী যা পূর্বশর্তের অংশ হিসেবে তৈরি করা হয়েছে।
৭. NVIDIA NIM ডিপ্লয় ও পরীক্ষা করা
- NIM LLM Helm চার্ট ফেচ করুন:
helm fetch https://helm.ngc.nvidia.com/nim/charts/nim-llm-1.3.0.tgz --username='$oauthtoken' --password=$NGC_CLI_API_KEY - NIM নেমস্পেস তৈরি করুন:
kubectl create namespace nim - গোপনীয় তথ্য কনফিগার করা:
kubectl create secret docker-registry registry-secret --docker-server=nvcr.io --docker-username='$oauthtoken' --docker-password=$NGC_CLI_API_KEY -n nim kubectl create secret generic ngc-api --from-literal=NGC_API_KEY=$NGC_CLI_API_KEY -n nim - NIM কনফিগারেশন সেট-আপ করা:
cat <<EOF > nim_custom_value.yaml image: repository: "nvcr.io/nim/meta/llama3-8b-instruct" # container location tag: 1.0.0 # NIM version you want to deploy model: ngcAPISecret: ngc-api # name of a secret in the cluster that includes a key named NGC_CLI_API_KEY and is an NGC API key persistence: enabled: true imagePullSecrets: - name: registry-secret # name of a secret used to pull nvcr.io images, see https://kubernetes.io/docs/tasks/ configure-pod-container/pull-image-private-registry/ EOF - NIM ডিপ্লয়মেন্ট লঞ্চ করা হচ্ছে:
NIM পড চলছে কিনা যাচাই করুন:helm install my-nim nim-llm-1.1.2.tgz -f nim_custom_value.yaml --namespace nimkubectl get pods -n nim - NIM ডিপ্লয়মেন্ট পরীক্ষা করা:
আমাদের NIM পরিষেবা সফলভাবে ডিপ্লয় করা হয়েছে কিনা তা যাচাই করার পরে, NIM পরিষেবা থেকে আমরা কী ধরনের মতামত পাব তা দেখতে আমরা ইনফারেন্স অনুরোধ করতে পারি। এটি করার জন্য, আমরা পোর্ট ৮০০০-এ আমাদের লোকালহোস্ট থেকে NIM অ্যাক্সেস করতে সক্ষম হওয়ার জন্য পরিষেবার পোর্ট ফরওয়ার্ডিং চালু করি: এরপরে, আমরা ক্লাউড শেলে আরেকটি টার্মিনাল বা ট্যাব খুলতে পারি এবং নিম্নলিখিত অনুরোধটি করে দেখতে পারি:kubectl port-forward service/my-nim-nim-llm 8000:8000 -n nim আপনি NIM পরিষেবা থেকে চ্যাট সম্পূর্ণ করার সুবিধা পেলে, তার মানে পরিষেবাটি প্রত্যাশিতভাবেই কাজ করছে!curl -X 'POST' \ 'http://localhost:8000/v1/chat/completions' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "messages": [ { "content": "You are a polite and respectful chatbot helping people plan a vacation.", "role": "system" }, { "content": "What should I do for a 4 day vacation in Spain?", "role": "user" } ], "model": "meta/llama3-8b-instruct", "max_tokens": 128, "top_p": 1, "n": 1, "stream": false, "stop": "\n", "frequency_penalty": 0.0 }'
৮. মুছুন
GKE ক্লাস্টার মুছে দিন:
gcloud container clusters delete $CLUSTER_NAME --zone=$ZONE
৯. এর পরে কী করতে হবে
আরও তথ্যের জন্য নিম্নলিখিত নিবন্ধগুলি দেখুন: