1. Pengantar
Ringkasan
Cloud Run baru-baru ini menambahkan dukungan GPU. Video ini tersedia sebagai pratinjau publik dalam daftar tunggu. Jika Anda tertarik untuk mencoba fitur ini, isi formulir ini untuk bergabung ke daftar tunggu. Cloud Run adalah platform container di Google Cloud yang memudahkan Anda menjalankan kode dalam container, tanpa perlu mengelola cluster.
Saat ini, GPU yang kami sediakan adalah GPU Nvidia L4 dengan vRAM 24 GB. Ada satu GPU per instance Cloud Run, dan penskalaan otomatis Cloud Run masih berlaku. Hal ini meliputi penyebaran skala hingga 5 instance (dengan penambahan kuota yang tersedia), serta memperkecil skala hingga nol instance saat tidak ada permintaan.
Salah satu kasus penggunaan untuk GPU adalah menjalankan model bahasa besar (LLM) terbuka Anda sendiri. Tutorial ini memandu Anda dalam men-deploy layanan yang menjalankan LLM.
Layanan ini adalah layanan backend yang menjalankan vLLM, mesin inferensi untuk sistem produksi. Codelab ini menggunakan Gemma 2 Google dengan model yang disesuaikan dengan petunjuk sebanyak 2 miliar parameter.
Yang akan Anda pelajari
- Cara menggunakan GPU di Cloud Run.
- Cara menggunakan Wajah Memeluk untuk mengambil model.
- Cara men-deploy model Google yang disesuaikan dengan instruksi Gemma 2 2b di Cloud Run menggunakan vLLM sebagai mesin inferensi.
- Cara memanggil layanan backend untuk melakukan penyelesaian kalimat.
2. Penyiapan dan Persyaratan
Prasyarat
- Anda sudah login ke Konsol Cloud.
- Anda sebelumnya telah men-deploy layanan Cloud Run. Misalnya, Anda dapat mengikuti men-deploy layanan web dari panduan memulai kode sumber untuk memulai.
- Anda memiliki akun Hugging Face dan telah mengonfirmasi lisensi Gemma 2 2b di https://huggingface.co/google/gemma-2-2b-it; jika tidak, Anda tidak akan dapat mengunduh model.
- Anda telah membuat token akses yang memiliki akses ke model google/gemma-2-2b-it.
Mengaktifkan Cloud Shell
- Dari Cloud Console, klik Aktifkan Cloud Shell .
Jika ini pertama kalinya Anda memulai Cloud Shell, Anda akan melihat layar perantara yang menjelaskan apa itu Cloud Shell. Jika Anda melihat layar perantara, klik Lanjutkan.
Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.
Mesin virtual ini dimuat dengan semua alat pengembangan yang diperlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan dengan browser.
Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda telah diautentikasi dan project sudah ditetapkan ke project ID Anda.
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list
Output perintah
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:
gcloud config list project
Output perintah
[core] project = <PROJECT_ID>
Jika tidak, Anda dapat menyetelnya dengan perintah ini:
gcloud config set project <PROJECT_ID>
Output perintah
Updated property [core/project].
3. Mengaktifkan API dan Menetapkan Variabel Lingkungan
Mengaktifkan API
Sebelum Anda dapat mulai menggunakan codelab ini, ada beberapa API yang perlu Anda aktifkan. Codelab ini memerlukan penggunaan API berikut. Anda dapat mengaktifkan API tersebut dengan menjalankan perintah berikut:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com \ secretmanager.googleapis.com \ artifactregistry.googleapis.com
Menyiapkan variabel lingkungan
Anda dapat menetapkan variabel lingkungan yang akan digunakan di seluruh codelab ini.
HF_TOKEN=<YOUR_HUGGING_FACE_TOKEN> PROJECT_ID=<YOUR_PROJECT_ID> REGION=us-central1 SERVICE_NAME=vllm-gemma-2-2b-it AR_REPO_NAME=vllm-gemma-2-2b-it-repo SERVICE_ACCOUNT=vllm-gemma-2-2b-it SERVICE_ACCOUNT_ADDRESS=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
4. Membuat akun layanan
Akun layanan ini digunakan untuk membangun layanan Cloud Run dan mengakses secret dari Secret Manager.
Pertama, buat akun layanan dengan menjalankan perintah ini:
gcloud iam service-accounts create $SERVICE_ACCOUNT \ --display-name="Cloud Run vllm SA to access secrete manager"
Kedua, berikan peran Vertex AI User ke akun layanan.
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \ --role=roles/secretmanager.secretAccessor
Sekarang, buat rahasia di {i>Secret Manager<i} bernama HF_TOKEN untuk {i>HF_TOKEN<i} untuk Token Akses Wajah Anda. Cloud Build menggunakan akun layanan untuk mengakses rahasia ini pada waktu build untuk menghapus model Gemma 2 (2B) dari Hugging Face. Anda dapat mempelajari rahasia dan Cloud Build lebih lanjut di sini.
printf $HF_TOKEN | gcloud secrets create HF_TOKEN --data-file=-
Dan berikan akses akun layanan ke secret HF_TOKEN di Secret Manager.
gcloud secrets add-iam-policy-binding HF_TOKEN \ --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \ --role='roles/secretmanager.secretAccessor'
5. Buat image di Artifact Registry
Pertama, buat repositori di Artifact Registry.
gcloud artifacts repositories create $AR_REPO_NAME \ --repository-format docker \ --location us-central1
Selanjutnya, buat Dockerfile
yang akan menyertakan rahasia dari Secret Manager. Anda dapat mempelajari lebih lanjut flag Docker buildx –secrets di sini.
FROM vllm/vllm-openai:latest ENV HF_HOME=/model-cache RUN --mount=type=secret,id=HF_TOKEN HF_TOKEN=$(cat /run/secrets/HF_TOKEN) \ huggingface-cli download google/gemma-2-2b-it ENV HF_HUB_OFFLINE=1 ENTRYPOINT python3 -m vllm.entrypoints.openai.api_server \ --port ${PORT:-8000} \ --model ${MODEL_NAME:-google/gemma-2-2b-it} \ ${MAX_MODEL_LEN:+--max-model-len "$MAX_MODEL_LEN"}
Sekarang buat file cloudbuild.yaml
steps: - name: 'gcr.io/cloud-builders/docker' id: build entrypoint: 'bash' secretEnv: ['HF_TOKEN'] args: - -c - | SECRET_TOKEN="$$HF_TOKEN" docker buildx build --tag=${_IMAGE} --secret id=HF_TOKEN . availableSecrets: secretManager: - versionName: 'projects/${PROJECT_ID}/secrets/HF_TOKEN/versions/latest' env: 'HF_TOKEN' images: ["${_IMAGE}"] substitutions: _IMAGE: 'us-central1-docker.pkg.dev/${PROJECT_ID}/vllm-gemma-2-2b-it-repo/vllm-gemma-2-2b-it' options: dynamicSubstitutions: true machineType: "E2_HIGHCPU_32"
Terakhir, kirimkan build.
gcloud builds submit --config=cloudbuild.yaml
Build sekitar 8 menit.
6. Men-deploy layanan
Sekarang Anda siap men-deploy image ke Cloud Run.
gcloud beta run deploy $SERVICE_NAME \ --image=us-central1-docker.pkg.dev/$PROJECT_ID/$AR_REPO_NAME/$SERVICE_NAME \ --service-account $SERVICE_ACCOUNT_ADDRESS \ --cpu=8 \ --memory=32Gi \ --gpu=1 --gpu-type=nvidia-l4 \ --region us-central1 \ --no-allow-unauthenticated \ --max-instances 5 \ --no-cpu-throttling
Deployment dapat memerlukan waktu hingga 5 menit.
7. Menguji layanan
Setelah di-deploy, Anda dapat menggunakan Cloud Run dev proxy service yang otomatis menambahkan token ID untuk Anda atau Anda dapat melakukan curl URL layanan secara langsung.
Menggunakan layanan proxy dev Cloud Run
Untuk menggunakan layanan proxy dev Cloud Run, Anda dapat menggunakan langkah-langkah berikut:
Pertama, jalankan perintah berikut
gcloud run services proxy $SERVICE_NAME --region us-central1
Berikutnya, lakukan curl layanan
curl -X POST http://localhost:8080/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "google/gemma-2-2b-it", "prompt": "Cloud Run is a", "max_tokens": 128, "temperature": 0.90 }'
Menggunakan URL layanan secara langsung
Pertama, ambil URL untuk layanan yang di-deploy.
SERVICE_URL=$(gcloud run services describe $SERVICE_NAME --region $REGION --format 'value(status.url)')
Melakukan curl layanan
curl -X POST $SERVICE_URL/v1/completions \ -H "Authorization: bearer $(gcloud auth print-identity-token)" \ -H "Content-Type: application/json" \ -d '{ "model": "google/gemma-2-2b-it", "prompt": "Cloud Run is a", "max_tokens": 128, "temperature": 0.90 }'
Hasil
Anda akan melihat hasil yang mirip dengan yang berikut ini:
{"id":"cmpl-e0e6924d4bfd4d918383c87cba5e25ac","object":"text_completion","created":1723853023,"model":"google/gemma-2-2b","choices":[{"index":0,"text":" serverless compute platform that lets you write your backend code in standard languages, such as Java, Go, PHP and Python.\n\nYou can deploy your function as a REST API that scales on demand and allows you to add additional security features such as HTTPS.\n\nTo write code for an Android app with Cloud Run, you need to use the GraalVM. This is because while Node.js is a more commonly known node-based platform, GraalVM is a virtual machine (VM) to run native code in the Cloud Run environment.\n\nNow you need graal.vm/java-11-jre.jar, the","logprobs":null,"finish_reason":"length","stop_reason":null}],"usage":{"prompt_tokens":5,"total_tokens":133,"completion_tokens":128}}
8. Selamat!
Selamat, Anda telah menyelesaikan codelab!
Sebaiknya tinjau dokumentasi Cloud Run
Yang telah kita bahas
- Cara menggunakan GPU di Cloud Run.
- Cara menggunakan Wajah Memeluk untuk mengambil model.
- Cara men-deploy model Gemma 2 (2B) Google di Cloud Run menggunakan vLLM sebagai mesin inferensi.
- Cara memanggil layanan backend untuk melakukan penyelesaian kalimat.
9. Pembersihan
Untuk menghindari tagihan yang tidak disengaja, (misalnya, jika layanan Cloud Run secara tidak sengaja dipanggil lebih sering daripada alokasi panggilan Cloud Run bulanan Anda di paket gratis), Anda dapat menghapus Cloud Run atau menghapus project yang Anda buat di Langkah 2.
Untuk menghapus layanan Cloud Run, buka Konsol Cloud Cloud Run di https://console.cloud.google.com/run dan hapus layanan vllm-gemma-2-2b
. Anda juga dapat menghapus akun layanan vllm-gemma-2-2b
.
Jika memilih untuk menghapus seluruh project, Anda dapat membuka https://console.cloud.google.com/cloud-resource-manager, pilih project yang dibuat pada Langkah 2, lalu pilih Hapus. Jika project dihapus, Anda harus mengubah project di Cloud SDK. Anda dapat melihat daftar semua project yang tersedia dengan menjalankan gcloud projects list
.