1. Pengantar
Ringkasan
Cloud Run baru-baru ini menambahkan dukungan GPU. Fitur ini tersedia sebagai pratinjau publik yang memerlukan pendaftaran dalam daftar tunggu. Jika Anda tertarik untuk mencoba fitur ini, isi formulir ini untuk bergabung dalam daftar tunggu. Cloud Run adalah platform container di Google Cloud yang memudahkan Anda menjalankan kode dalam container, tanpa mengharuskan Anda 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 tetap berlaku. Hal ini mencakup penskalaan hingga 5 instance (dengan peningkatan kuota yang tersedia), serta penskalaan ke nol instance saat tidak ada permintaan.
Salah satu kasus penggunaan GPU adalah menjalankan model bahasa besar (LLM) terbuka Anda sendiri. Tutorial ini akan memandu Anda men-deploy layanan yang menjalankan LLM.
Dalam codelab ini, Anda akan men-deploy layanan multi-container yang menggunakan Open WebUI sebagai container ingress frontend dan menggunakan Ollama di sidecar untuk menayangkan model Gemma 2 2B yang disimpan di bucket Google Cloud Storage.
Yang akan Anda pelajari
- Cara membuat layanan multi-container di Cloud Run
- Cara men-deploy Ollama sebagai sidecar yang melayani model Gemma 2 2B
- Cara men-deploy Open WebUI sebagai container ingress frontend
2. Menetapkan Variabel Lingkungan dan Mengaktifkan API
Mengupgrade gcloud CLI
Pertama, Anda harus menginstal gcloud CLI versi terbaru. Anda dapat mengupdate CLI dengan menjalankan perintah berikut:
gcloud components update
Menyiapkan variabel lingkungan
Anda dapat menetapkan variabel lingkungan yang akan digunakan di seluruh codelab ini.
PROJECT_ID=<YOUR_PROJECT_ID> REGION=us-central1 gcloud config set project $PROJECT_ID
Mengaktifkan API
Sebelum Anda dapat mulai menggunakan codelab ini, ada beberapa API yang perlu diaktifkan. Codelab ini mengharuskan penggunaan API berikut. Anda dapat mengaktifkan API tersebut dengan menjalankan perintah berikut:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
storage.googleapis.com \
artifactregistry.googleapis.com
Buat direktori untuk codelab ini.
mkdir ollama-sidecar-codelab cd ollama-sidecar-codelab
3. Buat Bucket GCS untuk menyimpan model Gemma 2 2B
Pertama, Anda akan menginstal Ollama untuk mendownload model. Tindakan ini akan mendownload model ke /home/$USER/.ollama/models
curl -fsSL https://ollama.com/install.sh | sh
Sekarang jalankan ollama dengan menjalankan
ollama serve
Ollama mulai memproses di port 11434.
Buka jendela terminal kedua untuk mendownload model Gemma 2 2B ke
ollama pull gemma2:2b
(Opsional) Anda dapat berinteraksi dengan Gemma dari command line dengan menjalankan
ollama run gemma2:2b
Setelah selesai melakukan percakapan dengan Gemma, Anda dapat keluar dengan mengetik
/bye
4. Membuat Bucket Storage
Setelah model didownload, Anda dapat memindahkan model ke bucket GCS.
Pertama, buat bucket.
gcloud storage buckets create gs://$PROJECT_ID-gemma2-2b-codelab
Sekarang, pindahkan folder model ke GCS.
gsutil cp -r /home/$USER/.ollama/models gs://$PROJECT_ID-gemma2-2b-codelab
5. Buat image Ollama
Buat dockerfile dengan konten berikut
FROM --platform=linux/amd64 ollama/ollama # Listen on all interfaces, port 11434 ENV OLLAMA_HOST 0.0.0.0:11434 # Store model weight files in /models ENV OLLAMA_MODELS /models # Reduce logging verbosity ENV OLLAMA_DEBUG false # Never unload model weights from the GPU ENV OLLAMA_KEEP_ALIVE -1
Buat repositori Artifact Registry untuk menyimpan image layanan Anda.
gcloud artifacts repositories create ollama-sidecar-codelab-repo --repository-format=docker \
--location=us-central1 --description="Ollama + OpenWebUI website demo" \
--project=$PROJECT_ID
Bangun image sidecar ollama
gcloud builds submit \
--tag us-central1-docker.pkg.dev/$PROJECT_ID/ollama-sidecar-codelab-repo/ollama-gemma-2b \
--machine-type e2-highcpu-32
6. Buat image frontend Open WebUI
Di bagian ini, Anda akan membuat container ingress frontend menggunakan Open WebUI.
Gunakan Docker untuk menarik image Open WebUI.
docker pull ghcr.io/open-webui/open-webui:main
Kemudian, konfigurasi Docker agar menggunakan kredensial Google Cloud Anda untuk melakukan autentikasi dengan Artifact Registry. Dengan demikian, Anda dapat menggunakan docker untuk mengirim image ke repo Artifact Registry.
gcloud auth configure-docker us-central1-docker.pkg.dev
Beri tag pada image Anda, lalu kirim ke Artifact Registry.
docker tag ghcr.io/open-webui/open-webui:main us-central1-docker.pkg.dev/$PROJECT_ID/ollama-sidecar-codelab-repo/openwebui docker push us-central1-docker.pkg.dev/$PROJECT_ID/ollama-sidecar-codelab-repo/openwebui
7. Men-deploy layanan multi-container ke Cloud Run
Menggunakan file yaml untuk men-deploy layanan multi-container
Buat service.yaml dengan konten berikut.
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: ollama-sidecar-codelab
labels:
cloud.googleapis.com/location: us-central1
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/maxScale: '5'
run.googleapis.com/cpu-throttling: 'false'
run.googleapis.com/startup-cpu-boost: 'true'
run.googleapis.com/container-dependencies: '{"openwebui":["ollama-sidecar"]}'
spec:
containerConcurrency: 80
timeoutSeconds: 300
containers:
- name: openwebui
image: us-central1-docker.pkg.dev/YOUR_PROJECT_ID/ollama-sidecar-codelab/openwebui
ports:
- name: http1
containerPort: 8080
env:
- name: OLLAMA_BASE_URL
value: http://localhost:11434
- name: WEBUI_AUTH
value: 'false'
resources:
limits:
memory: 1Gi
cpu: 2000m
volumeMounts:
- name: in-memory-1
mountPath: /app/backend/data
startupProbe:
timeoutSeconds: 240
periodSeconds: 240
failureThreshold: 1
tcpSocket:
port: 8080
- name: ollama-sidecar
image: us-central1-docker.pkg.dev/YOUR_PROJECT_ID/ollama-sidecar-codelab/ollama-gemma-2b
env:
- name: OLLAMA_MODELS
value: /root/.ollama/models
resources:
limits:
cpu: '6'
nvidia.com/gpu: '1'
memory: 16Gi
volumeMounts:
- name: gcs-1
mountPath: /root/.ollama
startupProbe:
timeoutSeconds: 1
periodSeconds: 10
failureThreshold: 3
tcpSocket:
port: 11434
volumes:
- name: gcs-1
csi:
driver: gcsfuse.run.googleapis.com
volumeAttributes:
bucketName: YOUR_PROJECT_ID-gemma2-2b-codelab
- name: in-memory-1
emptyDir:
medium: Memory
sizeLimit: 10Gi
nodeSelector:
run.googleapis.com/accelerator: nvidia-l4
Perbarui service.yaml untuk mengganti PROJECT_ID dengan project ID Anda:
sed -i "s/YOUR_PROJECT_ID/${PROJECT_ID}/g" service.yaml
Deploy ke Cloud Run menggunakan perintah berikut.
gcloud beta run services replace service.yaml
Menguji layanan Cloud Run
Sekarang buka URL Layanan di browser web Anda.
Setelah UI selesai dimuat, di bagian Pilih model, pilih Gemma 2 2B.
Sekarang ajukan pertanyaan kepada Gemma, misalnya "Kenapa langit berwarna biru?"
8. Selamat!
Selamat, Anda telah menyelesaikan codelab.
Sebaiknya tinjau dokumentasi tentang fungsi Cloud Run
Yang telah kita bahas
- Cara membuat layanan multi-container di Cloud Run
- Cara men-deploy Ollama sebagai sidecar yang melayani model Gemma 2 2B
- Cara men-deploy Open WebUI sebagai container ingress frontend
9. Pembersihan
Untuk menghindari biaya yang tidak disengaja (misalnya, jika layanan Cloud Run tidak sengaja dipanggil lebih banyak kali daripada alokasi pemanggilan Cloud Run bulanan Anda di tingkat gratis), Anda dapat menghapus Cloud Run atau menghapus project yang Anda buat di Langkah 2.
Untuk menghapus fungsi Cloud Run, buka Konsol Cloud Run di https://console.cloud.google.com/run, lalu hapus layanan ollama-sidecar-codelab.
Jika Anda memilih untuk menghapus seluruh project, Anda dapat membuka https://console.cloud.google.com/cloud-resource-manager, memilih project yang Anda buat di Langkah 2, lalu memilih Hapus. Jika menghapus project, Anda harus mengubah project di Cloud SDK. Anda dapat melihat daftar semua project yang tersedia dengan menjalankan gcloud projects list.