1. परिचय
खास जानकारी
Cloud Run में हाल ही में जीपीयू की सुविधा जोड़ी गई है. यह वेटलिस्ट में शामिल लोगों के लिए उपलब्ध झलक के तौर पर उपलब्ध है. अगर आपको इस सुविधा का इस्तेमाल करना है, तो वेटलिस्ट में शामिल होने के लिए यह फ़ॉर्म भरें. Cloud Run, Google Cloud पर मौजूद एक कंटेनर प्लैटफ़ॉर्म है. इसकी मदद से, क्लस्टर को मैनेज किए बिना, कंटेनर में अपना कोड आसानी से चलाया जा सकता है.
फ़िलहाल, हम 24 जीबी के vRAM वाले Nvidia L4 जीपीयू उपलब्ध कराते हैं. हर Cloud Run इंस्टेंस में एक जीपीयू होता है. साथ ही, Cloud Run की ऑटो स्केलिंग की सुविधा अब भी लागू होती है. इसमें कोटा बढ़ाने के साथ-साथ, कोई अनुरोध न होने पर शून्य इंस्टेंस तक स्केल करना शामिल है.
जीपीयू के लिए इस्तेमाल का एक उदाहरण, अपने ओपन लार्ज लैंग्वेज मॉडल (एलएलएम) का इस्तेमाल करना है. इस ट्यूटोरियल में, एलएलएम चलाने वाली सेवा को डिप्लॉय करने का तरीका बताया गया है.
इस कोडलैब में, आपको एक मल्टी-कंटेनर सेवा डिप्लॉय करनी होगी. यह सेवा, Open WebUI का इस्तेमाल फ़्रंटएंड इन्ग्रेस कंटेनर के तौर पर करती है. साथ ही, Google Cloud Storage बकेट में स्टोर किए गए Gemma 2 2B मॉडल को इस्तेमाल करने के लिए, साइडकार में ओलामा का इस्तेमाल करती है.
आपको इनके बारे में जानकारी मिलेगी
- Cloud Run में एक से ज़्यादा कंटेनर वाली सेवा बनाने का तरीका
- Gemma 2 2B मॉडल की सेवा देने वाली साइडकार के तौर पर ओलामा को कैसे डिप्लॉय करें
- Open WebUI को फ़्रंटएंड इन्ग्रेस कंटेनर के तौर पर डिप्लॉय करने का तरीका
2. एनवायरमेंट वैरिएबल सेट करना और एपीआई चालू करना
gcloud सीएलआई को अपग्रेड करें
सबसे पहले, आपको gcloud सीएलआई का नया वर्शन इंस्टॉल करना होगा. आप निम्न आदेश चलाकर सीएलआई को अपडेट कर सकते हैं:
gcloud components update
एनवायरमेंट वैरिएबल सेटअप करें
एनवायरमेंट वैरिएबल सेट किए जा सकते हैं. इनका इस्तेमाल इस कोडलैब में किया जाएगा.
PROJECT_ID=<YOUR_PROJECT_ID> REGION=us-central1 gcloud config set project $PROJECT_ID
एपीआई चालू करें
इस कोडलैब का इस्तेमाल शुरू करने से पहले, आपको कई एपीआई चालू करने होंगे. इस कोडलैब के लिए, इन एपीआई का इस्तेमाल करना ज़रूरी है. नीचे दिए गए निर्देश की मदद से, उन एपीआई को चालू किया जा सकता है:
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 बकेट बनाएं
सबसे पहले, मॉडल डाउनलोड करने के लिए Ollama इंस्टॉल करें. इससे मॉडल, /home/$USER/.ollama/models में डाउनलोड हो जाएगा
curl -fsSL https://ollama.com/install.sh | sh
अब रनिंग करके, ओलामा चलाएं
ollama serve
ओलामा ने पोर्ट 11434 पर सुनना शुरू किया.
Gemma 2 2B मॉडल को नीचे खींचने के लिए, दूसरी टर्मिनल विंडो खोलें
ollama pull gemma2:2b
(ज़रूरी नहीं) कमांड लाइन की मदद से, Gemma के साथ इंटरैक्ट करने के लिए यह तरीका अपनाएं
ollama run gemma2:2b
Gemma से चैट करने के बाद, टाइप करके बाहर निकला जा सकता है
/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. Ollama इमेज बनाना
यहां दिए गए कॉन्टेंट के साथ एक dockerfile बनाएं
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
ollama साइडकार इमेज बनाएं
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 का इस्तेमाल करके फ़्रंटएंड इनग्रेस कंटेनर बनाया जाएगा.
Open WebUI इमेज को डाउनलोड करने के लिए, docker का इस्तेमाल करें.
docker pull ghcr.io/open-webui/open-webui:main
इसके बाद, Artifact Registry से पुष्टि करने के लिए, अपने Google Cloud क्रेडेंशियल का इस्तेमाल करने के लिए Docker को कॉन्फ़िगर करें. इससे आपको Artifact Registry के रेपो में इमेज को पुश करने के लिए डॉकर का इस्तेमाल करने की सुविधा मिल जाएगी.
gcloud auth configure-docker us-central1-docker.pkg.dev
अपनी इमेज टैग करें और फिर Artifact Registry पर जाएं.
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. Cloud Run में मल्टी-कंटेनर सेवा को डिप्लॉय करना
मल्टी-कंटेनर सेवा को डिप्लॉय करने के लिए, 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
यहां दिए गए कमांड का इस्तेमाल करके, Cloud Run पर डिप्लॉय करें.
gcloud beta run services replace service.yaml
Cloud Run सेवा की जांच करना
अब अपने वेब ब्राउज़र में सेवा का यूआरएल खोलें.
यूज़र इंटरफ़ेस (यूआई) लोड होने के बाद, कोई मॉडल चुनें में जाकर, Gemma 2 2B चुनें.
अब Gemma से कोई सवाल पूछें, जैसे "आसमान नीला क्यों है?"
8. बधाई हो!
कोडलैब पूरा करने के लिए बधाई!
हमारा सुझाव है कि Cloud Run फ़ंक्शन के दस्तावेज़ देखें
हमने क्या-क्या शामिल किया है
- Cloud Run में एक से ज़्यादा कंटेनर वाली सेवा बनाने का तरीका
- Gemma 2 2B मॉडल की सेवा देने वाली साइडकार के तौर पर ओलामा को कैसे डिप्लॉय करें
- Open WebUI को फ़्रंटएंड इन्ग्रेस कंटेनर के तौर पर डिप्लॉय करने का तरीका
9. व्यवस्थित करें
अनजाने में लगने वाले शुल्कों से बचने के लिए, (उदाहरण के लिए, अगर Cloud Run सेवाओं का अनुरोध अनजाने में फ़्री टियर में हर महीने Cloud Run ऐप्लिकेशन के लिए असाइन किए जाने की संख्या से ज़्यादा हो), तो आप या तो Cloud Run को मिटा सकते हैं या दूसरे चरण में बनाए गए प्रोजेक्ट को मिटा सकते हैं.
Cloud Run फ़ंक्शन को मिटाने के लिए, https://console.cloud.google.com/run पर Cloud Run Cloud Console पर जाएं और ollama-sidecar-codelab
सेवा को मिटाएं.
अगर आपको पूरा प्रोजेक्ट मिटाना है, तो https://console.cloud.google.com/cloud-resource-manager पर जाएं और दूसरे चरण में बनाया गया प्रोजेक्ट चुनें. इसके बाद, 'मिटाएं' चुनें. अगर प्रोजेक्ट मिटाया जाता है, तो आपको Cloud SDK में प्रोजेक्ट बदलने होंगे. gcloud projects list
चलाकर, सभी उपलब्ध प्रोजेक्ट की सूची देखी जा सकती है.