NVIDIA NIM এর সাথে GKE-এ একটি AI মডেল স্থাপন করুন

1. ভূমিকা

এই হ্যান্ডস-অন কোডল্যাব আপনাকে NVIDIA NIM™ মাইক্রোসার্ভিসেসের শক্তি ব্যবহার করে Google Kubernetes Engine (GKE) তে একটি কন্টেইনারাইজড AI মডেল স্থাপন ও পরিচালনার মাধ্যমে গাইড করবে৷

এই টিউটোরিয়ালটি বিকাশকারী এবং ডেটা বিজ্ঞানীদের জন্য ডিজাইন করা হয়েছে যারা খুঁজছেন:

  • AI অনুমান স্থাপনকে সরল করুন: GKE-তে উত্পাদনে AI মডেলগুলির দ্রুত এবং সহজ স্থাপনার জন্য কীভাবে একটি পূর্বনির্মাণ NIM ব্যবহার করবেন তা শিখুন।
  • NVIDIA GPU-তে পারফরম্যান্স অপ্টিমাইজ করুন: আপনার GKE ক্লাস্টারের মধ্যে GPU-তে অপ্টিমাইজ করা অনুমানের জন্য NVIDIA TensorRT ব্যবহার করে NIM মোতায়েন করার সাথে অভিজ্ঞতা অর্জন করুন।
  • স্কেল এআই ইনফারেন্স ওয়ার্কলোড: অটোস্কেলিং এবং কম্পিউট রিসোর্স ম্যানেজ করার জন্য কুবারনেটস ব্যবহার করে চাহিদার উপর ভিত্তি করে কীভাবে আপনার NIM ডিপ্লয়মেন্ট স্কেল করবেন তা অন্বেষণ করুন।

2. আপনি কি শিখবেন

এই টিউটোরিয়ালের শেষে, আপনি এর সাথে অভিজ্ঞতা পাবেন:

  1. GKE-এ NIM স্থাপন করা: আপনার GKE ক্লাস্টারে বিভিন্ন অনুমান কাজের জন্য একটি পূর্বনির্মাণ NVIDIA NIM স্থাপন করুন।
  2. NIM স্থাপনার ব্যবস্থাপনা: আপনার নিয়োজিত NIM পরিচালনা, নিরীক্ষণ এবং স্কেল করতে kubectl কমান্ড ব্যবহার করুন।
  3. স্কেলিং ইনফারেন্স ওয়ার্কলোড: ট্রাফিক চাহিদার উপর ভিত্তি করে আপনার NIM স্থাপনার অটোস্কেল করার জন্য Kubernetes বৈশিষ্ট্যগুলি ব্যবহার করুন।

3. উপাদান শিখুন

গুগল কুবারনেটস ইঞ্জিনে (জিকেই) জিপিইউ

GPU গুলি আপনাকে আপনার নোডগুলিতে যেমন মেশিন লার্নিং এবং ডেটা প্রক্রিয়াকরণের মতো নির্দিষ্ট কাজের চাপগুলিকে ত্বরান্বিত করতে দেয়। GKE NVIDIA H100, L4, এবং A100 GPU সহ মেশিনের ধরন সহ নোড কনফিগারেশনের জন্য বিভিন্ন ধরণের মেশিনের বিকল্প সরবরাহ করে।

NVIDIA NIM

NVIDIA NIM হল যেকোন ক্লাউড বা ডেটা সেন্টারে ফাউন্ডেশন মডেলের স্থাপনাকে ত্বরান্বিত করার জন্য এবং আপনার ডেটা সুরক্ষিত রাখতে সাহায্য করার জন্য সহজেই ব্যবহারযোগ্য অনুমান মাইক্রোসার্ভিসের একটি সেট।

এনভিডিয়া এআই এন্টারপ্রাইজ

NVIDIA AI Enterprise হল একটি এন্ড-টু-এন্ড, ক্লাউড-নেটিভ সফ্টওয়্যার প্ল্যাটফর্ম যা ডেটা সায়েন্স পাইপলাইনকে ত্বরান্বিত করে এবং প্রোডাকশন-গ্রেড কো-পাইলট এবং অন্যান্য জেনারেটিভ AI অ্যাপ্লিকেশনগুলির বিকাশ ও স্থাপনাকে স্ট্রীমলাইন করে। GCP মার্কেটপ্লেসের মাধ্যমে পাওয়া যায়।

