1. Giriş
Genel Bakış
Bu codelab'de, Cloud Run Jobs GPU tarafından desteklenen Meta'nın Llama 3.2-1b LLM ve vLLM'yi 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 yazarsınız.
Neler öğreneceksiniz?
- Cloud Run Jobs GPU'yu 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 kod laboratuvarını kullanmaya başlamadan önce aşağıdaki API'leri etkinleştirmek için:
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. Cloud Run Admin API kapsamındaki kota nvidia_l4_gpu_allocation_no_zonal_redundancy
'tü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.
Kucak açan yüz
Bu codelab'de, Hugging Face'ta barındırılan bir model kullanılır. Bu modeli almak için "Okuma" izniyle Hugging Face kullanıcı erişim jetonunu isteyin. Buna daha sonra YOUR_HF_TOKEN
olarak referans vereceksiniz.
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ı ayarlamayla ilgili talimatlar yer almaktadır:
- IAM hizmet hesabı ve ilişkili IAM izinleri.
- Hugging Face jetonunuzu depolamak için Secret Manager gizli anahtarı.
- Çıkarsama sonucunuzu depolamak için bir 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 ayarlanmış modelinizi barındıracak 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'tan Llama modelini içe aktarır.
- Modelde toplu çıkarım gerçekleştirir. İş bu işlem için tek bir L4 GPU kullanır.
- Sonuçları yerel diske yazar. Bu veriler, birim bağlama işlemleri aracılığıyla Cloud Storage'a yazılır.
Cloud Run işini ve Dockerfile dosyasını oluşturmak için aşağıdaki adımları uygulayın:
- İnce ayar iş kodunuzu barındıracak bir dizin oluşturun:
mkdir codelab-inference-job cd codelab-inference-job
main.py
adlı 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.")
Dockerfile
oluşturun: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şturup 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, resmi kaynaktan oluşturur ve işi dağıtır. Bu işlemin tamamlanması biraz zaman alacaktır.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
- İşi yürütün:
İşin tamamlanması birkaç dakika sürer. Son komutun çıktısında verilen bağlantıyı kullanarak durumu 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-codelab
ile başlayan paketi seçin.output.txt
seçeneğini belirleyin.- İçerikleri 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'yu 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 adresindeki 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ızdaki projeleri değiştirmeniz gerekir. gcloud projects list
komutunu çalıştırarak mevcut tüm projelerin listesini görüntüleyebilirsiniz.