ক্লাউড রান জিপিইউ সহ ওল্লামাকে সাইডকার হিসাবে কীভাবে ব্যবহার করবেন এবং ফ্রন্টএন্ড ইনগ্রেস কন্টেইনার হিসাবে ওয়েবইউআই খুলবেন

1. ভূমিকা

ওভারভিউ

ক্লাউড রান সম্প্রতি GPU সমর্থন যোগ করেছে। এটি একটি অপেক্ষা তালিকাভুক্ত সর্বজনীন পূর্বরূপ হিসাবে উপলব্ধ। আপনি যদি বৈশিষ্ট্যটি ব্যবহার করে দেখতে আগ্রহী হন তবে অপেক্ষা তালিকায় যোগ দিতে এই ফর্মটি পূরণ করুন ৷ ক্লাউড রান হল Google ক্লাউডের একটি কন্টেইনার প্ল্যাটফর্ম যা আপনাকে একটি ক্লাস্টার পরিচালনা করার প্রয়োজন ছাড়াই একটি কন্টেইনারে আপনার কোড চালানো সহজ করে তোলে।

আজ, আমরা যে GPU গুলি উপলব্ধ করি তা হল 24 GB vRAM সহ Nvidia L4 GPU গুলি৷ প্রতি ক্লাউড রান দৃষ্টান্তে একটি জিপিইউ রয়েছে এবং ক্লাউড রান স্বয়ংক্রিয় স্কেলিং এখনও প্রযোজ্য। এর মধ্যে 5টি পর্যন্ত (কোটা বৃদ্ধির উপলভ্য) দৃষ্টান্ত পর্যন্ত স্কেল করা অন্তর্ভুক্ত, সেইসাথে কোন অনুরোধ না থাকলে শূন্য দৃষ্টান্তে স্কেল করা অন্তর্ভুক্ত।

জিপিইউগুলির জন্য একটি ব্যবহারের ক্ষেত্রে আপনার নিজস্ব ওপেন লার্জ ল্যাঙ্গুয়েজ মডেল (এলএলএম) চলছে। এই টিউটোরিয়ালটি আপনাকে LLM চালিত একটি পরিষেবা স্থাপনের মাধ্যমে নিয়ে যায়।

এই কোডল্যাবে, আপনি একটি মাল্টি-কন্টেইনার পরিষেবা স্থাপন করবেন যা ওপেন ওয়েবইউআইকে ফ্রন্টএন্ড ইনগ্রেস কন্টেইনার হিসাবে ব্যবহার করে এবং একটি Google ক্লাউড স্টোরেজ বালতিতে সঞ্চিত একটি জেমমা 2 2B মডেল পরিবেশন করতে একটি সাইডকারে ওল্লামা ব্যবহার করে৷

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

  • ক্লাউড রানে কীভাবে একাধিক কন্টেইনার পরিষেবা তৈরি করবেন
  • Gemma 2 2B মডেল পরিবেশনকারী সাইডকার হিসাবে ওল্লামাকে কীভাবে মোতায়েন করবেন
  • ফ্রন্টএন্ড ইনগ্রেস কন্টেইনার হিসাবে ওপেন ওয়েবইউআই কীভাবে স্থাপন করবেন

2. এনভায়রনমেন্ট ভেরিয়েবল সেট করুন এবং এপিআই সক্ষম করুন

gcloud CLI আপগ্রেড করুন

প্রথমে, আপনাকে gcloud CLI এর একটি সাম্প্রতিক সংস্করণ ইনস্টল করতে হবে। আপনি নিম্নলিখিত কমান্ডটি চালিয়ে CLI আপডেট করতে পারেন:

gcloud components update

পরিবেশ ভেরিয়েবল সেটআপ করুন

আপনি পরিবেশের ভেরিয়েবল সেট করতে পারেন যা এই কোডল্যাব জুড়ে ব্যবহার করা হবে।

PROJECT_ID=<YOUR_PROJECT_ID>
REGION=us-central1
gcloud config set project $PROJECT_ID

এপিআই সক্ষম করুন

আপনি এই কোডল্যাব ব্যবহার শুরু করার আগে, আপনাকে সক্রিয় করতে হবে এমন বেশ কয়েকটি API আছে। এই কোডল্যাবের জন্য নিম্নলিখিত API ব্যবহার করা প্রয়োজন। আপনি নিম্নলিখিত কমান্ডটি চালিয়ে সেই APIগুলি সক্ষম করতে পারেন:

gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com \
    storage.googleapis.com \
    artifactregistry.googleapis.com

এই কোডল্যাবের জন্য একটি ডিরেক্টরি তৈরি করুন।

mkdir ollama-sidecar-codelab
cd ollama-sidecar-codelab

3. Gemma 2 2B মডেল সংরক্ষণ করতে একটি GCS বাকেট তৈরি করুন৷

