Llama 3 è un modello linguistico di grandi dimensioni (LLM) open source di Meta. Questa guida mostra come gestire un LLM Llama 3 utilizzando Tensor Processing Unit (TPU) multi-host su Gemini Enterprise Agent Platform con Saxml.
In questa guida, scarichi i pesi e il tokenizer del modello Llama 3 70B e li esegui il deployment su Gemini Enterprise Agent Platform che esegue Saxml su TPU.
Prima di iniziare
Ti consigliamo di utilizzare una VM M2 ottimizzato per la memoria per scaricare il modello e convertirlo in Saxml. Questo perché il processo di conversione del modello richiede una quantità significativa di memoria e potrebbe non riuscire se scegli un tipo di macchina con memoria insufficiente.
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the Agent Platform and Artifact Registry APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Nella console Cloud de Confiance , attiva Cloud Shell.
Nella parte inferiore della console Cloud de Confiance viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
- Segui la documentazione di Artifact Registry per installare Docker.
- Assicurati di disporre di quote sufficienti per 16 chip TPU v5e per Gemini Enterprise Agent Platform.
Questo tutorial presuppone che tu stia utilizzando Cloud Shell per interagire con Cloud de Confiance by S3NS. Se vuoi utilizzare una shell diversa da Cloud Shell, esegui la seguente configurazione aggiuntiva:
-
Installa Google Cloud CLI.
-
Configura gcloud CLI per utilizzare la tua identità federata.
Per saperne di più, consulta Accedi a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init
Se utilizzi una shell diversa da Cloud Shell per il deployment del modello, assicurati che la versione di Google Cloud CLI sia successiva alla 475.0.0. Puoi aggiornare Google Cloud CLI eseguendo il comando
gcloud components update.
Se esegui il deployment del modello utilizzando l'SDK Vertex AI, assicurati di avere la versione 1.50.0 o successive.
Accedere al modello e scaricare i pesi del modello
I passaggi riportati di seguito si riferiscono a un'istanza Workbench di Agent Platform con una VM ottimizzato per la memoria M2. Per informazioni sulla modifica del tipo di macchina di un'istanza Agent Platform Workbench, consulta Modificare il tipo di macchina di un'istanza Agent Platform Workbench.
Vai alla pagina del consenso per il modello Llama.
Seleziona Llama 3, compila il modulo di consenso e accetta i termini e condizioni.
Controlla la tua casella di posta in arrivo per trovare un'email contenente un URL firmato.
Scarica lo script
download.shda GitHub eseguendo questo comando:wget https://raw.githubusercontent.com/meta-llama/llama3/main/download.sh chmod +x download.shPer scaricare i pesi del modello, esegui lo script
download.shche hai scaricato da GitHub.Quando richiesto, inserisci l'URL firmato dell'email che hai ricevuto nella sezione precedente.
Quando ti viene chiesto quali modelli scaricare, inserisci
70B.
Converti i pesi del modello nel formato Saxml
Esegui questo comando per scaricare Saxml:
git clone https://github.com/google/saxml.gitEsegui questi comandi per configurare un ambiente virtuale Python:
python -m venv . source bin/activateEsegui questi comandi per installare le dipendenze:
pip install --upgrade pip pip install paxml pip install praxis pip install torchPer convertire i pesi del modello nel formato Saxml, esegui questo comando:
python3 saxml/saxml/tools/convert_llama_ckpt.py \ --base PATH_TO_META_LLAMA3 \ --pax PATH_TO_PAX_LLAMA3 \ --model-size llama3_70bSostituisci quanto segue:
PATH_TO_META_LLAMA3: il percorso della directory contenente i pesi del modello scaricatiPATH_TO_PAX_LLAMA3: il percorso della directory in cui archiviare i pesi del modello convertito
I modelli convertiti verranno inseriti nella cartella
$PATH_TO_PAX_LLAMA3/checkpoint_00000000.Copia il file del tokenizer dalla directory originale in una sottocartella denominata
vocabscome segue:cp $PATH_TO_META_LLAMA3/tokenizer.model $PATH_TO_PAX_LLAMA3/vocabs/tokenizer.modelAggiungi un file
commit_success.txtvuoto nella cartella$PATH_TO_PAX_LLAMA3e le sottocartellemetadataestatein questa cartella nel seguente modo: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.txtLa cartella
$PATH_TO_PAX_LLAMA3ora contiene le seguenti cartelle e 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
Crea un bucket Cloud Storage
Crea un bucket Cloud Storage per archiviare i pesi del modello convertiti.
In Cloud Shell, esegui i seguenti comandi, sostituendo PROJECT_ID con il tuo ID progetto:
projectid=PROJECT_ID gcloud config set project ${projectid}Per creare il bucket, esegui questo comando:
gcloud storage buckets create gs://WEIGHTS_BUCKET_NAMESostituisci WEIGHTS_BUCKET_NAME con il nome che vuoi utilizzare per il bucket.
Copia i pesi del modello nel bucket Cloud Storage
Per copiare i pesi del modello nel bucket, esegui questo comando:
gcloud storage cp PATH_TO_PAX_LLAMA3/* gs://WEIGHTS_BUCKET_NAME/llama3/pax_70b/ --recursive
Carica il modello
Un container Saxml predefinito è disponibile all'indirizzo
us-docker.pkg.dev/vertex-ai/prediction/sax-tpu:latest.
Per caricare una risorsa Model su Gemini Enterprise Agent Platform utilizzando il contenitore Saxml predefinito, esegui il comando gcloud ai models upload come segue:
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
Effettua le seguenti sostituzioni:
LOCATION: la regione in cui utilizzi Gemini Enterprise Agent Platform. Tieni presente che le TPU sono disponibili solo inus-west1.MODEL_DISPLAY_NAME: il nome visualizzato che vuoi per il modelloPROJECT_ID: l'ID del tuo Cloud de Confiance by S3NS progetto
Crea un endpoint di inferenza online
Per creare l'endpoint, esegui questo comando:
gcloud ai endpoints create \
--region=LOCATION \
--display-name=ENDPOINT_DISPLAY_NAME \
--project=PROJECT_ID
Sostituisci ENDPOINT_DISPLAY_NAME con il nome visualizzato che vuoi per
il tuo endpoint.
Eseguire il deployment del modello sull'endpoint
Quando l'endpoint è pronto, esegui il deployment del modello sull'endpoint.
In questo tutorial, esegui il deployment di un modello Llama 3 70B suddiviso in 16 chip Cloud TPU v5e utilizzando la topologia 4x4. Tuttavia, puoi specificare una delle seguenti topologie Cloud TPU multi-host supportate:
| Tipo di macchina | Topologia | Numero di chip TPU | Numero di 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 |
Se stai eseguendo il deployment di un modello Llama diverso definito nel repository GitHub Saxml, assicurati che sia partizionato in modo da corrispondere al numero di dispositivi di destinazione e che Cloud TPU abbia memoria sufficiente per caricare il modello.
Per informazioni sul deployment di un modello su Cloud TPU single-host, vedi Esegui il deployment di un modello.
Per un elenco completo dei tipi e delle regioni Cloud TPU supportati, consulta Località di Gemini Enterprise Agent Platform.
Recupera l'ID endpoint per l'endpoint di inferenza online:
ENDPOINT_ID=$(gcloud ai endpoints list \ --region=LOCATION \ --filter=display_name=ENDPOINT_NAME \ --format="value(name)")Recupera l'ID modello per il tuo modello:
MODEL_ID=$(gcloud ai models list \ --region=LOCATION \ --filter=display_name=DEPLOYED_MODEL_NAME \ --format="value(name)")Esegui il deployment del modello sull'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=100Sostituisci DEPLOYED_MODEL_NAME con un nome per il deployment. Può essere uguale al nome visualizzato del modello (MODEL_DISPLAY_NAME).
L'operazione di deployment potrebbe andare in timeout.
Il comando
deploy-modelrestituisce un ID operazione che può essere utilizzato per verificare quando l'operazione è terminata. Puoi eseguire il polling dello stato dell'operazione finché la risposta non include"done": true. Utilizza il seguente comando per controllare lo stato:gcloud ai operations describe \ --region=LOCATION \ OPERATION_IDSostituisci OPERATION_ID con l'ID operazione restituito dal comando precedente.
Ottenere inferenze online dal modello di cui è stato eseguito il deployment
Per ottenere inferenze online dall'endpoint Gemini Enterprise Agent Platform,
esegui il comando gcloud ai endpoints predict.
Esegui il comando seguente per creare un file
request.jsoncontenente una richiesta di inferenza di esempio:cat << EOF > request.json {"instances": [{"text_batch": "the distance between Earth and Moon is "}]} EOFPer inviare la richiesta di inferenza online all'endpoint, esegui questo comando:
gcloud ai endpoints predict $ENDPOINT_ID \ --project=PROJECT_ID \ --region=LOCATION \ --json-request=request.json
Esegui la pulizia
Per evitare di incorrere in ulteriori costi di Gemini Enterprise Agent Platform, elimina le risorse Cloud de Confiance che hai creato durante questo tutorial:
Per annullare il deployment del modello dall'endpoint ed eliminare l'endpoint, esegui questi comandi:
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 \ --quietPer eliminare il modello, esegui questi comandi:
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