Panduan ini menunjukkan cara menyalurkan model bahasa besar (LLM) Gemma menggunakan Tensor Processing Unit (TPU) di Google Kubernetes Engine (GKE) dengan Saxml. Dalam panduan ini, Anda mendownload petunjuk parameter 2B dan 7B yang menyesuaikan model Gemma ke Cloud Storage dan men-deploy-nya di cluster Standar GKE menggunakan container yang menjalankan Saxml.
Panduan ini adalah titik awal yang bagus jika Anda membutuhkan skalabilitas, ketahanan, dan efektivitas biaya yang ditawarkan oleh fitur Kubernetes saat men-deploy model di Saxml. Jika Anda memerlukan platform AI terkelola terpadu untuk membangun dan menyajikan model ML dengan cepat dan hemat biaya, sebaiknya coba solusi deployment Vertex AI kami.
Latar belakang
Dengan menyajikan Gemma menggunakan TPU di GKE menggunakan Saxml, Anda dapat menerapkan solusi penyajian inferensi yang tangguh dan siap produksi dengan semua manfaat Kubernetes terkelola, termasuk skalabilitas yang efisien dan ketersediaan yang lebih tinggi. Bagian ini menjelaskan teknologi utama yang digunakan dalam tutorial ini.
Gemma
Gemma adalah serangkaian model AI generatif ringan yang tersedia secara terbuka yang dirilis dengan lisensi terbuka. Model AI ini tersedia untuk berjalan di aplikasi, hardware, perangkat seluler, atau layanan yang dihosting. Anda dapat menggunakan model Gemma untuk pembuatan teks, tetapi Anda juga dapat menyesuaikan model ini untuk tugas khusus.
Untuk mempelajari lebih lanjut, lihat dokumentasi Gemma.
TPU
TPU adalah sirkuit terintegrasi khusus aplikasi (ASIC) Google yang dikembangkan secara kustom dan digunakan untuk mempercepat framework pemrosesan data seperti TensorFlow, PyTorch, dan JAX.
Sebelum menggunakan TPU di GKE, sebaiknya selesaikan jalur pembelajaran berikut:
- Pelajari ketersediaan versi TPU saat ini dengan arsitektur sistem Cloud TPU.
- Pelajari Tentang TPU di GKE.
Tutorial ini menampilkan model Gemma 2B dan Gemma 7B. GKE menghosting model ini pada kumpulan node TPU v5e host tunggal berikut:
- Gemma 2B: Model yang disesuaikan dengan petunjuk yang dihosting di kumpulan node TPU v5e dengan topologi
1x1
yang mewakili satu chip TPU. Jenis mesin untuk node adalahct5lp-hightpu-1t
. - Gemma 7B: Model yang disesuaikan dengan petunjuk yang dihosting di kumpulan node TPU v5e dengan topologi
2x2
yang mewakili empat chip TPU. Jenis mesin untuk node adalahct5lp-hightpu-4t
.
Saxml
Saxml adalah sistem eksperimental yang menyajikan model Paxml, JAX, dan PyTorch untuk inferensi. Sistem Saxml terdiri dari komponen berikut:
- Sel Saxml atau cluster Sax: Terdiri dari server admin dan sekelompok server model. Server admin melacak server model, menetapkan model yang dipublikasikan ke server model yang akan ditayangkan, dan membantu klien menemukan server model yang melayani model tertentu yang dipublikasikan.
- Klien Saxml: Antarmuka pemrograman yang dilihat pengguna untuk sistem Saxml. Klien Saxml mencakup alat command line (saxutil) dan serangkaian library klien di Python, C++, dan Go.
Dalam tutorial ini, Anda juga menggunakan server HTTP SAxml. Server HTTP Saxml adalah server HTTP kustom yang merangkum library klien Saxml Python dan mengekspos REST API agar dapat berinteraksi dengan sistem Saxml, termasuk endpoint untuk memublikasikan, mencantumkan, membatalkan publikasi model, dan membuat prediksi.
Tujuan
Tutorial ini ditujukan bagi pelanggan AI Generatif yang menggunakan JAX, pengguna GKE baru atau yang sudah ada, ML Engineer, engineer MLOps (DevOps), atau administrator platform yang tertarik menggunakan kemampuan orkestrasi container Kubernetes untuk melayani Gemma.
Tutorial ini membahas langkah-langkah berikut:
- Siapkan cluster GKE Standard dengan topologi TPU yang direkomendasikan berdasarkan karakteristik model.
- Men-deploy komponen Saxml di GKE.
- Dapatkan dan publikasikan model parameter Gemma 2B atau Gemma 7B.
- Menayangkan dan berinteraksi dengan model yang dipublikasikan.
Arsitektur
Bagian ini menjelaskan arsitektur GKE yang digunakan dalam tutorial ini. Arsitekturnya terdiri dari cluster GKE Standard yang menyediakan TPU dan menghosting komponen Saxml untuk men-deploy dan menyalurkan model Gemma 2B atau 7B. Diagram berikut menunjukkan komponen-komponen arsitektur ini:
Arsitektur ini mencakup komponen berikut:
- Cluster zona GKE Standard.
- Kumpulan node slice TPU host tunggal yang bergantung pada model Gemma yang ingin Anda layani:
- Gemma 2B: Dikonfigurasi dengan TPU v5e dengan topologi
1x1
. Satu instance server Model Saxml dikonfigurasi untuk menggunakan kumpulan node ini. - Gemma 7B: Dikonfigurasi dengan TPU v5e dengan topologi
2x2
. Satu instance server Model Saxml dikonfigurasi untuk menggunakan kumpulan node ini.
- Gemma 2B: Dikonfigurasi dengan TPU v5e dengan topologi
- Kumpulan node CPU default tempat server Saxml Admin dan server HTTP Saxml di-deploy.
- Dua bucket Cloud Storage:
- Satu bucket Cloud Storage menyimpan status yang dikelola oleh server Admin.
- Satu bucket Cloud Storage menyimpan checkpoint model Gemma.
Arsitektur ini memiliki karakteristik berikut:
- Artifact Registry publik mengelola image container untuk komponen Saxml.
- Cluster GKE menggunakan Workload Identity Federation for GKE. Semua komponen Saxml menggunakan Workload Identity Federation yang mengintegrasikan akun Layanan IAM untuk mengakses Layanan eksternal seperti bucket Cloud Storage.
- Log yang dibuat oleh komponen Saxml akan diintegrasikan ke dalam Cloud Logging.
- Anda dapat menggunakan Cloud Monitoring untuk menganalisis metrik performa kumpulan node GKE yang dibuat oleh tutorial ini.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API yang diperlukan.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API yang diperlukan.
-
Pastikan Anda memiliki peran berikut di project: roles/container.admin, roles/iam.serviceAccountAdmin
Memeriksa peran
-
Di konsol Google Cloud, buka halaman IAM.
Buka IAM - Pilih project.
-
Di kolom Akun utama, cari baris yang berisi alamat email Anda.
Jika alamat email Anda tidak ada di kolom tersebut, berarti Anda tidak memiliki peran apa pun.
- Di kolom Peran untuk baris yang berisi alamat email Anda, periksa apakah daftar peran menyertakan peran yang diperlukan.
Memberikan peran
-
Di konsol Google Cloud, buka halaman IAM.
Buka IAM - Pilih project.
- Klik Berikan akses.
- Di kolom Akun utama baru, masukkan alamat email Anda.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
-
- Pastikan Anda memiliki kuota yang cukup untuk 5 chip TPU v5e. Dalam tutorial ini, Anda menggunakan instance sesuai permintaan.
- Buat akun Kaggle, jika Anda belum memilikinya.
Menyiapkan lingkungan untuk Gemma
Meluncurkan Cloud Shell
Dalam tutorial ini, Anda akan menggunakan Cloud Shell untuk mengelola resource yang
dihosting di Google Cloud. Cloud Shell telah diinstal dengan software yang Anda perlukan untuk tutorial ini, termasuk kubectl
dan gcloud CLI.
Di konsol Google Cloud, mulai instance Cloud Shell:
Buka Cloud ShellTetapkan variabel lingkungan default:
gcloud config set project PROJECT_ID export PROJECT_ID=$(gcloud config get project) export LOCATION=LOCATION export CLUSTER_NAME=saxml-tpu
Ganti nilai berikut:
- PROJECT_ID: ID project Google Cloud Anda.
- LOCATION: Nama zona Compute Engine tempat jenis mesin TPU v5e tersedia.
Membuat cluster GKE Standar
Di bagian ini, Anda akan membuat cluster GKE dan node pool.
Gemma 2B-it
Gunakan Cloud Shell untuk melakukan hal berikut:
Buat cluster Standar yang menggunakan Workload Identity Federation for GKE:
gcloud container clusters create ${CLUSTER_NAME} \ --enable-ip-alias \ --machine-type=e2-standard-4 \ --num-nodes=2 \ --release-channel=rapid \ --workload-pool=${PROJECT_ID}.svc.id.goog \ --location=${LOCATION}
Pembuatan cluster memerlukan waktu beberapa menit.
Buat kumpulan node TPU v5e dengan topologi
1x1
dan satu node:gcloud container node-pools create tpu-v5e-1x1 \ --cluster=${CLUSTER_NAME} \ --machine-type=ct5lp-hightpu-1t \ --num-nodes=1 \ --location=${LOCATION}
Anda menyalurkan model Gemma 2B di kumpulan node ini.
Gemma 7B-it
Gunakan Cloud Shell untuk melakukan hal berikut:
Buat cluster Standar yang menggunakan Workload Identity Federation for GKE:
gcloud container clusters create ${CLUSTER_NAME} \ --enable-ip-alias \ --machine-type=e2-standard-4 \ --num-nodes=2 \ --release-channel=rapid \ --workload-pool=${PROJECT_ID}.svc.id.goog \ --location=${LOCATION}
Pembuatan cluster memerlukan waktu beberapa menit.
Buat kumpulan node TPU v5e dengan topologi
2x2
dan satu node:gcloud container node-pools create tpu-v5e-2x2 \ --cluster=${CLUSTER_NAME} \ --machine-type=ct5lp-hightpu-4t \ --num-nodes=1 \ --location=${LOCATION}
Anda menayangkan model Gemma 7B di kumpulan node ini.
Membuat bucket Cloud Storage
Buat dua bucket Cloud Storage untuk mengelola status server Saxml Admin dan checkpoint model.
Jalankan perintah berikut di Cloud Shell:
Membuat bucket Cloud Storage untuk menyimpan konfigurasi server Admin Saxml.
gcloud storage buckets create gs://ADMIN_BUCKET_NAME
Ganti ADMIN_BUCKET_NAME dengan nama bucket Cloud Storage yang menyimpan server Admin Saxml.
Buat bucket Cloud Storage untuk menyimpan checkpoint model:
gcloud storage buckets create gs://CHECKPOINTS_BUCKET_NAME
Ganti CHECKPOINTS_BUCKET_NAME dengan nama bucket Cloud Storage yang menyimpan checkpoint model.
Mengonfigurasi akses beban kerja menggunakan Workload Identity Federation for GKE
Tetapkan Kubernetes ServiceAccount ke aplikasi dan mengonfigurasi ServiceAccount Kubernetes tersebut agar berfungsi sebagai akun layanan IAM.
Konfigurasi
kubectl
untuk berkomunikasi dengan cluster Anda:gcloud container clusters get-credentials ${CLUSTER_NAME} --location=${LOCATION}
Buat ServiceAccount Kubernetes yang akan digunakan aplikasi Anda:
gcloud iam service-accounts create wi-sax
Tambahkan binding kebijakan IAM untuk akun layanan IAM Anda agar dapat membaca dan menulis ke Cloud Storage:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member "serviceAccount:wi-sax@${PROJECT_ID}.iam.gserviceaccount.com" \ --role roles/storage.objectUser gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member "serviceAccount:wi-sax@${PROJECT_ID}.iam.gserviceaccount.com" \ --role roles/storage.insightsCollectorService
Izinkan Kubernetes ServiceAccount untuk meniru identitas akun layanan IAM dengan menambahkan binding kebijakan IAM antara dua akun layanan. Dengan binding ini, Kubernetes ServiceAccount dapat bertindak sebagai akun layanan IAM:
gcloud iam service-accounts add-iam-policy-binding wi-sax@${PROJECT_ID}.iam.gserviceaccount.com \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:${PROJECT_ID}.svc.id.goog[default/default]"
Anotasi akun layanan Kubernetes dengan alamat email akun layanan IAM:
kubectl annotate serviceaccount default \ iam.gke.io/gcp-service-account=wi-sax@${PROJECT_ID}.iam.gserviceaccount.com
Mendapatkan akses ke model
Untuk mendapatkan akses ke model Gemma untuk deployment ke GKE, Anda harus login ke platform Kaggle, menandatangani perjanjian persetujuan lisensi, dan mendapatkan token API Kaggle. Dalam tutorial ini, Anda akan menggunakan Secret Kubernetes untuk kredensial Kaggle.
Tanda tangani perjanjian izin lisensi
Anda harus menandatangani perjanjian izin untuk menggunakan Gemma. Ikuti petunjuk berikut:
- Akses halaman izin model di Kaggle.com.
- Masuk ke Kaggle jika Anda belum melakukannya.
- Klik Minta Akses.
- Di bagian Choose Account for Consent, pilih Verify via Kaggle Account untuk menggunakan akun Kaggle Anda untuk mendapatkan izin.
- Setujui Persyaratan dan Ketentuan model.
Membuat token akses
Untuk mengakses model melalui Kaggle, Anda memerlukan token API Kaggle.
Ikuti langkah-langkah berikut untuk membuat token baru jika Anda belum memilikinya:
- Di browser, buka setelan Kaggle.
- Di bagian API, klik Create New Token.
File bernama kaggle.json
telah didownload.
Mengupload token akses ke Cloud Shell
Di Cloud Shell, Anda dapat mengupload token API Kaggle ke project Google Cloud:
- Di Cloud Shell, klik > Upload. More
- Pilih File dan klik Choose Files.
- Buka file
kaggle.json
. - Klik Upload.
Membuat Rahasia Kubernetes untuk kredensial Kaggle
Di Cloud Shell, lakukan hal berikut:
Konfigurasi
kubectl
untuk berkomunikasi dengan cluster Anda:gcloud container clusters get-credentials ${CLUSTER_NAME} --location=${LOCATION}
Buat Rahasia untuk menyimpan kredensial Kaggle:
kubectl create secret generic kaggle-secret \ --from-file=kaggle.json
Men-deploy Saxml
Di bagian ini, Anda akan men-deploy server admin Saxml, server model, dan server HTTP.
Men-deploy server admin Saxml
Buat manifes
saxml-admin-server.yaml
berikut:Ganti ADMIN_BUCKET_NAME dengan nama bucket yang Anda buat di bagian Membuat bucket Cloud Storage. Jangan sertakan awalan
gs://
.Terapkan manifes:
kubectl apply -f saxml-admin-server.yaml
Verifikasi deployment server admin:
kubectl get deployment
Outputnya akan mirip dengan berikut ini:
NAME READY UP-TO-DATE AVAILABLE AGE sax-admin-server 1/1 1 1 ##s
Men-deploy server model Saxml
Ikuti petunjuk berikut untuk men-deploy server model untuk model Gemma 2B atau Gemma 7B.
Gemma 2B-it
Buat manifes
saxml-model-server-1x1.yaml
berikut:Ganti ADMIN_BUCKET_NAME dengan nama bucket yang Anda buat di bagian Membuat bucket Cloud Storage. Jangan sertakan awalan
gs://
.Terapkan manifes:
kubectl apply -f saxml-model-server-1x1.yaml
Verifikasi status Deployment server model:
kubectl get deployment
Outputnya akan mirip dengan berikut ini:
NAME READY STATUS RESTARTS AGE sax-admin-server 1/1 Running 0 ##m sax-model-server-v5e-1x1 1/1 Running 0 ##s
Gemma 7B-it
Buat manifes
saxml-model-server-2x2.yaml
berikut:Ganti ADMIN_BUCKET_NAME dengan nama bucket yang Anda buat di bagian Membuat bucket Cloud Storage. Jangan sertakan awalan
gs://
.Terapkan manifes:
kubectl apply -f saxml-model-server-2x2.yaml
Verifikasi status Deployment server model:
kubectl get deployment
Outputnya akan mirip dengan berikut ini:
NAME READY STATUS RESTARTS AGE sax-admin-server 1/1 Running 0 ##m sax-model-server-v5e-2x2 1/1 Running 0 ##s
Men-deploy server HTTP Saxml
Di bagian ini, Anda akan men-deploy server HTTP Saxml dan membuat Layanan IP Cluster yang digunakan untuk mengakses server.
Buat manifes
saxml-http.yaml
berikut:Ganti ADMIN_BUCKET_NAME dengan nama bucket Cloud Storage yang menyimpan server Admin Saxml.
Terapkan manifes:
kubectl apply -f saxml-http.yaml
Verifikasi status deployment server HTTP Saxml:
kubectl get deployment
Gemma 2B-it
Outputnya akan mirip dengan berikut ini:
NAME READY STATUS RESTARTS AGE
sax-admin-server 1/1 Running 0 ##m
sax-model-server-v5e-1x1 1/1 Running 0 ##m
sax-http 1/1 Running 0 ##s
Gemma 7B-it
Outputnya akan mirip dengan berikut ini:
NAME READY STATUS RESTARTS AGE
sax-admin-server 1/1 Running 0 ##m
sax-model-server-v5e-2x2 1/1 Running 0 ##m
sax-http 1/1 Running 0 ##s
Mendownload checkpoint model
Di bagian ini, Anda akan menjalankan Tugas Kubernetes yang mengambil, mendownload, dan menyimpan checkpoint model. Ikuti langkah-langkah berdasarkan model Gemma yang ingin Anda gunakan:
Gemma 2B-it
Buat manifes
job-2b.yaml
berikut:Ganti CHECKPOINTS_BUCKET_NAME dengan nama bucket yang Anda buat di bagian Membuat bucket Cloud Storage. Jangan sertakan awalan
gs://
.Terapkan manifes:
kubectl apply -f job-2b.yaml
Tunggu hingga Pekerjaan selesai:
kubectl wait --for=condition=complete --timeout=180s job/data-loader-2b
Outputnya mirip dengan hal berikut ini:
job.batch/data-loader-2b condition met
Verifikasi bahwa Pekerjaan berhasil diselesaikan:
kubectl get job/data-loader-2b
Outputnya mirip dengan hal berikut ini:
NAME COMPLETIONS DURATION AGE data-loader-2b 1/1 ##s #m##s
Lihat log untuk Pekerjaan:
kubectl logs --follow job/data-loader-2b
Checkpoint diupload ke gs://CHECKPOINTS_BUCKET_NAME/gemma_2b-it/checkpoint_00000000
.
Gemma 7B-it
Buat manifes
job-7b.yaml
berikut:Ganti CHECKPOINTS_BUCKET_NAME dengan nama bucket yang Anda buat di bagian Membuat bucket Cloud Storage. Sertakan awalan
gs://
.Terapkan manifes:
kubectl apply -f job-7b.yaml
Tunggu hingga Pekerjaan selesai:
kubectl wait --for=condition=complete --timeout=360s job/data-loader-7b
Outputnya mirip dengan hal berikut ini:
job.batch/data-loader-7b condition met
Verifikasi bahwa Pekerjaan berhasil diselesaikan:
kubectl get job/data-loader-7b
Outputnya mirip dengan hal berikut ini:
NAME COMPLETIONS DURATION AGE data-loader-7b 1/1 ##s #m##s
Lihat log untuk Pekerjaan:
kubectl logs --follow job/data-loader-7b
Checkpoint diupload ke gs://CHECKPOINTS_BUCKET_NAME/gemma_7b_it/checkpoint_00000000
.
Mengekspos server HTTP Saxml
Anda dapat mengakses server HTTP Saxml melalui Layanan ClusterIP yang Anda buat di langkah sebelumnya. Layanan ClusterIP hanya dapat dijangkau dari dalam cluster. Oleh karena itu, untuk mengakses Layanan dari luar cluster, selesaikan langkah-langkah berikut:
Buat sesi penerusan port:
kubectl port-forward service/sax-http-svc 8888:8888
Pastikan Anda dapat mengakses server HTTP Saxml dengan membuka terminal baru dan menjalankan perintah berikut:
curl -s localhost:8888
Outputnya mirip dengan hal berikut ini:
{ "Message": "HTTP Server for SAX Client" }
Server HTTP Saxml mengenkapsulasi antarmuka klien ke sistem Saxml dan mengeksposnya melalui kumpulan REST API. Anda akan menggunakan API ini untuk memublikasikan, mengelola, dan berinteraksi dengan model Gemma 2B dan Gemma 7B.
Memublikasikan model Gemma
Setelah komponen Saxml disiapkan, Anda dapat memublikasikan model Gemma ke server model yang berjalan di kumpulan node slice TPU. Anda menggunakan publish
API server HTTP Saxml
untuk memublikasikan model. Untuk mempelajari lebih lanjut tentang API server HTTP Saxml,
lihat API HTTP Saxml. Ikuti langkah-langkah berikut untuk memublikasikan model parameter Gemma 2B
atau 7B.
Gemma 2B-it
Pastikan sesi penerusan port Anda masih aktif:
curl -s localhost:8888
Publikasikan parameter Gemma 2B:
curl --request POST \ --header "Content-type: application/json" \ -s \ localhost:8888/publish \ --data \ '{ "model": "/sax/test/gemma2bfp16", "model_path": "saxml.server.pax.lm.params.gemma.Gemma2BFP16", "checkpoint": "gs://CHECKPOINTS_BUCKET_NAME/gemma_2b-it/checkpoint_00000000", "replicas": "1" }'
Outputnya mirip dengan hal berikut ini:
{ "model": "/sax/test/gemma2bfp16", "model_path": "saxml.server.pax.lm.params.gemma.Gemma2BFP16", "checkpoint": "gs://CHECKPOINTS_BUCKET_NAME/gemma_2b-it/checkpoint_00000000", "replicas": 1 }
Deployment model dapat memerlukan waktu beberapa menit.
Pantau progresnya dengan mengamati log di Pod server model dari deployment
sax-model-server-v5e-1x1
.kubectl logs --follow deployment/sax-model-server-v5e-1x1
Deployment ini dapat memerlukan waktu hingga lima menit. Tunggu hingga Anda melihat pesan yang mirip dengan yang berikut ini:
I0125 15:34:31.685555 139063071708736 servable_model.py:699] loading completed. I0125 15:34:31.686286 139063071708736 model_service_base.py:532] Successfully loaded model for key: /sax/test/gemma2bfp16
Pastikan Anda dapat mengakses model dengan menampilkan informasi model:
curl --request GET \ --header "Content-type: application/json" \ -s \ localhost:8888/listcell \ --data \ '{ "model": "/sax/test/gemma2bfp16" }'
Outputnya mirip dengan hal berikut ini:
{ "model": "/sax/test/gemma2bfp16", "model_path": "saxml.server.pax.lm.params.gemma.Gemma2BFP16", "checkpoint": "gs://CHECKPOINTS_BUCKET_NAME/gemma_2b-it/checkpoint_00000000", "max_replicas": 1, "active_replicas": 1 }
Gemma 7B-it
Pastikan sesi penerusan port Anda masih aktif:
curl -s localhost:8888
Publikasikan parameter Gemma 7B:
curl --request POST \ --header "Content-type: application/json" \ -s \ localhost:8888/publish \ --data \ '{ "model": "/sax/test/gemma7bfp16", "model_path": "saxml.server.pax.lm.params.gemma.Gemma7BFP16", "checkpoint": "gs://CHECKPOINTS_BUCKET_NAME/gemma_7b-it/checkpoint_00000000", "replicas": "1" }'
Outputnya mirip dengan hal berikut ini:
{ "model": "/sax/test/gemma7bfp16", "model_path": "saxml.server.pax.lm.params.gemma.Gemma7BFP16", "checkpoint": "gs://CHECKPOINTS_BUCKET_NAME/gemma_7b-it/checkpoint_00000000", "replicas": 1 }
Deployment model dapat memerlukan waktu beberapa menit.
Pantau progresnya dengan mengamati log di Pod server model dari deployment
sax-model-server-v5e-2x2
.kubectl logs --follow deployment/sax-model-server-v5e-2x2
Tunggu hingga Anda melihat pesan yang mirip dengan yang berikut ini:
I0125 15:34:31.685555 139063071708736 servable_model.py:699] loading completed. I0125 15:34:31.686286 139063071708736 model_service_base.py:532] Successfully loaded model for key: /sax/test/gemma7bfp16
Pastikan bahwa model dipublikasikan dengan menampilkan informasi model:
curl --request GET \ --header "Content-type: application/json" \ -s \ localhost:8888/listcell \ --data \ '{ "model": "/sax/test/gemma7bfp16" }'
Outputnya mirip dengan hal berikut ini:
{ "model": "/sax/test/gemma7bfp16", "model_path": "saxml.server.pax.lm.params.gemma.Gemma7BFP16", "checkpoint": "gs://CHECKPOINTS_BUCKET_NAME/gemma_7b-it/checkpoint_00000000", "max_replicas": 1, "active_replicas": 1 }
Menggunakan model
Anda dapat berinteraksi dengan model Gemma 2B atau 7B. Gunakan generate
API
server HTTP Saxml untuk mengirim prompt ke model.
Gemma 2B-it
Tayangkan permintaan perintah menggunakan endpoint generate
dari server HTTP Saxml:
curl --request POST \
--header "Content-type: application/json" \
-s \
localhost:8888/generate \
--data \
'{
"model": "/sax/test/gemma2bfp16",
"query": "What are the top 5 most popular programming languages?"
}'
Berikut adalah contoh respons model. Outputnya dapat bervariasi di setiap perintah yang Anda tayangkan:
[
[
"\n\n1. **Python**\n2. **JavaScript**\n3. **Java**\n4. **C++**\n5. **Go**",
-3.0704939365386963
]
]
Anda dapat menjalankan perintah dengan parameter query
yang berbeda. Anda juga dapat mengubah
parameter tambahan seperti temperature
, top_k
, topc_p
menggunakan
generate
API. Untuk mempelajari lebih lanjut API server HTTP Saxml, lihat API HTTP SAxml.
Gemma 7B-it
Tayangkan permintaan perintah menggunakan endpoint generate
dari server HTTP Saxml:
curl --request POST \
--header "Content-type: application/json" \
-s \
localhost:8888/generate \
--data \
'{
"model": "/sax/test/gemma7bfp16",
"query": "What are the top 5 most popular programming languages?"
}'
Berikut adalah contoh respons model. Outputnya dapat bervariasi di setiap perintah yang Anda tayangkan:
[
[
"\n\n**1. JavaScript**\n\n* Most widely used language on the web.\n* Used for front-end development, such as websites and mobile apps.\n* Extensive libraries and frameworks available.\n\n**2. Python**\n\n* Known for its simplicity and readability.\n* Versatile, used for various tasks, including data science, machine learning, and web development.\n* Large and active community.\n\n**3. Java**\n\n* Object-oriented language widely used in enterprise applications.\n* Used for web applications, mobile apps, and enterprise software.\n* Strong ecosystem and support.\n\n**4. Go**\n\n",
-16.806324005126953
]
]
Anda dapat menjalankan perintah dengan parameter query
yang berbeda. Anda juga dapat mengubah
parameter tambahan seperti temperature
, top_k
, topc_p
menggunakan
generate
API. Untuk mempelajari lebih lanjut API server HTTP Saxml, lihat API HTTP SAxml.
Membatalkan publikasi model
Ikuti langkah-langkah berikut untuk membatalkan publikasi model:
Gemma 2B-it
Untuk membatalkan publikasi model Gemma 2B, jalankan perintah berikut:
curl --request POST \
--header "Content-type: application/json" \
-s \
localhost:8888/unpublish \
--data \
'{
"model": "/sax/test/gemma2bfp16"
}'
Outputnya mungkin mirip dengan contoh berikut ini:
{
"model": "/sax/test/gemma2bfp16"
}
Anda dapat menjalankan perintah dengan berbagai perintah yang diteruskan dalam parameter query
.
Gemma 7B-it
Untuk membatalkan publikasi model Gemma 7B, jalankan perintah berikut:
curl --request POST \
--header "Content-type: application/json" \
-s \
localhost:8888/unpublish \
--data \
'{
"model": "/sax/test/gemma7bfp16"
}'
Outputnya mungkin mirip dengan contoh berikut ini:
{
"model": "/sax/test/gemma7bfp16"
}
Anda dapat menjalankan perintah dengan berbagai perintah yang diteruskan dalam parameter query
.
Memecahkan masalah
- Jika Anda mendapatkan pesan
Empty reply from server
, penampung mungkin belum selesai mendownload data model. Periksa log Pod lagi untuk melihat pesanConnected
yang menunjukkan bahwa model siap ditayangkan. - Jika Anda melihat
Connection refused
, pastikan penerusan port aktif.
Pembersihan
Agar tidak dikenakan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource-nya.
Menghapus resource yang di-deploy
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang Anda buat dalam panduan ini, jalankan perintah berikut:
gcloud container clusters delete ${CLUSTER_NAME} --location=${LOCATION}
gcloud iam service-accounts delete --quiet wi-sax@${PROJECT_ID}.iam.gserviceaccount.com
gcloud storage rm --recursive gs://ADMIN_BUCKET_NAME
gcloud storage rm --recursive gs://CHECKPOINTS_BUCKET_NAME
Ganti kode berikut:
- ADMIN_BUCKET_NAME: Nama bucket Cloud Storage yang menyimpan server Admin Saxml.
- CHECKPOINTS_BUCKET_NAME: Nama bucket Cloud Storage yang menyimpan checkpoint model.
Langkah selanjutnya
- Pelajari TPU di GKE lebih lanjut.
- Jelajahi repositori GitHub Saxml.
- Jelajahi Model Garden Vertex AI.
- Temukan cara menjalankan beban kerja AI/ML yang dioptimalkan dengan kemampuan orkestrasi platform GKE.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.