1. Giriş
Genel Bakış
Bu codelab'de, Cloud Run Jobs GPU tarafından desteklenen Meta'nın Llama 3.2-1b LLM'si ve vLLM kullanarak toplu çıkarım çalıştırmak için Cloud Run işlerini kullanacaksınız. Sonuçları Cloud Run birim bağlamalarını kullanarak doğrudan Cloud Storage'a yazacaksınız.
Neler öğreneceksiniz?
- Cloud Run Jobs GPU kullanarak toplu çıkarım yapma
- Cloud Run birim bağlamalarını kullanarak Cloud Storage'a yazma
2. Başlamadan önce
API'leri etkinleştir
Bu codelab'i kullanmaya başlamadan önce aşağıdaki API'leri etkinleştirin:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com
GPU kotası
Desteklenen bir bölge için kota artışı isteğinde bulunun. Kota, Cloud Run Admin API altında nvidia_l4_gpu_allocation_no_zonal_redundancy'dır.
Not: Yeni bir proje kullanıyorsanız API'nin etkinleştirilmesi ile kotaların bu sayfada görünmesi arasında birkaç dakika geçebilir.
Hugging Face
Bu codelab'de Hugging Face'te barındırılan bir model kullanılır. Bu modeli edinmek için "Okuma" izniyle Hugging Face kullanıcı erişim jetonu isteğinde bulunun. Bunu daha sonra YOUR_HF_TOKEN olarak referans alacaksınız.
Modeli kullanmak için kullanım şartlarını da kabul etmeniz gerekir: https://huggingface.co/meta-llama/Llama-3.2-1B
3. Kurulum ve Gereksinimler
Bu bölümde, aşağıdaki kaynakların ayarlanmasıyla ilgili talimatlar yer almaktadır:
- IAM hizmet hesabı ve ilişkili IAM izinleri.
- Hugging Face jetonunuzu depolamak için Secret Manager gizli anahtarı.
- Çıkarım sonucunuzu depolamak için Cloud Storage paketi.
Gerekli kaynakları ayarlamak için aşağıdaki adımları uygulayın:
- Bu codelab için ortam değişkenlerini ayarlayın:
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} - Aşağıdaki komutu çalıştırarak hizmet hesabını oluşturun:
gcloud iam service-accounts create ${SERVICE_ACCOUNT} \ --display-name="Service account for batch inference codelab" - Hugging Face erişim jetonunu depolamak için Secret Manager'ı kullanın:
gcloud secrets create $SECRET_ID \ --replication-policy="automatic" printf $HF_TOKEN | gcloud secrets versions add $SECRET_ID --data-file=- - Hizmet hesabınıza Secret Manager Gizli Anahtar Erişeni rolünü verin:
gcloud secrets add-iam-policy-binding $SECRET_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role='roles/secretmanager.secretAccessor' - İnce ayarlı modelinizi barındırmak için bir paket oluşturun:
gcloud storage buckets create -l us-central1 gs://${BUCKET_NAME} - Hizmet hesabınıza pakete erişim izni verin:
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \ --member=serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role=roles/storage.objectAdmin - Container görüntüsünü depolamak için bir Artifact Registry deposu oluşturun. Projenizde daha önce Cloud Run kaynak dağıtımlarını kullandıysanız bu adımı atlayın.
gcloud artifacts repositories create cloud-run-source-deploy \ --repository-format=docker \ --location=$REGION \ --project=$PROJECT_ID
4. Cloud Run işini oluşturma
Bu bölümde, aşağıdakileri yapan kodu oluşturacaksınız:
- Hugging Face'ten Llama modelini içe aktarır.
- Model üzerinde toplu çıkarım gerçekleştirir. İşlemde tek bir L4 GPU kullanılır.
- Sonuçları yerel diske yazar. Bu, birim bağlamaları aracılığıyla Cloud Storage'a yazılır.
Cloud Run işi ve Dockerfile oluşturmak için aşağıdaki adımları uygulayın:
- İnce ayar işi kodunuzu barındıracak bir dizin oluşturun:
mkdir codelab-inference-job cd codelab-inference-job main.pyadlı bir dosya oluşturun.# 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.")Dockerfileoluşturma:FROM python:3.12 ADD main.py . RUN python -m pip install --upgrade pip setuptools RUN pip install vllm CMD ["python", "./main.py"]
5. İşi dağıtma ve yürütme
Bu adımda, Cloud Run kaynak dağıtımını kullanarak Cloud Run işini oluşturacak ve ardından yürüteceksiniz. Bu adımda, sonuçları depolamak için Cloud Run birim bağlama işaretleri de yer alır.
- Cloud Run işini oluşturun:
Bu komut, görüntüyü kaynaktan oluşturur ve işi dağıtır. Bu işlemin tamamlanması biraz zaman alabilir.gcloud 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 - İşi yürütün:
İşlemin tamamlanması birkaç dakika sürer. Durumu, son komutun çıktısında verilen bağlantıyı kullanarak kontrol edebilirsiniz.gcloud run jobs execute inference-job --region $REGION --async
Başarıyı onaylama
İşinizin başarıyla yürütüldüğünü onaylamak için son komutun çıkışında olduğu gibi işin günlüklerini görüntüleyin.
Sonuçları Cloud Storage paketinde kontrol edin:
Konsolda:
- Cloud Storage'a gidin.
inference-codelabile başlayan paketi seçin.output.txtseçeneğini belirleyin.- İçeriği tarayıcıda görüntülemek için Kimliği doğrulanmış URL'yi tıklayın.
Dosyanın içeriği, dört istem ve bunların çıkışları olmalıdır.
6. Tebrikler!
Codelab'i tamamladığınız için tebrikler.
Cloud Run belgelerini incelemenizi öneririz.
İşlediğimiz konular
- Cloud Run Jobs GPU kullanarak toplu çıkarım yapma
- Cloud Run birim bağlamalarını kullanarak Cloud Storage'a yazma
7. Temizleme
Cloud Run işini silmek için https://console.cloud.google.com/run adresinden Cloud Run Cloud Console'a gidin ve inference-job işini silin.
Projenin tamamını silmek için Kaynakları Yönet'e gidin, 2. adımda oluşturduğunuz projeyi seçin ve Sil'i tıklayın. Projeyi silerseniz Cloud SDK'nızda projeleri değiştirmeniz gerekir. gcloud projects list komutunu çalıştırarak kullanılabilir tüm projelerin listesini görüntüleyebilirsiniz.