Tutorial ini akan memandu Anda:
- Membuat VM Cloud TPU untuk men-deploy Llama 2 kelompok model bahasa besar (LLM), 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 berfungsi Paxml, JAX, dan PyTorch untuk inferensi. Kode dan dokumentasi untuk SAX ada di repositori Git Saxml. Versi stabil saat ini dengan dukungan TPU v5e adalah v1.1.0.
Tentang sel SAX
Sel SAX (atau cluster) 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 berinteraksi.
- Server model: Server ini menjalankan model Anda. Mereka bertanggung jawab terhadap memproses permintaan 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 secara langsung melalui server HTTP. Diagram berikut menunjukkan bagaimana komponen klien dapat berinteraksi dengan sel SAX:
Gambar 2. Arsitektur runtime klien eksternal yang berinteraksi dengan SAX sel.
Tujuan
- Menyiapkan resource TPU untuk penayangan
- 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 di Menyiapkan Cloud TPU lingkungan fleksibel.
Membuat TPU
Langkah-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 - 70B:
v5litepod-16
atau lebih besar
- 7B:
ZONE
- Zona tempat Anda ingin membuat yang disebut 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 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 aktif:
gcloud compute tpus queued-resources list --project $PROJECT_ID --zone $ZONE
Siapkan node konversi checkpoint
Untuk menjalankan model Llama di cluster SAX, Anda perlu mengonversi model Llama asli checkpoint ke format yang kompatibel dengan SAX.
Konversi memerlukan resource memori yang signifikan, bergantung pada modelnya ukuran:
Model | Jenis mesin |
---|---|
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 70B, Anda perlu membuat instance Compute Engine dengan kapasitas 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 Anda menggunakan instance TPU atau Compute Engine sebagai server konversi, siapkan server Anda untuk mengonversi checkpoint Llama 2:
Untuk model 7B dan 13B, setel variabel lingkungan nama server dengan nama TPU Anda:
export CONV_SERVER_NAME=$TPU_NAME
Untuk model 70B, atur 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 di 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
Download skrip konversi checkpoint Llama:
gcloud storage cp gs://cloud-tpu-inference-public/sax-tokenizers/llama/convert_llama_ckpt.py .
Download bobot Llama 2
Sebelum mengonversi model, Anda perlu mendownload bobot Llama 2. Untuk ini Anda harus menggunakan bobot Llama 2 asli (misalnya, meta-llama/Llama-2-7b) dan bukan bobot yang telah dikonversi untuk format Transformer Wajah Memeluk (misalnya, meta-llama/Llama-2-7b-hf).
Jika Anda sudah memiliki bobot Llama 2, lanjutkan ke bagian Mengonversi bobot.
Untuk mendownload berat dari hub Wajah Memeluk, Anda harus menyetel token akses pengguna dan meminta akses ke model Llama 2. Untuk meminta akses, ikuti petunjuk pada halaman Wajah Memeluk untuk model yang ingin Anda gunakan, misalnya, meta-llama/Llama-2-7b.
Buat direktori untuk bobot:
sudo mkdir WEIGHTS_DIRECTORY
Mendapatkan berat Llama2 dari hub Hugging Face:
Instal CLI hub Hugging Face:
pip install -U "huggingface_hub[cli]"
Ubah ke direktori bobot:
cd WEIGHTS_DIRECTORY
Download 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 Hugging Face 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 model bobot.
Buat direktori untuk menyimpan bobot yang dikonversi:
sudo mkdir CONVERTED_WEIGHTS
Clone repositori Saxml GitHub di direktori tempat Anda membaca, menulis, dan izin 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
.Dalam 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
saxml/server/pax/lm/params/lm_cloud.py
. Di kolom
saxml/server/pax/lm/params/lm_cloud.py
, ubah baris 344 dari:return True
Kepada:
return False
- Buka
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 {i>checkpoint<i}, direktori {i>checkpoint<i} harus memiliki berikut ini:
checkpoint_00000000
metadata/
metadata
state/
mdl_vars.params.lm*/
...
...
step/
Buat file kosong bernama commit_success.txt
dan simpan salinannya di
Direktori checkpoint_00000000
, metadata
, dan state
. Ini membuat SAX tahu
bahwa checkpoint ini sepenuhnya diubah 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 kini 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 perlu menyimpan konversi di bucket Cloud Storage, sehingga yang 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:
Buat cluster SAX
Untuk membuat cluster SAX, Anda perlu:
Dalam deployment biasa, Anda akan menjalankan server admin di Compute Engine dan server model di TPU atau GPU. Untuk tujuan Anda akan men-deploy server admin dan server model pada TPU yang sama v5e.
Buat server admin
Buat penampung Docker server admin:
Di server konversi, instal Docker:
sudo apt-get update sudo apt-get install docker.io
Luncurkan container 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 bahwa 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
. Tujuan
langkah-langkah berikut menunjukkan cara mengupdate lm_cloud.py
dan melakukan 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
. Setelahnya ubah, 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
Tutup 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 akan dilanjutkan dengan image lokal.
Hentikan server model. Tutorial lainnya akan menggunakan model yang diperbarui server tertentu.
sudo docker stop sax-model-server
Mulai server model menggunakan image Docker yang diupdate. Pastikan untuk menentukan nama gambar 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 bahwa server model telah dimulai dengan benar:
docker logs -f sax-model-server
Jika server model tidak dimulai, lihat bagian Pemecahan masalah untuk informasi selengkapnya.
Untuk model 70B, ulangi langkah-langkah berikut untuk setiap TPU VM:
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 mana 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 lain:
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 yang memulai:
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 bernama saxutil
, yang menyederhanakan
berinteraksi dengan server model SAX. Dalam tutorial ini, Anda menggunakan
saxutil
untuk memublikasikan model. Untuk mengetahui daftar lengkap perintah saxutil
, lihat
README Saxml
file.
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
Tetapkan 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 di 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 sukses harus memiliki jumlah replika yang lebih besar dari nol dan terlihat mirip dengan berikut ini:
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 mirip dengan 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 di-deploy, periksa model dan jalur ke checkpoint model Anda.
Buat respons
Anda dapat menggunakan alat saxutil
untuk membuat respons terhadap perintah.
Membuat tanggapan 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 berisi 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 {i>home<i} Anda: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
Buat 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 dari komputer lokal atau server lain dengan akses ke port 8888 menggunakan perintah berikut:
Ekspor variabel lingkungan untuk alamat IP dan port 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 )
Kirim permintaan:
curl --request POST --header "Content-type: application/json" -s $LB_IP:$PORT/generate --data "$json_payload"
Pembersihan
Agar tidak perlu membayar 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.
Setelah selesai mengikuti tutorial ini, ikuti langkah-langkah berikut untuk membersihkan Google Cloud Platform.
Menghapus Cloud TPU.
$ gcloud compute tpus tpu-vm delete $TPU_NAME --zone $ZONE
Hapus instance Compute Engine Anda, jika Anda sudah 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