Llama 3 adalah project open source model bahasa (LLM) dari Meta. Panduan ini menunjukkan cara menyalurkan LLM Llama 3 menggunakan multi-host Tensor Processing Unit (TPU) aktif Vertex AI Prediction dengan Saxml.
Dalam panduan ini, Anda akan mengunduh tokenizer model Llama 3 70B dan men-deploynya di Vertex AI Prediction yang menjalankan Saxml di TPU.
Sebelum memulai
Sebaiknya gunakan VM yang dioptimalkan untuk memori M2 untuk mendownload model dan mengonversinya ke Saxml. Hal ini karena model ini proses konversi membutuhkan banyak memori dan mungkin akan gagal jika Anda memilih yang tidak memiliki cukup memori.
- 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 Vertex AI and Artifact Registry.
-
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 Vertex AI and Artifact Registry.
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
- Ikuti dokumentasi Artifact Registry untuk Menginstal Docker.
- Pastikan Anda memiliki kuota yang cukup untuk 16 chip TPU v5e untuk Prediksi Vertex AI.
Tutorial ini mengasumsikan bahwa Anda menggunakan Cloud Shell untuk berinteraksi dengan Google Cloud. Jika Anda ingin menggunakan shell yang berbeda, bukan Cloud Shell, lakukan konfigurasi tambahan berikut:
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
Jika Anda menggunakan shell yang berbeda, bukan Cloud Shell untuk model
deployment, pastikan versi Google Cloud CLI adalah
lebih dari 475.0.0
. Anda dapat mengupdate Google Cloud CLI dengan menjalankan
Update komponen gcloud
perintah.
Jika Anda men-deploy model menggunakan Vertex AI SDK, pastikan
Anda memiliki versi 1.50.0
atau yang lebih baru.
Dapatkan akses ke model dan download bobot model
Langkah-langkah berikut adalah untuk instance Vertex AI Workbench yang memiliki VM yang dioptimalkan untuk memori M2. Untuk mengetahui informasi tentang cara mengubah jenis mesin Vertex AI Workbench instance, lihat Mengubah jenis mesin instance Vertex AI Workbench.
Buka halaman Halaman izin model Llama.
Pilih Llama 3, isi formulir izin, lalu setujui persyaratannya, lalu kondisi tertentu.
Periksa kotak masuk Anda untuk menemukan email yang berisi URL yang ditandatangani.
Unduh Skrip
download.sh
dari GitHub dengan menjalankan perintah berikut:wget https://raw.githubusercontent.com/meta-llama/llama3/main/download.sh chmod +x download.sh
Untuk mendownload bobot model, jalankan skrip
download.sh
yang telah Anda didownload dari GitHub.Jika diminta, masukkan URL yang ditandatangani dari email yang Anda terima di bagian sebelumnya.
Saat diminta mendownload model, masukkan
70B
.
Mengonversi bobot model ke format Saxml
Jalankan perintah berikut untuk mendownload Saxml:
git clone https://github.com/google/saxml.git
Jalankan perintah berikut untuk mengonfigurasi lingkungan virtual Python:
python -m venv . source bin/activate
Jalankan perintah berikut untuk menginstal dependensi:
pip install --upgrade pip pip install paxml pip install praxis pip install torch
Untuk mengonversi bobot model ke format Saxml, jalankan perintah berikut:
python3 saxml/saxml/tools/convert_llama_ckpt.py \ --base PATH_TO_META_LLAMA3 \ --pax PATH_TO_PAX_LLAMA3 \ --model-size llama3_70b
Ganti kode berikut:
PATH_TO_META_LLAMA3
: jalur ke direktori yang berisi bobot model yang didownloadPATH_TO_PAX_LLAMA3
: jalur ke direktori tempat menyimpan bobot model yang dikonversi
Model yang dikonversi akan dimasukkan ke dalam Folder
$PATH_TO_PAX_LLAMA3/checkpoint_00000000
.Salin file tokenizer dari direktori asli ke subfolder bernama
vocabs
sebagai berikut:cp $PATH_TO_META_LLAMA3/tokenizer.model $PATH_TO_PAX_LLAMA3/vocabs/tokenizer.model
Tambahkan file
commit_success.txt
kosong di folder$PATH_TO_PAX_LLAMA3
serta subfoldermetadata
danstate
dalam folder tersebut sebagai berikut:touch $PATH_TO_PAX_LLAMA3/checkpoint_00000000/commit_success.txt touch $PATH_TO_PAX_LLAMA3/checkpoint_00000000/metadata/commit_success.txt touch $PATH_TO_PAX_LLAMA3/checkpoint_00000000/state/commit_success.txt
Folder
$PATH_TO_PAX_LLAMA3
sekarang berisi folder dan file:$PATH_TO_PAX_LLAMA3/checkpoint_00000000/commit_success.txt $PATH_TO_PAX_LLAMA3/checkpoint_00000000/metadata/ $PATH_TO_PAX_LLAMA3/checkpoint_00000000/metadata/commit_success.txt $PATH_TO_PAX_LLAMA3/checkpoint_00000000/state/ $PATH_TO_PAX_LLAMA3/checkpoint_00000000/state/commit_success.txt $PATH_TO_PAX_LLAMA3/vocabs/tokenizer.model
Membuat bucket Cloud Storage
Membuat bucket Cloud Storage untuk menyimpan bobot model yang dikonversi.
Di Cloud Shell, jalankan perintah dengan mengganti PROJECT_ID dengan project ID Anda:
projectid=PROJECT_ID gcloud config set project ${projectid}
Untuk membuat bucket, jalankan perintah berikut:
gcloud storage buckets create gs://WEIGHTS_BUCKET_NAME
Ganti WEIGHTS_BUCKET_NAME dengan nama yang Anda inginkan yang akan digunakan untuk bucket.
Menyalin bobot model ke bucket Cloud Storage
Untuk menyalin bobot model ke bucket, jalankan perintah berikut:
gcloud storage cp PATH_TO_PAX_LLAMA3/* gs://WEIGHTS_BUCKET_NAME/llama3/pax_70b/ --recursive
Upload model
Container Saxml bawaan tersedia di
us-docker.pkg.dev/vertex-ai/prediction/sax-tpu:latest
.
Untuk mengupload resource Model
ke Vertex AI Prediction menggunakan bawaan
container Saxml, jalankan
Perintah gcloud ai models upload
sebagai berikut:
gcloud ai models upload \
--region=LOCATION \
--display-name=MODEL_DISPLAY_NAME \
--container-image-uri=us-docker.pkg.dev/vertex-ai/prediction/sax-tpu:latest \
--artifact-uri='gs://WEIGHTS_BUCKET_NAME/llama3/pax_70b' \
--container-args='--model_path=saxml.server.pax.lm.params.lm_cloud.LLaMA3_70BFP16x16' \
--container-args='--platform_chip=tpuv5e' \
--container-args='--platform_topology=4x4' \
--container-args='--ckpt_path_suffix=checkpoint_00000000' \
--container-deployment-timeout-seconds=2700 \
--container-ports=8502 \
--project=PROJECT_ID
Lakukan penggantian berikut:
LOCATION
: wilayah tempat Anda menggunakan Vertex AI. Perlu diperhatikan bahwa TPU hanya tersedia dius-west1
.MODEL_DISPLAY_NAME
: nama tampilan yang Anda inginkan untuk model AndaPROJECT_ID
: ID project Google Cloud Anda
Membuat endpoint prediksi online
Untuk membuat endpoint, jalankan perintah berikut:
gcloud ai endpoints create \
--region=LOCATION \
--display-name=ENDPOINT_DISPLAY_NAME \
--project=PROJECT_ID
Ganti ENDPOINT_DISPLAY_NAME
dengan nama tampilan yang Anda inginkan
endpoint Anda.
Men-deploy model ke endpoint
Setelah endpoint siap, deploy model ke endpoint.
Dalam tutorial ini, Anda akan men-deploy model Llama 3 70B yang di-sharding selama 16 detik Chip Cloud TPU v5e menggunakan topologi 4x4. Namun, Anda dapat menentukan berikut ini adalah topologi Cloud TPU multi-host yang didukung:
Jenis Mesin | Topologi | Jumlah TPU chip | Jumlah Host |
---|---|---|---|
ct5lp-hightpu-4t |
4x4 | 16 | 2 |
ct5lp-hightpu-4t |
4x8 | 32 | 4 |
ct5lp-hightpu-4t |
8x8 | 64 | 8 |
ct5lp-hightpu-4t |
8x16 | 128 | 16 |
ct5lp-hightpu-4t |
16x16 | 256 | 32 |
Jika Anda menerapkan model Llama berbeda yang ditentukan dalam Repo GitHub Saxml, pastikan bahwa itu dipartisi agar sesuai dengan jumlah perangkat yang Anda dan Cloud TPU memiliki memori yang cukup untuk memuat model.
Untuk mengetahui informasi tentang cara men-deploy model pada Cloud TPU dengan host tunggal, lihat Men-deploy model.
Untuk mengetahui informasi selengkapnya tentang jenis Cloud TPU v5e, lihat TPU v5e.
Dapatkan ID endpoint untuk endpoint prediksi online:
ENDPOINT_ID=$(gcloud ai endpoints list \ --region=LOCATION \ --filter=display_name=ENDPOINT_NAME \ --format="value(name)")
Dapatkan ID model untuk model Anda:
MODEL_ID=$(gcloud ai models list \ --region=LOCATION \ --filter=display_name=DEPLOYED_MODEL_NAME \ --format="value(name)")
Deploy model ke endpoint:
gcloud ai endpoints deploy-model $ENDPOINT_ID \ --region=LOCATION \ --model=$MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --machine-type=ct5lp-hightpu-4t \ --tpu-topology=4x4 \ --traffic-split=0=100
Ganti DEPLOYED_MODEL_NAME dengan nama untuk yang di-deploy. Nama ini dapat sama dengan nama tampilan model (MODEL_DISPLAY_NAME).
Waktu operasi deployment mungkin habis.
Perintah
deploy-model
menampilkan ID operasi yang dapat digunakan untuk memeriksa ketika operasi selesai. Anda dapat menanyakan status operasi hingga respons menyertakan"done": true
. Gunakan perintah berikut untuk lakukan polling status:gcloud ai operations describe \ --region=LOCATION \ OPERATION_ID
Ganti OPERATION_ID dengan ID operasi yang ditampilkan oleh perintah sebelumnya.
Mendapatkan prediksi online dari model yang di-deploy
Untuk mendapatkan prediksi online dari endpoint Vertex AI Prediction,
jalankan gcloud ai endpoints predict
baris perintah.
Jalankan perintah berikut untuk membuat file
request.json
yang berisi contoh permintaan prediksi:cat << EOF > request.json {"instances": [{"text_batch": "the distance between Earth and Moon is "}]} EOF
Untuk mengirim permintaan prediksi online ke endpoint, jalankan perintah berikut berikut:
gcloud ai endpoints predict $ENDPOINT_ID \ --project=PROJECT_ID \ --region=LOCATION \ --json-request=request.json
Pembersihan
Agar tidak menimbulkan Vertex AI lebih lanjut biaya, hapus resource Google Cloud yang Anda buat selama tutorial ini:
Untuk membatalkan deployment model dari endpoint dan menghapus endpoint, jalankan perintah berikut:
ENDPOINT_ID=$(gcloud ai endpoints list \ --region=LOCATION \ --filter=display_name=ENDPOINT_NAME \ --format="value(name)") DEPLOYED_MODEL_ID=$(gcloud ai endpoints describe $ENDPOINT_ID \ --region=LOCATION \ --format="value(deployedModels.id)") gcloud ai endpoints undeploy-model $ENDPOINT_ID \ --region=LOCATION \ --deployed-model-id=$DEPLOYED_MODEL_ID gcloud ai endpoints delete $ENDPOINT_ID \ --region=LOCATION \ --quiet
Untuk menghapus model, jalankan perintah berikut:
MODEL_ID=$(gcloud ai models list \ --region=LOCATION \ --filter=display_name=DEPLOYED_MODEL_NAME \ --format="value(name)") gcloud ai models delete $MODEL_ID \ --region=LOCATION \ --quiet