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
চালিয়ে সমস্ত উপলব্ধ প্রকল্পের তালিকা দেখতে পারেন।