প্রথমে, আপনি মডেলটি ডাউনলোড করতে ওল্লামা ইনস্টল করবেন। এটি মডেলটিকে /home/$USER/.ollama/models এ ডাউনলোড করবে

curl -fsSL https://ollama.com/install.sh | sh

এবার দৌড়ে ওল্লামা চালাও

ollama serve

ওল্লামা 11434 পোর্টে শুনতে শুরু করেন।

Gemma 2 2B মডেলকে নিচে টানতে একটি দ্বিতীয় টার্মিনাল উইন্ডো খুলুন

ollama pull gemma2:2b

(ঐচ্ছিক) আপনি চালানোর মাধ্যমে কমান্ড লাইন থেকে জেমার সাথে যোগাযোগ করতে পারেন

ollama run gemma2:2b

আপনি যখন জেমার সাথে চ্যাটিং শেষ করেন, আপনি টাইপ করে প্রস্থান করতে পারেন

/bye

4. একটি স্টোরেজ বালতি তৈরি করুন

এখন যেহেতু মডেলটি ডাউনলোড হয়েছে, আপনি মডেলটিকে আপনার GCS বালতিতে সরাতে পারেন৷

প্রথমত, বালতি তৈরি করুন।

gcloud storage buckets create gs://$PROJECT_ID-gemma2-2b-codelab

এখন, মডেল ফোল্ডারটি GCS এ সরান।

gsutil cp -r /home/$USER/.ollama/models gs://$PROJECT_ID-gemma2-2b-codelab

5. ওল্লামা ইমেজ তৈরি করুন

নিম্নলিখিত বিষয়বস্তু সহ একটি ডকারফাইল তৈরি করুন

FROM ollama/ollama

# Listen on all interfaces, port 11434
ENV OLLAMA_HOST 0.0.0.0:11434

# Store model weight files in /models
ENV OLLAMA_MODELS /models

# Reduce logging verbosity
ENV OLLAMA_DEBUG false

# Never unload model weights from the GPU
ENV OLLAMA_KEEP_ALIVE -1 

# Store the model weights in the container image
ENV MODEL gemma2:2b
RUN ollama serve & sleep 5 && ollama pull $MODEL 

# Start Ollama
ENTRYPOINT ["ollama", "serve"]

আপনার পরিষেবা চিত্রগুলি সংরক্ষণ করতে একটি আর্টিফ্যাক্ট রেজিস্ট্রি রেপো তৈরি করুন৷

gcloud artifacts repositories create ollama-sidecar-codelab-repo --repository-format=docker \
    --location=us-central1 --description="Ollama + OpenWebUI website demo" \
    --project=$PROJECT_ID

ওল্লামা সাইডকার ইমেজ তৈরি করুন

gcloud builds submit \
   --tag us-central1-docker.pkg.dev/$PROJECT_ID/ollama-sidecar-codelab-repo/ollama-gemma-2b \
   --machine-type e2-highcpu-32

6. Open WebUI ফ্রন্টএন্ড ইমেজ তৈরি করুন

এই বিভাগে, আপনি Open WebUI ব্যবহার করে ফ্রন্টএন্ড ইনগ্রেস কন্টেইনার তৈরি করবেন।

ওপেন ওয়েবইউআই ইমেজটি টানতে ডকার ব্যবহার করুন।

docker pull ghcr.io/open-webui/open-webui:main

তারপরে আর্টিফ্যাক্ট রেজিস্ট্রি দিয়ে প্রমাণীকরণ করতে আপনার Google ক্লাউড শংসাপত্রগুলি ব্যবহার করতে ডকারকে কনফিগার করুন। এটি আপনাকে একটি চিত্রকে একটি আর্টিফ্যাক্ট রেজিস্ট্রি রেপোতে পুশ করতে ডকার ব্যবহার করার অনুমতি দেবে।

gcloud auth configure-docker us-central1-docker.pkg.dev

আপনার ছবি ট্যাগ করুন এবং তারপর আর্টিফ্যাক্ট রেজিস্ট্রিতে চাপুন।

docker tag ghcr.io/open-webui/open-webui:main us-central1-docker.pkg.dev/$PROJECT_ID/ollama-sidecar-codelab-repo/openwebui

docker push us-central1-docker.pkg.dev/$PROJECT_ID/ollama-sidecar-codelab-repo/openwebui

7. ক্লাউড রানে মাল্টি-কন্টেইনার পরিষেবা স্থাপন করুন৷

মাল্টি-কন্টেইনার পরিষেবা স্থাপন করতে একটি yaml ফাইল ব্যবহার করুন

