Tutorial ini akan memandu Anda:
- Membuat VM Cloud TPU untuk men-deploy kelompok model bahasa besar (LLM) Llama 2, yang tersedia dalam berbagai ukuran (7B, 13B, atau 70B)
- Menyiapkan checkpoint untuk model dan men-deploy-nya di SAX
- Berinteraksi dengan model melalui endpoint HTTP
Penayangan untuk Eksperimen AGI (SAX) adalah sistem eksperimental yang menayangkan model Paxml, JAX, dan PyTorch untuk inferensi. Kode dan dokumentasi untuk SAX ada di repositori Git SAX. Versi stabil saat ini dengan dukungan TPU v5e adalah v1.1.0.
Tentang sel SAX
Sel (atau cluster) SAX adalah unit inti untuk menyalurkan model Anda. Terdiri dari dua bagian utama:
- Server admin: Server ini melacak server model Anda, menetapkan model ke server model tersebut, dan membantu klien menemukan server model yang tepat untuk berinteraksi.
- Server model: Server ini menjalankan model Anda. Mereka bertanggung jawab untuk memproses permintaan yang masuk dan menghasilkan respons.
Diagram berikut menunjukkan diagram sel SAX:
Gambar 1. Sel SAX dengan server admin dan server model.
Anda dapat berinteraksi dengan sel SAX menggunakan klien yang ditulis dalam Python, C++, atau Go, atau langsung melalui server HTTP. Diagram berikut menunjukkan cara klien eksternal dapat berinteraksi dengan sel SAX:
Gambar 2. Arsitektur runtime klien eksternal yang berinteraksi dengan sel SAX.
Tujuan
- Menyiapkan resource TPU untuk inferensi
- Membuat cluster SAX
- Memublikasikan model Llama 2
- Berinteraksi dengan model
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Cloud TPU
- Compute Engine
- Cloud Storage
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
Siapkan project Google Cloud Anda, aktifkan Cloud TPU API, dan buat akun layanan dengan mengikuti petunjuk dalam Menyiapkan lingkungan Cloud TPU.
Membuat TPU
Langkah berikut menunjukkan cara membuat VM TPU, yang akan menyalurkan model Anda.
Buat variabel lingkungan:
export PROJECT_ID=PROJECT_ID export ACCELERATOR_TYPE=ACCELERATOR_TYPE export ZONE=ZONE export RUNTIME_VERSION=v2-alpha-tpuv5-lite export SERVICE_ACCOUNT=SERVICE_ACCOUNT export TPU_NAME=TPU_NAME export QUEUED_RESOURCE_ID=QUEUED_RESOURCE_ID
Deskripsi variabel lingkungan
PROJECT_ID
- : ID project Google Cloud Anda.
ACCELERATOR_TYPE
- Jenis akselerator menentukan versi dan ukuran Cloud TPU yang ingin Anda buat. Ukuran model Llama 2 yang berbeda memiliki persyaratan ukuran TPU yang berbeda:
- 7B:
v5litepod-4
atau lebih besar - 13B:
v5litepod-8
atau lebih besar - 70 B:
v5litepod-16
atau lebih besar
- 7B:
ZONE
- Zona tempat Anda ingin membuat Cloud TPU.
SERVICE_ACCOUNT
- Akun layanan yang ingin Anda lampirkan ke Cloud TPU.
TPU_NAME
- Nama untuk Cloud TPU Anda.
QUEUED_RESOURCE_ID
- ID untuk permintaan resource dalam antrean.
Tetapkan project ID dan zona di konfigurasi Google Cloud CLI Anda yang aktif:
gcloud config set project $PROJECT_ID && gcloud config set compute/zone $ZONE
Buat VM TPU:
gcloud alpha compute tpus queued-resources create ${QUEUED_RESOURCE_ID} \ --node-id ${TPU_NAME} \ --project ${PROJECT_ID} \ --zone ${ZONE} \ --accelerator-type ${ACCELERATOR_TYPE} \ --runtime-version ${RUNTIME_VERSION} \ --service-account ${SERVICE_ACCOUNT}
Pastikan TPU sudah aktif:
gcloud compute tpus queued-resources list --project $PROJECT_ID --zone $ZONE
Siapkan node konversi checkpoint
Untuk menjalankan model LLama di cluster SAX, Anda harus mengonversi checkpoint Llama asli ke format yang kompatibel dengan SAX.
Konversi memerlukan resource memori yang signifikan, bergantung pada ukuran model:
Model | Machine type |
---|---|
7 M | Memori 50-60 GB |
13 M | Memori 120 GB |
70 M | Memori 500-600 GB (jenis mesin N2 atau M1) |
Untuk model 7B dan 13B, Anda dapat menjalankan konversi di VM TPU. Untuk model 70B, Anda perlu membuat instance Compute Engine dengan ruang disk sekitar 1 TB:
gcloud compute instances create INSTANCE_NAME --project=$PROJECT_ID --zone=$ZONE \ --machine-type=n2-highmem-128 \ --network-interface=network-tier=PREMIUM,stack-type=IPV4_ONLY,subnet=default \ --maintenance-policy=MIGRATE --provisioning-model=STANDARD \ --service-account=$SERVICE_ACCOUNT \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --tags=http-server,https-server \ --create-disk=auto-delete=yes,boot=yes,device-name=bk-workday-dlvm,image=projects/ml-images/global/images/c0-deeplearning-common-cpu-v20230925-debian-10,mode=rw,size=500,type=projects/$PROJECT_ID/zones/$ZONE/diskTypes/pd-balanced \ --no-shielded-secure-boot \ --shielded-vtpm \ --shielded-integrity-monitoring \ --labels=goog-ec-src=vm_add-gcloud \ --reservation-affinity=any
Baik menggunakan instance TPU atau Compute Engine sebagai server konversi, siapkan server Anda untuk mengonversi checkpoint Llama 2:
Untuk model 7B dan 13B, tetapkan variabel lingkungan nama server ke nama TPU Anda:
export CONV_SERVER_NAME=$TPU_NAME
Untuk model 70B, tetapkan variabel lingkungan nama server ke nama instance Compute Engine Anda:
export CONV_SERVER_NAME=INSTANCE_NAME
Hubungkan ke node konversi menggunakan SSH.
Jika node konversi Anda adalah TPU, hubungkan ke TPU:
gcloud compute tpus tpu-vm ssh $CONV_SERVER_NAME --project=$PROJECT_ID --zone=$ZONE
Jika node konversi Anda adalah instance Compute Engine, hubungkan ke VM Compute Engine:
gcloud compute ssh $CONV_SERVER_NAME --project=$PROJECT_ID --zone=$ZONE
Instal paket yang diperlukan pada node konversi:
sudo apt update sudo apt-get install python3-pip sudo apt-get install git-all pip3 install paxml==1.1.0 pip3 install torch pip3 install jaxlib==0.4.14
Unduh skrip konversi checkpoint Llama:
gcloud storage cp gs://cloud-tpu-inference-public/sax-tokenizers/llama/convert_llama_ckpt.py .
Unduh beban Llama 2
Sebelum mengonversi model, Anda perlu mengunduh bobot Llama 2. Untuk tutorial ini, Anda harus menggunakan bobot Llama 2 asli (misalnya, meta-llama/Llama-2-7b) dan bukan bobot yang telah dikonversi untuk format Transformer Wajah Hugging (misalnya, meta-llama/Llama-2-7b-hf).
Jika Anda sudah memiliki bobot Llama 2, lanjutkan ke Mengonversi bobot.
Untuk mendownload bobot dari hub Wajah Memeluk, Anda harus menyiapkan token akses pengguna dan meminta akses ke model Llama 2. Untuk meminta akses, ikuti petunjuk di halaman Wajah Memeluk untuk model yang ingin Anda gunakan, misalnya, meta-llama/Llama-2-7b.
Buat direktori untuk bobot:
sudo mkdir WEIGHTS_DIRECTORY
Dapatkan berat Llama2 dari hub Wajah Memeluk:
Instal CLI hub{i> Hugging Face<i}:
pip install -U "huggingface_hub[cli]"
Ubah ke direktori bobot:
cd WEIGHTS_DIRECTORY
Unduh file Llama 2:
python3 from huggingface_hub import login login() from huggingface_hub import hf_hub_download, snapshot_download import os PATH=os.getcwd() snapshot_download(repo_id="meta-llama/LLAMA2_REPO", local_dir_use_symlinks=False, local_dir=PATH)
Ganti LLAMA2_REPO dengan nama repositori Wajah Memeluk yang ingin Anda download dari:
Llama-2-7b
,Llama-2-13b
, atauLlama-2-70b
.
Mengonversi bobot
Edit skrip konversi, lalu jalankan skrip konversi untuk mengonversi bobot model.
Buat direktori untuk menyimpan bobot yang dikonversi:
sudo mkdir CONVERTED_WEIGHTS
Clone repositori GitHub Saxml di direktori tempat Anda memiliki izin baca, tulis, dan eksekusi:
git clone https://github.com/google/saxml.git -b r1.1.0
Ubah ke direktori
saxml
:cd saxml
Buka file
saxml/tools/convert_llama_ckpt.py
.Di file
saxml/tools/convert_llama_ckpt.py
, ubah baris 169 dari:'scale': pytorch_vars[0]['layers.%d.attention_norm.weight' % (layer_idx)].type(torch.float16).numpy()
Kepada:
'scale': pytorch_vars[0]['norm.weight'].type(torch.float16).numpy()
Jalankan skrip
saxml/tools/init_cloud_vm.sh
:saxml/tools/init_cloud_vm.sh
Khusus 70B: Nonaktifkan mode pengujian:
- Buka
file
saxml/server/pax/lm/params/lm_cloud.py
. Dalam file
saxml/server/pax/lm/params/lm_cloud.py
, ubah baris 344 dari:return True
Kepada:
return False
- Buka
file
Konversi bobot:
python3 saxml/tools/convert_llama_ckpt.py --base-model-path WEIGHTS_DIRECTORY \ --pax-model-path CONVERTED_WEIGHTS \ --model-size MODEL_SIZE
Ganti kode berikut:
- WEIGHTS_DIRECTORY: Direktori untuk bobot asli.
- CONVERTED_WEIGHTS: Jalur target untuk bobot yang dikonversi.
- MODEL_SIZE:
7b
,13b
, atau70b
.
Menyiapkan direktori checkpoint
Setelah Anda mengonversi checkpoint, direktori checkpoint tersebut seharusnya memiliki struktur berikut:
checkpoint_00000000
metadata/
metadata
state/
mdl_vars.params.lm*/
...
...
step/
Buat file kosong bernama commit_success.txt
dan letakkan salinannya di direktori
checkpoint_00000000
, metadata
, dan state
. Hal ini memungkinkan SAX mengetahui
bahwa checkpoint ini telah sepenuhnya dikonversi dan siap dimuat:
Ubah ke direktori checkpoint:
cd CONVERTED_WEIGHTS/checkpoint_00000000
Buat file kosong bernama
commit_success.txt
:touch commit_success.txt
Ubah ke direktori metadata dan buat file kosong bernama
commit_success.txt
:cd metadata && touch commit_success.txt
Ubah ke direktori status dan buat file kosong bernama
commit_success.txt
:cd .. && cd state && touch commit_success.txt
Direktori checkpoint sekarang seharusnya memiliki struktur berikut:
checkpoint_00000000
commit_success.txt
metadata/
commit_success.txt
metadata
state/
commit_success.txt
mdl_vars.params.lm*/
...
...
step/
Membuat bucket Cloud Storage
Anda harus menyimpan checkpoint yang dikonversi di bucket Cloud Storage agar tersedia saat memublikasikan model.
Tetapkan variabel lingkungan untuk nama bucket Cloud Storage Anda:
export GSBUCKET=BUCKET_NAME
Membuat bucket:
gcloud storage buckets create gs://${GSBUCKET}
Salin file checkpoint yang dikonversi ke bucket Anda:
gcloud storage cp -r CONVERTED_WEIGHTS/checkpoint_00000000 gs://$GSBUCKET/sax_models/llama2/SAX_LLAMA2_DIR/
Ganti SAX_LLAMA2_DIR dengan nilai yang sesuai:
- 7 M:
saxml_llama27b
- 13 M:
saxml_llama213b
- 70 M:
saxml_llama270b
- 7 M:
Membuat cluster SAX
Untuk membuat cluster SAX, Anda perlu:
Pada deployment biasa, Anda akan menjalankan server admin di instance Compute Engine, dan server model di TPU atau GPU. Untuk tujuan tutorial ini, Anda akan men-deploy server admin dan server model pada instance TPU v5e yang sama.
Buat server admin
Buat penampung Docker server admin:
Di server konversi, instal Docker:
sudo apt-get update sudo apt-get install docker.io
Luncurkan penampung Docker server admin:
sudo docker run --name sax-admin-server \ -it \ -d \ --rm \ --network host \ --env GSBUCKET=${GSBUCKET} us-docker.pkg.dev/cloud-tpu-images/inference/sax-admin-server:v1.1.0
Anda dapat menjalankan perintah docker run
tanpa opsi -d
untuk melihat log dan
memastikan server admin dimulai dengan benar.
Membuat server model
Bagian berikut menunjukkan cara membuat server model.
model 7b
Luncurkan container Docker server model:
sudo docker run --privileged \
-it \
-d \
--rm \
--network host \
--name "sax-model-server" \
--env SAX_ROOT=gs://${GSBUCKET}/sax-root us-docker.pkg.dev/cloud-tpu-images/inference/sax-model-server:v1.1.0 \
--sax_cell="/sax/test" \
--port=10001 \
--platform_chip=tpuv5e \
--platform_topology='4'
Model 13b
Konfigurasi untuk LLaMA13BFP16TPUv5e
tidak ada di lm_cloud.py
. Langkah-langkah
berikut menunjukkan cara mengupdate lm_cloud.py
dan meng-commit image Docker baru.
Mulai server model:
sudo docker run --privileged \ -it \ -d \ --rm \ --network host \ --name "sax-model-server" \ --env SAX_ROOT=gs://${GSBUCKET}/sax-root \ us-docker.pkg.dev/cloud-tpu-images/inference/sax-model-server:v1.1.0 \ --sax_cell="/sax/test" \ --port=10001 \ --platform_chip=tpuv5e \ --platform_topology='8'
Hubungkan ke container Docker menggunakan SSH:
sudo docker exec -it sax-model-server bash
Instal Vim di image Docker:
$ apt update $ apt install vim
Buka file
saxml/server/pax/lm/params/lm_cloud.py
. TelusuriLLaMA13B
. Anda akan melihat kode berikut:@servable_model_registry.register @quantization.for_transformer(quantize_on_the_fly=False) class LLaMA13B(BaseLLaMA): """13B model on a A100-40GB. April 12, 2023 Latency = 5.06s with 128 decoded tokens. 38ms per output token. """ NUM_LAYERS = 40 VOCAB_SIZE = 32000 DIMS_PER_HEAD = 128 NUM_HEADS = 40 MODEL_DIMS = 5120 HIDDEN_DIMS = 13824 ICI_MESH_SHAPE = [1, 1, 1] @property def test_mode(self) -> bool: return True
Beri komentar atau hapus baris yang diawali dengan
@quantization
. Setelah perubahan ini, file akan terlihat seperti berikut:@servable_model_registry.register class LLaMA13B(BaseLLaMA): """13B model on a A100-40GB. April 12, 2023 Latency = 5.06s with 128 decoded tokens. 38ms per output token. """ NUM_LAYERS = 40 VOCAB_SIZE = 32000 DIMS_PER_HEAD = 128 NUM_HEADS = 40 MODEL_DIMS = 5120 HIDDEN_DIMS = 13824 ICI_MESH_SHAPE = [1, 1, 1] @property def test_mode(self) -> bool: return True
Tambahkan kode berikut untuk mendukung konfigurasi TPU.
@servable_model_registry.register class LLaMA13BFP16TPUv5e(LLaMA13B): """13B model on TPU v5e-8. """ BATCH_SIZE = [1] BUCKET_KEYS = [128] MAX_DECODE_STEPS = [32] ENABLE_GENERATE_STREAM = False ICI_MESH_SHAPE = [1, 1, 8] @property def test_mode(self) -> bool: return False
Keluar dari sesi SSH container Docker:
exit
Commit perubahan ke image Docker baru:
sudo docker commit sax-model-server sax-model-server:v1.1.0-mod
Pastikan image Docker baru telah dibuat:
sudo docker images
Anda dapat memublikasikan image Docker ke Artifact Registry project, tetapi tutorial ini akan dilanjutkan dengan image lokal.
Hentikan server model. Bagian selanjutnya dari tutorial ini akan menggunakan server model yang telah diupdate.
sudo docker stop sax-model-server
Memulai server model menggunakan image Docker yang diupdate. Pastikan untuk menentukan nama image yang diperbarui,
sax-model-server:v1.1.0-mod
:sudo docker run --privileged \ -it \ -d \ --rm \ --network host \ --name "sax-model-server" \ --env SAX_ROOT=gs://${GSBUCKET}/sax-root \ sax-model-server:v1.1.0-mod \ --sax_cell="/sax/test" \ --port=10001 \ --platform_chip=tpuv5e \ --platform_topology='8'
Model 70B
Hubungkan ke TPU Anda menggunakan SSH, lalu mulai server model:
gcloud compute tpus tpu-vm ssh ${TPU_NAME} \
--project ${PROJECT_ID} \
--zone ${ZONE} \
--worker=all \
--command="
gcloud auth configure-docker \
us-docker.pkg.dev
# Pull SAX model server image
sudo docker pull us-docker.pkg.dev/cloud-tpu-images/inference/sax-model-server:v1.1.0
# Run model server
sudo docker run \
--privileged \
-it \
-d \
--rm \
--network host \
--name "sax-model-server" \
--env SAX_ROOT=gs://${GSBUCKET}/sax-root \
us-docker.pkg.dev/cloud-tpu-images/inference/sax-model-server:v1.1.0 \
--sax_cell="/sax/test" \
--port=10001 \
--platform_chip=tpuv5e \
--platform_topology='16'
"
Memeriksa log
Periksa log server model untuk memastikan server model telah dimulai dengan benar:
docker logs -f sax-model-server
Jika server model tidak dimulai, lihat bagian Pemecahan masalah untuk mengetahui informasi selengkapnya.
Untuk model 70B, ulangi langkah-langkah berikut untuk setiap VM TPU:
Hubungkan ke TPU menggunakan SSH:
gcloud compute tpus tpu-vm ssh ${TPU_NAME} \ --project ${PROJECT_ID} \ --zone ${ZONE} \ --worker=WORKER_NUMBER
WORKER_NUMBER adalah indeks berbasis 0, yang menunjukkan VM TPU yang ingin Anda hubungkan.
Periksa log:
sudo docker logs -f sax-model-server
Tiga VM TPU harus menunjukkan bahwa VM tersebut telah terhubung ke instance lainnya:
I1117 00:16:07.196594 140613973207936 multi_host_sync.py:152] Received SPMD peer address 10.182.0.3:10001 I1117 00:16:07.197484 140613973207936 multi_host_sync.py:152] Received SPMD peer address 10.182.0.87:10001 I1117 00:16:07.199437 140613973207936 multi_host_sync.py:152] Received SPMD peer address 10.182.0.13:10001
Salah satu VM TPU harus memiliki log yang menunjukkan server model dimulai:
I1115 04:01:29.479170 139974275995200 model_service_base.py:867] Started joining SAX cell /sax/test ERROR: logging before flag.Parse: I1115 04:01:31.479794 1 location.go:141] Calling Join due to address update ERROR: logging before flag.Parse: I1115 04:01:31.814721 1 location.go:155] Joined 10.182.0.44:10000
Memublikasikan model
SAX dilengkapi dengan alat command line yang disebut saxutil
, yang menyederhanakan
interaksi dengan server model SAX. Dalam tutorial ini, Anda akan menggunakan saxutil
untuk memublikasikan model. Untuk daftar lengkap perintah saxutil
, lihat file README Saxml.
Ubah ke direktori tempat Anda meng-clone repositori GitHub Saxml:
cd saxml
Untuk model 70B, hubungkan ke server konversi Anda:
gcloud compute ssh ${CONV_SERVER_NAME} \ --project ${PROJECT_ID} \ --zone ${ZONE}
Instal Bazel:
sudo apt-get install bazel
Setel alias untuk menjalankan
saxutil
dengan bucket Cloud Storage Anda:alias saxutil='bazel run saxml/bin:saxutil -- --sax_root=gs://${GSBUCKET}/sax-root'
Publikasikan model menggunakan
saxutil
. Proses ini memerlukan waktu sekitar 10 menit pada TPU v5litepod-8.saxutil --sax_root=gs://${GSBUCKET}/sax-root publish '/sax/test/MODEL' \ saxml.server.pax.lm.params.lm_cloud.PARAMETERS \ gs://${GSBUCKET}/sax_models/llama2/SAX_LLAMA2_DIR/checkpoint_00000000/ \ 1
Ganti variabel berikut:
Ukuran model Nilai 7 M MODEL
: llama27b
PARAMETERS
: saxml.server.pax.lm.params.lm_cloud.LLaMA7BFP16TPUv5e
SAX_LLAMA2_DIR
: saxml_llama27b
13 M MODEL
: llama213b
PARAMETERS
: saxml.server.pax.lm.params.lm_cloud.LLaMA13BFP16TPUv5e
SAX_LLAMA2_DIR
: saxml_llama213b
70 M MODEL
: llama270b
PARAMETERS
: saxml.server.pax.lm.params.lm_cloud.LLaMA70BFP16TPUv5e
SAX_LLAMA2_DIR
: saxml_llama270b
Menguji deployment
Untuk memeriksa apakah deployment berhasil, gunakan perintah saxutil ls
:
saxutil ls /sax/test/MODEL
Deployment yang berhasil akan memiliki jumlah replika yang lebih besar dari nol dan terlihat mirip seperti berikut:
INFO: Running command line: bazel-bin/saxml/bin/saxutil_/saxutil '--sax_rootmgs://sax-admin2/sax-root is /sax/test/1lama27b
+----------+-------------------------------------------------------+-----------------------------------------------------------------------+---------------+---------------------------+
| MODEL | MODEL PATH | CHECKPOINT PATH | # OF REPLICAS | (SELECTED) REPLICAADDRESS |
+----------+-------------------------------------------------------+-----------------------------------------------------------------------+---------------+---------------------------+
| llama27b | saxml.server.pax.lm.params.lm_cloud.LLaMA7BFP16TPUv5e | gs://${MODEL_BUCKET}/sax_models/llama2/7b/pax_7B/checkpoint_00000000/ | 1 | 10.182.0.28:10001 |
+----------+-------------------------------------------------------+-----------------------------------------------------------------------+---------------+---------------------------+
Log Docker untuk server model akan serupa dengan yang berikut ini:
I1114 17:31:03.586631 140003787142720 model_service_base.py:532] Successfully loaded model for key: /sax/test/llama27b
INFO: Running command line: bazel-bin/saxml/bin/saxutil_/saxutil '--sax_rootmgs://sax-admin2/sax-root is /sax/test/1lama27b
Memecahkan masalah
Jika deployment gagal, periksa log server model:
sudo docker logs -f sax-model-server
Agar deployment berhasil, Anda akan melihat output berikut:
Successfully loaded model for key: /sax/test/llama27b
Jika log tidak menunjukkan bahwa model telah di-deploy, periksa konfigurasi model dan jalur ke checkpoint model Anda.
Membuat respons
Anda dapat menggunakan alat saxutil
untuk membuat respons terhadap perintah.
Membuat jawaban atas pertanyaan:
saxutil lm.generate -extra="temperature:0.2" /sax/test/MODEL "Q: Who is Harry Potter's mother? A:"
Outputnya akan mirip dengan berikut ini:
INFO: Running command line: bazel-bin/saxml/bin/saxutil_/saxutil '--sax_rootmgs://sax-admin2/sax-root' lm.generate /sax/test/llama27b 'Q: Who is Harry Potter's mother? A: `
+-------------------------------+------------+
| GENERATE | SCORE |
+-------------------------------+------------+
| 1. Harry Potter's mother is | -20.214787 |
| Lily Evans. 2. Harry Potter's | |
| mother is Petunia Evans | |
| (Dursley). | |
+-------------------------------+------------+
Berinteraksi dengan model dari klien
Repositori SAX menyertakan klien yang dapat Anda gunakan untuk berinteraksi dengan sel SAX. Klien tersedia di C++, Python, dan Go. Contoh berikut menunjukkan cara membangun klien Python.
Bangun klien Python:
bazel build saxml/client/python:sax.cc --compile_one_dependency
Tambahkan klien ke
PYTHONPATH
. Contoh ini mengasumsikan bahwa Anda memilikisaxml
di direktori utama:export PYTHONPATH=${PYTHONPATH}:$HOME/saxml/bazel-bin/saxml/client/python/
Berinteraksi dengan SAX dari shell Python:
$ python3 Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sax >>>
Berinteraksi dengan model dari endpoint HTTP
Untuk berinteraksi dengan model dari endpoint HTTP, buat klien HTTP:
Membuat VM Compute Engine:
export PROJECT_ID=PROJECT_ID export ZONE=ZONE export HTTP_SERVER_NAME=HTTP_SERVER_NAME export SERVICE_ACCOUNT=SERVICE_ACCOUNT export MACHINE_TYPE=e2-standard-8 gcloud compute instances create $HTTP_SERVER_NAME --project=$PROJECT_ID --zone=$ZONE \ --machine-type=$MACHINE_TYPE \ --network-interface=network-tier=PREMIUM,stack-type=IPV4_ONLY,subnet=default \ --maintenance-policy=MIGRATE --provisioning-model=STANDARD \ --service-account=$SERVICE_ACCOUNT \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --tags=http-server,https-server \ --create-disk=auto-delete=yes,boot=yes,device-name=$HTTP_SERVER_NAME,image=projects/ml-images/global/images/c0-deeplearning-common-cpu-v20230925-debian-10,mode=rw,size=500,type=projects/$PROJECT_ID/zones/$ZONE/diskTypes/pd-balanced \ --no-shielded-secure-boot \ --shielded-vtpm \ --shielded-integrity-monitoring \ --labels=goog-ec-src=vm_add-gcloud \ --reservation-affinity=any
Hubungkan ke VM Compute Engine menggunakan SSH:
gcloud compute ssh $HTTP_SERVER_NAME --project=$PROJECT_ID --zone=$ZONE
Clone AI di repositori GitHub GKE:
git clone https://github.com/GoogleCloudPlatform/ai-on-gke.git
Ubah ke direktori server HTTP:
cd ai-on-gke/tools/saxml-on-gke/httpserver
Bangun file Docker:
docker build -f Dockerfile -t sax-http .
Jalankan server HTTP:
docker run -e SAX_ROOT=gs://${GSBUCKET}/sax-root -p 8888:8888 -it sax-http
Uji endpoint Anda dari mesin lokal Anda atau server lain yang memiliki akses ke port 8888 menggunakan perintah berikut:
Ekspor variabel lingkungan untuk port dan alamat IP server Anda:
export LB_IP=HTTP_SERVER_EXTERNAL_IP export PORT=8888
Tetapkan payload JSON, yang berisi model dan kueri:
json_payload=$(cat << EOF { "model": "/sax/test/MODEL", "query": "Example query" } EOF )
Mengirim permintaan:
curl --request POST --header "Content-type: application/json" -s $LB_IP:$PORT/generate --data "$json_payload"
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.
Setelah menyelesaikan tutorial ini, ikuti langkah-langkah berikut untuk membersihkan resource Anda.
Hapus Cloud TPU Anda.
$ gcloud compute tpus tpu-vm delete $TPU_NAME --zone $ZONE
Menghapus instance Compute Engine, jika Anda membuatnya.
gcloud compute instances delete INSTANCE_NAME
Hapus bucket Cloud Storage beserta isinya.
gcloud storage rm --recursive gs://BUCKET_NAME
Langkah selanjutnya
- Semua tutorial TPU
- Model referensi yang didukung
- Inferensi menggunakan v5e
- Mengonversi model untuk inferensi menggunakan v5e