1. Pengantar
Ringkasan
Dalam codelab ini, Anda akan menggunakan tugas Cloud Run untuk menjalankan inferensi batch menggunakan LLM Llama 3.2-1b Meta dan vLLM yang didukung oleh GPU Tugas Cloud Run. Anda akan menulis hasilnya langsung ke Cloud Storage menggunakan mount volume Cloud Run.
Yang akan Anda pelajari
- Cara melakukan inferensi batch menggunakan GPU Tugas Cloud Run
- Cara menulis ke Cloud Storage menggunakan pemasangan volume Cloud Run
2. Sebelum memulai
Mengaktifkan API
Sebelum Anda dapat mulai menggunakan codelab ini, aktifkan API berikut dengan menjalankan:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com
Kuota GPU
Meminta penambahan kuota untuk region yang didukung. Kuotanya adalah nvidia_l4_gpu_allocation_no_zonal_redundancy
, di bagian Cloud Run Admin API.
Catatan: Jika Anda menggunakan project baru, mungkin perlu waktu beberapa menit antara mengaktifkan API dan menampilkan kuota di halaman ini.
Wajah Memeluk
Codelab ini menggunakan model yang dihosting di Hugging Face. Untuk mendapatkan model ini, minta token akses pengguna Hugging Face dengan izin "Baca". Anda akan mereferensikannya nanti sebagai YOUR_HF_TOKEN
.
Anda juga harus menyetujui persyaratan penggunaan untuk menggunakan model: https://huggingface.co/meta-llama/Llama-3.2-1B
3. Penyiapan dan Persyaratan
Bagian ini berisi petunjuk untuk menyiapkan resource berikut:
- Akun layanan IAM dan izin IAM terkait.
- Secret Secret Manager untuk menyimpan token Hugging Face Anda.
- Bucket Cloud Storage untuk menyimpan hasil inferensi Anda.
Untuk menyiapkan resource yang diperlukan, ikuti langkah-langkah berikut:
- Tetapkan variabel lingkungan untuk codelab ini:
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}
- Buat akun layanan dengan menjalankan:
gcloud iam service-accounts create ${SERVICE_ACCOUNT} \ --display-name="Service account for batch inference codelab"
- Gunakan Secret Manager untuk menyimpan token akses Hugging Face:
gcloud secrets create $SECRET_ID \ --replication-policy="automatic" printf $HF_TOKEN | gcloud secrets versions add $SECRET_ID --data-file=-
- Berikan peran Secret Manager Secret Accessor ke akun layanan Anda:
gcloud secrets add-iam-policy-binding $SECRET_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role='roles/secretmanager.secretAccessor'
- Buat bucket untuk menghosting model yang telah di-fine-tune:
gcloud storage buckets create -l us-central1 gs://${BUCKET_NAME}
- Berikan akses akun layanan Anda ke bucket:
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \ --member=serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role=roles/storage.objectAdmin
- Buat repositori Artifact Registry untuk menyimpan image container. Jika Anda telah menggunakan deployment sumber Cloud Run sebelumnya di project, lewati langkah ini.
gcloud artifacts repositories create cloud-run-source-deploy \ --repository-format=docker \ --location=$REGION \ --project=$PROJECT_ID
4. Membuat tugas Cloud Run
Di bagian ini, Anda akan membuat kode yang melakukan hal berikut:
- Mengimpor model Llama dari Hugging Face
- Melakukan inferensi batch pada model. Tugas ini menggunakan satu GPU L4 untuk proses ini.
- Menulis hasil ke disk lokal. Data ini ditulis ke Cloud Storage melalui pemasangan volume.
Untuk membuat tugas Cloud Run dan Dockerfile, ikuti langkah-langkah berikut:
- Buat direktori untuk menghosting kode tugas penyesuaian Anda:
mkdir codelab-inference-job cd codelab-inference-job
- Buat file bernama
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.")
- Buat
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. Men-deploy dan menjalankan tugas
Pada langkah ini, Anda akan membuat tugas Cloud Run menggunakan deployment sumber Cloud Run, lalu menjalankannya. Langkah ini juga mencakup flag pemasangan volume Cloud Run untuk menyimpan hasil.
- Buat Tugas Cloud Run:
Perintah ini mem-build image dari sumber dan men-deploy tugas. Proses ini akan memerlukan waktu beberapa saat.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
- Jalankan tugas:
Tugas ini memerlukan waktu beberapa menit hingga selesai. Anda dapat memeriksa statusnya menggunakan link yang diberikan dalam output perintah terakhir.gcloud run jobs execute inference-job --region $REGION --async
Mengonfirmasi keberhasilan
Untuk mengonfirmasi bahwa tugas Anda berhasil dieksekusi, lihat log tugas seperti dalam output perintah terakhir.
Periksa hasilnya di bucket Cloud Storage:
Di konsol:
- Buka Cloud Storage.
- Pilih bucket yang diawali dengan
inference-codelab
. - Pilih
output.txt
. - Klik Authenticated URL untuk melihat konten di browser.
Konten file harus berupa empat perintah dan output-nya.
6. Selamat!
Selamat, Anda telah menyelesaikan codelab.
Sebaiknya tinjau dokumentasi Cloud Run.
Yang telah kita bahas
- Cara melakukan inferensi batch menggunakan GPU Tugas Cloud Run
- Cara menulis ke Cloud Storage menggunakan pemasangan volume Cloud Run
7. Pembersihan
Untuk menghapus tugas Cloud Run, buka Konsol Cloud Cloud Run di https://console.cloud.google.com/run, lalu hapus tugas inference-job
.
Untuk menghapus seluruh project, buka Manage Resources, pilih project yang Anda buat di Langkah 2, lalu pilih Delete. Jika menghapus project, Anda harus mengubah project di Cloud SDK. Anda dapat melihat daftar semua project yang tersedia dengan menjalankan gcloud projects list
.