নিম্নলিখিত বিষয়বস্তু সহ একটি service.yaml তৈরি করুন।

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: ollama-sidecar-codelab
  labels:
    cloud.googleapis.com/location: us-central1
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/maxScale: '5'
        run.googleapis.com/cpu-throttling: 'false'
        run.googleapis.com/startup-cpu-boost: 'true'
        run.googleapis.com/container-dependencies: '{"openwebui":["ollama-sidecar"]}'
    spec:
      containerConcurrency: 80
      timeoutSeconds: 300
      containers:
      - name: openwebui
        image: us-central1-docker.pkg.dev/YOUR_PROJECT_ID/ollama-sidecar-codelab/openwebui
        ports:
        - name: http1
          containerPort: 8080
        env:
        - name: OLLAMA_BASE_URL
          value: http://localhost:11434
        - name: WEBUI_AUTH
          value: 'false'
        resources:
          limits:
            memory: 1Gi
            cpu: 2000m
        volumeMounts:
        - name: in-memory-1
          mountPath: /app/backend/data
        startupProbe:
          timeoutSeconds: 240
          periodSeconds: 240
          failureThreshold: 1
          tcpSocket:
            port: 8080
      - name: ollama-sidecar
        image: us-central1-docker.pkg.dev/YOUR_PROJECT_ID/ollama-sidecar-codelab/ollama-gemma-2b
        resources:
          limits:
            cpu: '6'
            nvidia.com/gpu: '1'
            memory: 16Gi
        volumeMounts:
        - name: gcs-1
          mountPath: /root/.ollama
        startupProbe:
          timeoutSeconds: 1
          periodSeconds: 10
          failureThreshold: 3
          tcpSocket:
            port: 11434
      volumes:
      - name: gcs-1
        csi:
          driver: gcsfuse.run.googleapis.com
          volumeAttributes:
            bucketName: YOUR_PROJECT_ID-gemma2-2b-codelab
      - name: in-memory-1
        emptyDir:
          medium: Memory
          sizeLimit: 10Gi
      nodeSelector:
        run.googleapis.com/accelerator: nvidia-l4

আপনার প্রকল্প আইডি দিয়ে PROJECT_ID প্রতিস্থাপন করতে service.yaml আপডেট করুন:

sed -i "s/YOUR_PROJECT_ID/${PROJECT_ID}/g" service.yaml

নিম্নলিখিত কমান্ডটি ব্যবহার করে ক্লাউড রানে স্থাপন করুন।

gcloud beta run services replace service.yaml

ক্লাউড রান পরিষেবা পরীক্ষা করুন

এখন আপনার ওয়েব ব্রাউজারে পরিষেবা URL খুলুন।

একবার UI লোড করা শেষ হলে, একটি মডেল নির্বাচন করুন এর অধীনে, Gemma 2 2B নির্বাচন করুন।

এখন জেমাকে একটি প্রশ্ন জিজ্ঞাসা করুন, যেমন "আকাশ নীল কেন?"

8. অভিনন্দন!

কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন!

আমরা ক্লাউড রান ফাংশনের ডকুমেন্টেশন পর্যালোচনা করার পরামর্শ দিই

আমরা কভার করেছি কি

  • ক্লাউড রানে কীভাবে একাধিক কন্টেইনার পরিষেবা তৈরি করবেন
  • Gemma 2 2B মডেল পরিবেশনকারী সাইডকার হিসাবে ওল্লামাকে কীভাবে মোতায়েন করবেন
  • ফ্রন্টএন্ড ইনগ্রেস কন্টেইনার হিসাবে ওপেন ওয়েবইউআই কীভাবে স্থাপন করবেন

9. পরিষ্কার করুন

অসাবধানতাবশত চার্জ এড়াতে, (উদাহরণস্বরূপ, যদি ক্লাউড রান পরিষেবাগুলি আপনার মাসিক ক্লাউড রান ইনভোকমেন্ট বরাদ্দের চেয়ে বিনামূল্যের স্তরে অজান্তেই বেশি বার আহ্বান করা হয়), আপনি হয় ক্লাউড রানটি মুছে ফেলতে পারেন বা ধাপ 2 এ আপনার তৈরি করা প্রকল্পটি মুছে ফেলতে পারেন৷

ক্লাউড রান ফাংশনটি মুছে ফেলতে, https://console.cloud.google.com/run-এ ক্লাউড রান ক্লাউড কনসোলে যান এবং ollama-sidecar-codelab পরিষেবাটি মুছুন।

আপনি যদি সম্পূর্ণ প্রকল্প মুছে ফেলার সিদ্ধান্ত নেন, আপনি https://console.cloud.google.com/cloud-resource-manager- এ যেতে পারেন, ধাপ 2-এ আপনার তৈরি করা প্রকল্পটি নির্বাচন করুন এবং মুছুন নির্বাচন করুন৷ আপনি যদি প্রকল্পটি মুছে ফেলেন, তাহলে আপনাকে আপনার ক্লাউড SDK-এ প্রকল্পগুলি পরিবর্তন করতে হবে৷ আপনি gcloud projects list চালিয়ে সমস্ত উপলব্ধ প্রকল্পের তালিকা দেখতে পারেন।