1. Pengantar
Ringkasan
Cloud Run baru-baru ini menambahkan dukungan GPU. Fitur 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 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 file bantuan untuk menyalurkan 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 file bantuan yang menyajikan model Gemma 2 2B
- Cara men-deploy WebUI Terbuka sebagai container masuk 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 memerlukan 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. Membuat Bucket GCS untuk menyimpan model Gemma 2 2B
Pertama, Anda harus 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 port 11434.
Buka jendela terminal kedua untuk menarik model Gemma 2 2B ke bawah
ollama pull gemma2:2b
(Opsional) Anda dapat berinteraksi dengan Gemma dari baris perintah dengan menjalankan
ollama run gemma2:2b
Setelah selesai chat 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. Membuat gambar Ollama
Buat dockerfile dengan konten berikut
FROM 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 # Store the model weights in the container image ENV MODEL gemma2:2b RUN ollama serve & sleep 5 && ollama pull $MODEL # Start Ollama ENTRYPOINT ["ollama", "serve"]
Buat repo 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
Membangun gambar file bantuan 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. Membuat gambar frontend Open WebUI
Di bagian ini, Anda akan membuat container masuk frontend menggunakan Open WebUI.
Gunakan Docker untuk menarik gambar Open WebUI ke bawah.
docker pull ghcr.io/open-webui/open-webui:main
Kemudian, konfigurasikan Docker agar menggunakan kredensial Google Cloud Anda untuk melakukan autentikasi dengan Artifact Registry. Tindakan ini akan memungkinkan Anda menggunakan docker untuk mengirim image ke repo Artifact Registry.
gcloud auth configure-docker us-central1-docker.pkg.dev
Beri tag pada image, 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 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 Select a model, pilih Gemma 2 2B.
Sekarang ajukan pertanyaan kepada Gemma, misalnya "Mengapa 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 file bantuan yang menyajikan model Gemma 2 2B
- Cara men-deploy WebUI Terbuka sebagai container masuk frontend
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 fungsi Cloud Run, buka Konsol Cloud Cloud Run di https://console.cloud.google.com/run, lalu hapus layanan ollama-sidecar-codelab
.
Jika 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 project dihapus, Anda harus mengubah project di Cloud SDK. Anda dapat melihat daftar semua project yang tersedia dengan menjalankan gcloud projects list
.