4. পূর্বশর্ত

  • প্রকল্প: বিলিং সক্ষম সহ একটি Google ক্লাউড প্রকল্প৷
  • অনুমতি: GKE ক্লাস্টার এবং অন্যান্য সম্পর্কিত সংস্থান তৈরি করার জন্য পর্যাপ্ত অনুমতি।
  • হেলম : হেলম হলেন কুবারনেটসের প্যাকেজ ম্যানেজার।
  • NVIDIA GPU অপারেটর : একটি kubernetes অ্যাড-অন যা GPU বিধানের জন্য প্রয়োজনীয় সমস্ত NVIDIA সফ্টওয়্যার উপাদানগুলির পরিচালনাকে স্বয়ংক্রিয় করে।
  • NVIDIA API কী: এই লিঙ্কে ক্লিক করুন, এবং কীভাবে একটি অ্যাকাউন্ট তৈরি করতে হয় এবং একটি API কী তৈরি করতে হয় তার নির্দেশাবলী অনুসরণ করুন। NIM কন্টেইনার ডাউনলোড করতে একটি API কী প্রয়োজন হবে।
  • NVIDIA GPUs: নিচের GPU গুলির মধ্যে একটি কাজ করা উচিত ( অনুগ্রহ করে মনে রাখবেন, আপনার যদি পর্যাপ্ত GPU না থাকে তবে আপনি কোটা বৃদ্ধির অনুরোধ করতে এই পদক্ষেপগুলি অনুসরণ করতে পারেন)
  • ঐচ্ছিক - GCloud SDK :** আপনি GCP পোর্টালে ক্লাউড শেল ব্যবহার না করলে, অনুগ্রহ করে নিশ্চিত করুন যে আপনার কাছে Google Cloud SDK ইনস্টল এবং কনফিগার করা আছে।
  • ঐচ্ছিক - kubectl :** আপনি GCP পোর্টালে ক্লাউড শেল ব্যবহার না করলে, অনুগ্রহ করে নিশ্চিত করুন যে আপনার kubectl কমান্ড-লাইন টুল ইনস্টল এবং কনফিগার করা আছে।

5. GPU সহ একটি GKE ক্লাস্টার তৈরি করুন৷

  1. ক্লাউড শেল বা আপনার টার্মিনাল খুলুন।
  2. নিম্নলিখিত পরামিতি নির্দিষ্ট করুন:
    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-এর মান পরিবর্তন করতে হতে পারে।

  1. GKE ক্লাস্টার তৈরি করুন:
    gcloud container clusters create ${CLUSTER_NAME} \
        --project=${PROJECT_ID} \
        --location=${ZONE} \
        --release-channel=rapid \
        --machine-type=${CLUSTER_MACHINE_TYPE} \
        --num-nodes=1
    
  2. 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
    

6. NVIDIA NGC API কী কনফিগার করুন

NGC API কী আপনাকে NVIDIA NGC থেকে কাস্টম ছবি তুলতে দেয়। আপনার কী নির্দিষ্ট করতে:

export NGC_CLI_API_KEY="<YOUR NGC API KEY>"

পূর্বশর্তগুলির অংশ হিসাবে এটি তৈরি করা হয়েছিল।

7. NVIDIA NIM স্থাপন এবং পরীক্ষা করুন

  1. NIM LLM হেলম চার্ট আনুন:
    helm fetch https://helm.ngc.nvidia.com/nim/charts/nim-llm-1.3.0.tgz --username='$oauthtoken' --password=$NGC_CLI_API_KEY
    
  2. একটি NIM নেমস্পেস তৈরি করুন:
    kubectl create namespace nim
    
  3. গোপনীয়তা কনফিগার করুন:
    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
    
  4. 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
    
  5. NIM স্থাপনা চালু করা হচ্ছে:
    helm install my-nim nim-llm-1.1.2.tgz -f nim_custom_value.yaml --namespace nim
    
    যাচাই করুন NIM পড চলছে:
    kubectl get pods -n nim
    
  6. NIM স্থাপনার পরীক্ষা করা:
    একবার আমরা যাচাই করি যে আমাদের NIM পরিষেবা সফলভাবে স্থাপন করা হয়েছে, আমরা NIM পরিষেবা থেকে কী ধরনের প্রতিক্রিয়া পাব তা দেখার জন্য আমরা অনুমান অনুরোধ করতে পারি। এটি করার জন্য, আমরা পোর্ট 8000-এ আমাদের লোকালহোস্ট থেকে NIM অ্যাক্সেস করতে সক্ষম হওয়ার জন্য পরিষেবাটিতে পোর্ট ফরওয়ার্ডিং সক্ষম করি:
    kubectl port-forward service/my-nim-nim-llm 8000:8000 -n 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
    }'
    
    আপনি যদি NIM পরিষেবা থেকে একটি চ্যাট সমাপ্তি পান, তার মানে পরিষেবাটি প্রত্যাশা অনুযায়ী কাজ করছে!

8. পরিষ্কার করা

GKE ক্লাস্টার মুছুন:

gcloud container clusters delete $CLUSTER_NAME --zone=$ZONE

9. পরবর্তী কি

আরও তথ্যের জন্য নিম্নলিখিত নিবন্ধগুলি দেখুন: