1. परिचय
खास जानकारी
आपको क्या सीखने को मिलेगा
- Cloud Run RTX 6000 Pro GPU पर Gemma मॉडल को डिप्लॉय करने का तरीका
- कंटेनर स्टार्टअप के दौरान, Cloud Storage से एक साथ कई मॉडल डाउनलोड करने का तरीका
2. सेटअप और ज़रूरी शर्तें
ऐसे एनवायरमेंट वैरिएबल सेट करें जिनका इस्तेमाल इस कोडलैब में किया जाएगा:
export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=europe-west4
export SERVICE_NAME=gemma-rtx-codelab
# set the project
gcloud config set project $PROJECT_ID
इस कोडलैब के लिए ज़रूरी एपीआई चालू करना
gcloud services enable artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com \
compute.googleapis.com
कोड लैब के लिए फ़ोल्डर बनाना
mkdir codelab-rtx
cd codelab-rtx
Cloud Storage से एमएल मॉडल लोड करने की प्रोसेस को ऑप्टिमाइज़ करने के लिए, अपने सबनेट के लिए Private Google ऐक्सेस चालू करें. Cloud Storage से मॉडल लोड करने के बारे में ज़्यादा जानने के लिए, जीपीयू के सबसे सही तरीकों से जुड़े दस्तावेज़ के सेक्शन पर जाएं.
gcloud compute networks subnets update default \
--region=europe-west4 \
--enable-private-ip-google-access
3. Cloud Storage सेट अप करना
सबसे पहले, मॉडल के वेट को सेव करने के लिए Cloud Storage बकेट बनाएं.
कोई यूनीक बकेट बनाना
# Generate a unique bucket name
export MODEL_BUCKET="${PROJECT_ID}-rtx-codelab-$(python3 -c 'import uuid; print(str(uuid.uuid4())[:8])')"
echo "Bucket name: $MODEL_BUCKET"
# Create the regional bucket
gcloud storage buckets create gs://$MODEL_BUCKET \
--location=$REGION \
--uniform-bucket-level-access
4. मॉडल के वेट वापस पाना
इसके बाद, Gemma 3 मॉडल को किसी लोकल डायरेक्ट्री में डाउनलोड करें. इसके बाद, इसे अपने Cloud Storage बकेट में अपलोड करें.
Ollama इंस्टॉल करना
Ollama को इंस्टॉल करने के लिए, यह कमांड चलाएं:
curl -fsSL https://ollama.com/install.sh | sh
मॉडल डाउनलोड करें
डाउनलोड किए गए मॉडल के लिए एक डायरेक्ट्री बनाएं.
mkdir model-weights
इस प्रोसेस के लिए, आपको दो टर्मिनल टैब इस्तेमाल करने होंगे: एक का इस्तेमाल Ollama सर्वर को चलाने के लिए और दूसरे का इस्तेमाल मॉडल को वापस पाने के लिए किया जाएगा.
टर्मिनल 1 (सर्वर):
डाउनलोड किए गए मॉडल की जगह की जानकारी देकर, सर्वर शुरू करें. यह कमांड चलती रहेगी.
OLLAMA_MODELS=$(pwd)/model-weights ollama serve
टर्मिनल 2 (क्लाइंट): नया टर्मिनल टैब खोलें और मॉडल डाउनलोड करें. क्लाइंट, चालू सर्वर से अपने-आप कम्यूनिकेट करता है.
# note if you wish to use a larger model, you can change this to gemma3:27b
ollama pull gemma3:1b
टर्मिनल 1 में वापस जाएं: टर्मिनल 2 में डाउनलोड पूरा होने के बाद, टर्मिनल 1 पर वापस जाएं और सर्वर को रोकने के लिए Ctrl+C दबाएं.
Cloud Storage में अपलोड करना
अब अपने बकेट में वज़न अपलोड करें. gcloud storage, अपलोड करने की प्रोसेस को तेज़ करने के लिए, समानांतर अपलोड को अपने-आप मैनेज करता है.
gcloud storage cp -r ./model-weights/* gs://$MODEL_BUCKET/
(ज़रूरी नहीं) लोकल वेट साफ़ करें
मॉडल अब Cloud Storage में है. इसलिए, लोकल कॉपी हटा दें.
rm -rf model-weights
5. सेवा बनाना
सबसे पहले, सेवा के लिए एक फ़ोल्डर बनाएं.
mkdir rtx-service
cd rtx-service
नीचे दिए गए कॉन्टेंट का इस्तेमाल करके Dockerfile बनाओ
FROM ollama/ollama:latest
# Install Google Cloud CLI
RUN apt-get update && apt-get install -y curl gnupg && \
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - && \
apt-get update && apt-get install -y google-cloud-cli && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# 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
# Copy and set up the startup script
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# Start using the entrypoint script
ENTRYPOINT ["/entrypoint.sh"]
यहां दिए गए कॉन्टेंट के साथ entrypoint.sh नाम की फ़ाइल बनाएं:
#!/bin/bash
set -e
# Ensure OLLAMA_MODELS directory exists
mkdir -p $OLLAMA_MODELS
# Download model weights from GCS if MODEL_BUCKET is set
if [ -n "$MODEL_BUCKET" ]; then
echo "Downloading model weights from gs://$MODEL_BUCKET..."
# gcloud storage handles concurrent downloads automatically
gcloud storage cp -r "gs://$MODEL_BUCKET/*" "$OLLAMA_MODELS/"
else
echo "MODEL_BUCKET not set. Skipping download."
fi
# Start Ollama
exec ollama serve
6. Cloud Run पर डिप्लॉय करें
इस सेक्शन में, gcloud run deploy का इस्तेमाल करके सेवा को डिप्लॉय किया जाएगा. यह कमांड, सोर्स से आपका कंटेनर बनाएगी और उसे Cloud Run पर डिप्लॉय करेगी. इसके लिए, ज़रूरी जीपीयू और नेटवर्क कॉन्फ़िगरेशन का इस्तेमाल किया जाएगा.
सेवा खाता बनाएं
इस ऐप्लिकेशन के लिए, एक अलग सेवा खाता बनाएं. साथ ही, इसे सिर्फ़ ज़रूरी अनुमतियां दें.
# Create a dedicated service account
gcloud iam service-accounts create rtx-codelab-identity \
--display-name="RTX Codelab Identity"
# Grant permission to read from the model bucket
gcloud storage buckets add-iam-policy-binding gs://$MODEL_BUCKET \
--member="serviceAccount:rtx-codelab-identity@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/storage.objectViewer"
# Grant access to the Compute Engine network for the Cloud Run service identity
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:rtx-codelab-identity@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/compute.networkUser"
# Grant access to the Compute Engine network for the default service account
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')@serverless-robot-prod.iam.gserviceaccount.com" \
--role="roles/compute.networkUser"
नेटवर्क कॉन्फ़िगरेशन
बड़े मॉडल डाउनलोड करते समय सबसे अच्छी परफ़ॉर्मेंस पाने के लिए, डायरेक्ट वीपीसी इग्रेस का इस्तेमाल करें. इससे कंटेनर, Google के प्राइवेट नेटवर्क के ज़रिए Cloud Storage को ऐक्सेस कर पाता है. साथ ही, सार्वजनिक इंटरनेट और एनएटी गेटवे को बायपास कर पाता है. gcloud run deploy कमांड में इन फ़्लैग का इस्तेमाल किया जाता है:
--network: यहdefaultवीपीसी से कनेक्ट होता है. पक्का करें कि यह नेटवर्क मौजूद हो और इसमें आपके इलाके का सबनेट हो. साथ ही, इसमें Private Google Access की सुविधा चालू हो.--subnet: आपके इलाके का कोई खास सबनेट. आम तौर पर, डिफ़ॉल्ट नेटवर्क इस्तेमाल करने पर यहdefaultहोता है.--vpc-egress: इसेall-trafficपर सेट करें, ताकि सभी इग्रेस ट्रैफ़िक को VPC से होकर जाना पड़े.
डिप्लॉयमेंट कमांड
gcloud beta run deploy $SERVICE_NAME \
--source . \
--region $REGION \
--project $PROJECT_ID \
--no-allow-unauthenticated \
--port 11434 \
--service-account rtx-codelab-identity@$PROJECT_ID.iam.gserviceaccount.com \
--cpu 20 --memory 80Gi \
--gpu 1 \
--gpu-type nvidia-rtx-pro-6000 \
--set-env-vars MODEL_BUCKET=$MODEL_BUCKET \
--network default \
--subnet default \
--vpc-egress all-traffic \
--no-gpu-zonal-redundancy
7. सेवा की जांच करना
डप्लॉय करने के बाद, Ollama API का इस्तेमाल करके Gemma 3 मॉडल से इंटरैक्ट किया जा सकता है.
सेवा का यूआरएल पाना
डिप्लॉय की गई Cloud Run सेवा का यूआरएल पाएं.
SERVICE_URL=$(gcloud run services describe $SERVICE_NAME --region $REGION --format 'value(status.url)')
echo "Service URL: $SERVICE_URL"
अनुमान लगाना
curl का इस्तेमाल करके, मॉडल को कोई प्रॉम्प्ट भेजें. "stream": false को सेट करके, एक ही JSON ऑब्जेक्ट में पूरा रिस्पॉन्स पाया जा सकता है. साथ ही, jq का इस्तेमाल करके, सिर्फ़ टेक्स्ट निकाला जा सकता है.
ध्यान दें: अगर किसी बड़े मॉडल का इस्तेमाल किया जा रहा है, जैसे कि gemma3:27b, तो आपको नीचे दिए गए JSON में मॉडल का नाम बदलना होगा.
curl -s "$SERVICE_URL/api/generate" \
-H "Authorization: Bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" \
-d '{
"model": "gemma3:1b",
"prompt": "Why is the sky blue?",
"stream": false
}' | jq -r '.response'
8. बधाई हो!
कोडलैब पूरा करने के लिए बधाई!
हमारा सुझाव है कि आप Cloud Run का दस्तावेज़ पढ़ें.
हमने क्या-क्या कवर किया है
- Cloud Run RTX 6000 Pro GPU पर Gemma मॉडल को डिप्लॉय करने का तरीका
- कंटेनर स्टार्टअप के दौरान, Cloud Storage से एक साथ कई मॉडल डाउनलोड करने का तरीका
9. व्यवस्थित करें
इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए, प्रोजेक्ट या अलग-अलग संसाधनों को मिटाया जा सकता है.
पहला विकल्प: संसाधन मिटाना
Cloud Run सेवा मिटाना
gcloud run services delete $SERVICE_NAME \
--region $REGION \
--quiet
सेवा वाला खाता मिटाना
gcloud iam service-accounts delete \
rtx-codelab-identity@$PROJECT_ID.iam.gserviceaccount.com \
--quiet
Cloud Storage बकेट मिटाना
gcloud storage rm --recursive gs://$MODEL_BUCKET
कंटेनर इमेज मिटाना
इस बिल्ड ने Artifact Registry में एक कंटेनर इमेज बनाई है. इमेज का नाम ढूंढकर उसे मिटाया जा सकता है.
इमेज की सूची देखकर सही नाम ढूंढें. आम तौर पर, यह gcr.io/PROJECT_ID/SERVICE_NAME होता है
gcloud container images list --filter="name:$SERVICE_NAME"
इमेज मिटाएं (IMAGE_NAME की जगह, ऊपर दिए गए नतीजे का इस्तेमाल करें)
gcloud container images delete <IMAGE_NAME> --force-delete-tags
दूसरा विकल्प: प्रोजेक्ट मिटाना
पूरे प्रोजेक्ट को मिटाने के लिए, संसाधन मैनेज करें पर जाएं. इसके बाद, दूसरे चरण में बनाया गया प्रोजेक्ट चुनें और मिटाएं को चुनें. प्रोजेक्ट मिटाने पर, आपको Cloud SDK में प्रोजेक्ट बदलने होंगे. gcloud projects list कमांड चलाकर, सभी उपलब्ध प्रोजेक्ट की सूची देखी जा सकती है.