1. ভূমিকা
এই হ্যান্ডস-অন কোডল্যাব আপনাকে 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 বৈশিষ্ট্যগুলি ব্যবহার করুন।
৩. উপাদানগুলো শিখুন
গুগল কুবারনেটস ইঞ্জিন (GKE) এর GPU গুলি
GPU গুলি আপনাকে আপনার নোডগুলিতে চলমান নির্দিষ্ট কাজের চাপকে ত্বরান্বিত করতে দেয়, যেমন মেশিন লার্নিং এবং ডেটা প্রসেসিং। GKE নোড কনফিগারেশনের জন্য বিভিন্ন ধরণের মেশিন ধরণের বিকল্প সরবরাহ করে, যার মধ্যে NVIDIA H100, L4, এবং A100 GPU সহ মেশিনের ধরণের অন্তর্ভুক্ত রয়েছে।
এনভিডিয়া নিম
NVIDIA NIM হল সহজেই ব্যবহারযোগ্য ইনফারেন্স মাইক্রোসার্ভিসের একটি সেট যা যেকোনো ক্লাউড বা ডেটা সেন্টারে ফাউন্ডেশন মডেল স্থাপনের গতি বাড়ায় এবং আপনার ডেটা সুরক্ষিত রাখতে সাহায্য করে।
এনভিআইডিএ এআই এন্টারপ্রাইজ
NVIDIA AI এন্টারপ্রাইজ হল একটি এন্ড-টু-এন্ড, ক্লাউড-নেটিভ সফটওয়্যার প্ল্যাটফর্ম যা ডেটা সায়েন্স পাইপলাইনগুলিকে ত্বরান্বিত করে এবং উৎপাদন-গ্রেড কো-পাইলট এবং অন্যান্য জেনারেটিভ AI অ্যাপ্লিকেশনগুলির উন্নয়ন এবং স্থাপনাকে সহজতর করে। GCP মার্কেটপ্লেসের মাধ্যমে উপলব্ধ।
৪. পূর্বশর্ত
- প্রকল্প: বিলিং সক্ষম করা একটি গুগল ক্লাউড প্রকল্প।
- অনুমতি: GKE ক্লাস্টার এবং অন্যান্য সম্পর্কিত সংস্থান তৈরি করার জন্য পর্যাপ্ত অনুমতি।
- হেলম : হেলম হল কুবারনেটসের একটি প্যাকেজ ম্যানেজার।
- NVIDIA GPU অপারেটর : একটি kubernetes অ্যাড-অন যা GPU সরবরাহের জন্য প্রয়োজনীয় সমস্ত NVIDIA সফ্টওয়্যার উপাদানগুলির ব্যবস্থাপনা স্বয়ংক্রিয় করে।
- NVIDIA API কী: এই লিঙ্কে ক্লিক করুন, এবং কীভাবে একটি অ্যাকাউন্ট তৈরি করবেন এবং একটি API কী তৈরি করবেন তার নির্দেশাবলী অনুসরণ করুন। NIM কন্টেইনারটি ডাউনলোড করার জন্য একটি API কী প্রয়োজন হবে।
- NVIDIA GPU গুলি: নীচের GPU গুলির মধ্যে একটি কাজ করা উচিত (দয়া করে মনে রাখবেন, যদি আপনার পর্যাপ্ত GPU গুলি না থাকে তবে কোটা বৃদ্ধির অনুরোধ করতে আপনি এই পদক্ষেপগুলি অনুসরণ করতে পারেন)
- ঐচ্ছিক - GCloud SDK :** যদি আপনি GCP পোর্টালে ক্লাউড শেল ব্যবহার না করেন, তাহলে অনুগ্রহ করে নিশ্চিত করুন যে আপনার Google ক্লাউড SDK ইনস্টল এবং কনফিগার করা আছে।
- ঐচ্ছিক - kubectl :** যদি আপনি GCP পোর্টালে ক্লাউড শেল ব্যবহার না করেন, তাহলে দয়া করে নিশ্চিত করুন যে আপনার kubectl কমান্ড-লাইন টুলটি ইনস্টল এবং কনফিগার করা আছে।
৫. GPU গুলি দিয়ে একটি GKE ক্লাস্টার তৈরি করুন
- ক্লাউড শেল অথবা আপনার টার্মিনাল খুলুন।
- নিম্নলিখিত পরামিতিগুলি নির্দিষ্ট করুন:
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
অনুগ্রহ করে মনে রাখবেন, আপনি কোন ধরণের কম্পিউট ইন্সট্যান্স এবং 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 কী কনফিগার করুন
NGC API কী আপনাকে NVIDIA NGC থেকে কাস্টম ছবি তুলতে দেয়। আপনার কী নির্দিষ্ট করতে:
export NGC_CLI_API_KEY="<YOUR NGC API KEY>"
এটি হল পূর্বশর্তের অংশ হিসেবে তৈরি করা কী।
৭. NVIDIA NIM স্থাপন এবং পরীক্ষা করুন
- NIM LLM হেল্ম চার্ট আনুন:
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 পরিষেবা থেকে কী ধরণের প্রতিক্রিয়া পাব তা দেখার জন্য অনুমান অনুরোধ করতে পারি। এটি করার জন্য, আমরা পরিষেবাটিতে পোর্ট ফরওয়ার্ডিং সক্ষম করি যাতে আমরা পোর্ট 8000-এ আমাদের লোকালহোস্ট থেকে 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
৯. এরপর কী?
আরও তথ্যের জন্য নিম্নলিখিত নিবন্ধগুলি দেখুন: