1. परिचय
खास जानकारी
इस कोडलैब में, आपको Meta के Llama 3.2-1b LLM और vLLM का इस्तेमाल करके, एक साथ कई इनफ़रेंस चलाने के लिए Cloud Run जॉब का इस्तेमाल करना होगा. ये दोनों, Cloud Run जॉब के GPU की मदद से काम करते हैं. Cloud Run के वॉल्यूम माउंट का इस्तेमाल करके, नतीजों को सीधे Cloud Storage में लिखा जाएगा.
आपको क्या सीखने को मिलेगा
- Cloud Run Jobs GPU का इस्तेमाल करके, एक साथ कई इनफ़रेंस करने का तरीका
- Cloud Run के वॉल्यूम माउंट का इस्तेमाल करके, Cloud Storage में डेटा लिखने का तरीका
2. शुरू करने से पहले
एपीआई चालू करें
इस कोडलैब का इस्तेमाल शुरू करने से पहले, इन एपीआई को चालू करें:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com
जीपीयू कोटा
इस सुविधा के साथ काम करने वाले किसी इलाके के लिए, कोटा बढ़ाने का अनुरोध करें. Cloud Run Admin API में कोटा nvidia_l4_gpu_allocation_no_zonal_redundancy
है.
ध्यान दें: अगर किसी नए प्रोजेक्ट का इस्तेमाल किया जा रहा है, तो एपीआई को चालू करने और इस पेज पर कोटा दिखने में कुछ मिनट लग सकते हैं.
गले लगाता चेहरा
इस कोडलैब में, Hugging Face पर होस्ट किए गए मॉडल का इस्तेमाल किया जाता है. यह मॉडल पाने के लिए, "रीड" अनुमति के साथ Hugging Face उपयोगकर्ता ऐक्सेस टोकन का अनुरोध करें. बाद में, इसका रेफ़रंस YOUR_HF_TOKEN
के तौर पर दिया जाएगा.
मॉडल का इस्तेमाल करने के लिए, आपको इस्तेमाल की शर्तों से भी सहमत होना होगा: https://huggingface.co/meta-llama/Llama-3.2-1B
3. सेटअप और ज़रूरी शर्तें
इस सेक्शन में, इन संसाधनों को सेट अप करने के निर्देश दिए गए हैं:
- आईएएम सेवा खाता और उससे जुड़ी आईएएम अनुमतियां.
- Hugging Face टोकन को सेव करने के लिए, Secret Manager में मौजूद सीक्रेट.
- Cloud Storage बकेट, ताकि आपके अनुमान का नतीजा सेव किया जा सके.
ज़रूरी संसाधन सेट अप करने के लिए, यह तरीका अपनाएं:
- इस कोडलैब के लिए एनवायरमेंट वैरिएबल सेट करें:
export PROJECT_ID=<your_project_id> export REGION=<your_region> export HF_TOKEN=<YOUR_HF_TOKEN> export SERVICE_ACCOUNT=inference-service-account export SERVICE_ACCOUNT_EMAIL=${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com export SECRET_ID=hugging-face-token export BUCKET_NAME=inference-codelab-${PROJECT_ID}
- सेवा खाता बनाने के लिए, यह कमांड चलाएं:
gcloud iam service-accounts create ${SERVICE_ACCOUNT} \ --display-name="Service account for batch inference codelab"
- Hugging Face का ऐक्सेस टोकन सेव करने के लिए, सीक्रेट मैनेजर का इस्तेमाल करें:
gcloud secrets create $SECRET_ID \ --replication-policy="automatic" printf $HF_TOKEN | gcloud secrets versions add $SECRET_ID --data-file=-
- अपने सेवा खाते को Secret Manager Secret Accessor की भूमिका दें:
gcloud secrets add-iam-policy-binding $SECRET_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role='roles/secretmanager.secretAccessor'
- बेहतर किए गए मॉडल को होस्ट करने के लिए बकेट बनाएं:
gcloud storage buckets create -l us-central1 gs://${BUCKET_NAME}
- अपने सेवा खाते को बकेट का ऐक्सेस दें:
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \ --member=serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role=roles/storage.objectAdmin
- कंटेनर इमेज को सेव करने के लिए, आर्टफ़ैक्ट रजिस्ट्री रिपॉज़िटरी बनाएं. अगर आपने अपने प्रोजेक्ट में पहले भी Cloud Run के सोर्स डिप्लॉय का इस्तेमाल किया है, तो यह चरण छोड़ दें.
gcloud artifacts repositories create cloud-run-source-deploy \ --repository-format=docker \ --location=$REGION \ --project=$PROJECT_ID
4. Cloud Run जॉब बनाना
इस सेक्शन में, आपको वह कोड बनाना होगा जो ये काम करता है:
- Hugging Face से Llama मॉडल इंपोर्ट करता है
- मॉडल पर एक साथ कई अनुमान लगाता है. इस प्रोसेस में, जॉब एक L4 जीपीयू का इस्तेमाल करता है.
- नतीजों को लोकल डिस्क में सेव करता है. इसे वॉल्यूम माउंट के ज़रिए Cloud Storage में लिखा जाता है.
Cloud Run जॉब और Dockerfile बनाने के लिए, यह तरीका अपनाएं:
- फ़ाइन टिंनिंग जॉब कोड को होस्ट करने के लिए डायरेक्ट्री बनाएं:
mkdir codelab-inference-job cd codelab-inference-job
main.py
नाम की फ़ाइल बनाना# SPDX-License-Identifier: Apache-2.0 from vllm import LLM, SamplingParams # Sample prompts. prompts = [ "Cloud Run is", "The future of AI is", "The capital of Germany is", "python as a programming language is", ] # Create a sampling params object. sampling_params = SamplingParams(temperature=0.8, top_p=0.95) # Create an LLM. llm = LLM(model="meta-llama/Llama-3.2-1B") # Generate texts from the prompts. The output is a list of RequestOutput objects # that contain the prompt, generated text, and other information. outputs = llm.generate(prompts, sampling_params) # Save the outputs to disk with open("/results/output.txt", "w") as f: for output in outputs: prompt = output.prompt generated_text = output.outputs[0].text f.write(f"Prompt: {prompt!r}, Generated text: {generated_text!r}\n") print(f"Wrote {len(outputs)} to disk.")
Dockerfile
बनाएं:FROM python:3.12 ADD main.py . RUN python -m pip install --upgrade pip setuptools RUN pip install vllm CMD ["python", "./main.py"]
5. जॉब को डिप्लॉय और लागू करना
इस चरण में, आपको Cloud Run सोर्स डिप्लॉय का इस्तेमाल करके Cloud Run जॉब बनाना होगा. इसके बाद, उसे लागू करना होगा. इस चरण में, नतीजों को सेव करने के लिए Cloud Run वॉल्यूम माउंट फ़्लैग भी शामिल हैं.
- Cloud Run जॉब बनाएं:
यह कमांड, सोर्स से इमेज बनाता है और जॉब को डिप्लॉय करता है. इसे पूरा होने में कुछ समय लगेगा.gcloud beta run jobs deploy inference-job \ --region $REGION \ --source . \ --gpu=1 \ --set-secrets HF_TOKEN=${SECRET_ID}:latest \ --add-volume name=results,type=cloud-storage,bucket=${BUCKET_NAME} \ --add-volume-mount volume=results,mount-path=/results \ --service-account $SERVICE_ACCOUNT_EMAIL
- जॉब को लागू करें:
जॉब पूरा होने में कुछ मिनट लगते हैं. आखिरी निर्देश के आउटपुट में दिए गए लिंक का इस्तेमाल करके, स्थिति देखी जा सकती है.gcloud run jobs execute inference-job --region $REGION --async
पुष्टि हो गई
यह पुष्टि करने के लिए कि आपकी जॉब पूरी हो गई है, आखिरी कमांड के आउटपुट की तरह ही जॉब के लॉग देखें.
Cloud Storage बकेट में नतीजे देखें:
कंसोल में:
- Cloud Storage पर जाएं.
inference-codelab
से शुरू होने वाली बकेट चुनें.output.txt
चुनें.- ब्राउज़र में कॉन्टेंट देखने के लिए, पुष्टि किया गया यूआरएल पर क्लिक करें.
फ़ाइल में चार प्रॉम्प्ट और उनके आउटपुट होने चाहिए.
6. बधाई हो!
कोडलैब पूरा करने के लिए बधाई!
हमारा सुझाव है कि आप Cloud Run के दस्तावेज़ देखें.
हमने क्या-क्या कवर किया है
- Cloud Run Jobs GPU का इस्तेमाल करके, एक साथ कई इनफ़रेंस करने का तरीका
- Cloud Run के वॉल्यूम माउंट का इस्तेमाल करके, Cloud Storage में डेटा लिखने का तरीका
7. व्यवस्थित करें
Cloud Run जॉब मिटाने के लिए, https://console.cloud.google.com/run पर Cloud Run Cloud Console में जाएं और inference-job
जॉब मिटाएं.
पूरे प्रोजेक्ट को मिटाने के लिए, संसाधन मैनेज करें पर जाएं. इसके बाद, दूसरे चरण में बनाया गया प्रोजेक्ट चुनें और 'मिटाएं' को चुनें. प्रोजेक्ट मिटाने पर, आपको अपने Cloud SDK में प्रोजेक्ट बदलने होंगे. gcloud projects list
चलाकर, सभी उपलब्ध प्रोजेक्ट की सूची देखी जा सकती है.