Questa guida mostra come pubblicare un modello linguistico di grandi dimensioni (LLM) Gemma con modelli aperti utilizzando Tensor Processing Unit (TPU) su Vertex AI Prediction con Saxml. In questa guida scaricherai i modelli Gemma ottimizzati per le istruzioni dei parametri 2B e 7B in Cloud Storage ed eseguirai il deployment su Vertex AI Prediction che esegue Saxml sulle TPU.
Contesto
Gestisci Gemma utilizzando le TPU su Vertex AI Prediction con Saxml. Puoi sfruttare una soluzione AI gestita che si occupa dell'infrastruttura di basso livello e offre un modo conveniente per gestire gli LLM. Questa sezione descrive le tecnologie chiave utilizzate in questo tutorial.
Gemma
Gemma è un insieme di soluzioni aperte, leggere e generative modelli di intelligenza artificiale (AI) rilasciati con licenza aperta. Queste IA disponibili per l'esecuzione su applicazioni, hardware, dispositivi mobili e i servizi in hosting. Puoi utilizzare lo Modelli Gemma per la generazione di testo, ma puoi anche ottimizzarli per attività specializzate.
Per saperne di più, consulta la documentazione di Gemma.
Saxml
Saxml è un sistema sperimentale che pubblica Paxml, JAX, e PyTorch per l'inferenza. Ai fini di questo tutorial vedremo come gestire Gemma su TPU più convenienti per Saxml. La configurazione per le GPU è simile. Saxml offre script per creare container per Vertex AI Prediction che utilizzeremo in questo tutorial.
TPU
Le TPU sono circuiti integrati specifici per le applicazioni sviluppati da Google (ASIC) utilizzati per accelerare framework di elaborazione dati come TensorFlow, PyTorch e JAX.
Questo tutorial è utile per i modelli Gemma 2B e Gemma 7B. Vertex AI Prediction ospita questi modelli su i seguenti pool di nodi TPU v5e con host singolo:
- Gemma 2B: ospitato in un pool di nodi TPU v5e con
1x1
che rappresenta un chip TPU. Il tipo di macchina per i nodi èct5lp-hightpu-1t
. - Gemma 7B: ospitato in un pool di nodi TPU v5e con
2x2
che rappresenta quattro chip TPU. Il tipo di macchina per i nodi èct5lp-hightpu-4t
.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Attiva Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Attiva Vertex AI API.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Questo tutorial presuppone che utilizzi Cloud Shell per interagire con Google Cloud. Se vuoi una shell diversa da Cloud Shell eseguire la seguente configurazione aggiuntiva:
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Assicurati di avere una quota sufficiente per i chip TPU v5e per
Vertex AI Prediction. Per impostazione predefinita, questa quota è 0.
Per una topologia
1x1
, il valore deve essere 1. Per2x2
, deve essere 4. Per eseguire entrambe le topologie, il valore deve essere 5. - Crea un account Kaggle se non ne hai già uno.
Ottieni l'accesso al modello
Tieni presente che Cloud Shell potrebbe non disporre di risorse sufficienti per scaricare i pesi del modello. In questo caso, puoi creare Vertex AI Workbench per l'esecuzione di quell'attività.
Per ottenere l'accesso ai modelli Gemma per il deployment in Vertex AI Prediction, devi accedere a Kaggle, firma il contratto di consenso e ottieni Un Kaggle il token dell'API. In questo tutorial, utilizzerai un secret di Kubernetes per Kaggle e credenziali.
Firma il contratto di consenso di licenza
Devi firmare il contratto di consenso per utilizzare Gemma. Segui queste istruzioni:
- Accedere alla pagina relativa al consenso del modello su Kaggle.com.
- Accedi a Kaggle se non l'hai ancora fatto.
- Fai clic su Richiedi accesso.
- Nella sezione Scegli l'account per il consenso, seleziona Verifica tramite Kaggle per utilizzare il tuo account Kaggle per il consenso.
- Accetta i Termini e condizioni del modello.
Genera un token di accesso
Per accedere al modello tramite Kaggle, devi disporre di un token API Kaggle.
Segui questa procedura per generare un nuovo token, se non ne hai già uno:
- Nel browser, vai alle impostazioni di Kaggle.
Nella sezione API, fai clic su Create New Token (Crea nuovo token).
È stato scaricato un file denominato
kaggle.json
.
Carica il token di accesso su Cloud Shell
In Cloud Shell, puoi caricare il token dell'API Kaggle in Google Cloud progetto:
- In Cloud Shell, fai clic su > Carica. Altro
- Seleziona File e fai clic su Scegli file.
- Apri il file
kaggle.json
. - Fai clic su Carica.
crea il bucket Cloud Storage
Crea un bucket Cloud Storage per archiviare i checkpoint del modello.
In Cloud Shell, esegui questo comando:
gcloud storage buckets create gs://CHECKPOINTS_BUCKET_NAME
Sostituisci CHECKPOINTS_BUCKET_NAME con il nome del Bucket Cloud Storage in cui sono archiviati i checkpoint del modello.
Copia il modello nel bucket Cloud Storage
In Cloud Shell, esegui questo comando:
pip install kaggle --break-system-packages
# For Gemma 2B
mkdir -p /data/gemma_2b-it
kaggle models instances versions download google/gemma/pax/2b-it/1 --untar -p /data/gemma_2b-it
gcloud storage cp /data/gemma_2b-it/* gs://CHECKPOINTS_BUCKET_NAME/gemma_2b-it/ --recursive
# For Gemma 7B
mkdir -p /data/gemma_7b-it
kaggle models instances versions download google/gemma/pax/7b-it/1 --untar -p /data/gemma_7b-it
gcloud storage cp /data/gemma_7b-it/* gs://CHECKPOINTS_BUCKET_NAME/gemma_7b-it/ --recursive
Deployment del modello
Caricamento di un modello
Per caricare una risorsa Model
che utilizza il tuo container Saxml, esegui questo comando gcloud ai models upload
comando:
Gemma 2B-it
gcloud ai models upload \
--region=LOCATION \
--display-name=DEPLOYED_MODEL_NAME \
--container-image-uri=us-docker.pkg.dev/vertex-ai/prediction/sax-tpu:latest \
--artifact-uri='gs://CHECKPOINTS_BUCKET_NAME/gemma_2b-it/' \
--container-args='--model_path=saxml.server.pax.lm.params.gemma.Gemma2BFP16' \
--container-args='--platform_chip=tpuv5e' \
--container-args='--platform_topology=2x2' \
--container-args='--ckpt_path_suffix=checkpoint_00000000' \
--container-ports=8502
Gemma 7B-it
gcloud ai models upload \
--region=LOCATION \
--display-name=DEPLOYED_MODEL_NAME \
--container-image-uri=us-docker.pkg.dev/vertex-ai/prediction/sax-tpu:latest \
--artifact-uri='gs://CHECKPOINTS_BUCKET_NAME/gemma_7b-it/' \
--container-args='--model_path=saxml.server.pax.lm.params.gemma.Gemma7BFP16' \
--container-args='--platform_chip=tpuv5e' \
--container-args='--platform_topology=2x2' \
--container-args='--ckpt_path_suffix=checkpoint_00000000' \
--container-ports=8502
Sostituisci quanto segue:
- PROJECT_ID: l'ID del tuo account Google Cloud progetto
- LOCATION_ID: la regione in cui stai utilizzando Vertex AI. Tieni presente che le TPU sono disponibili solo in us-west1.
-
DEPLOYED_MODEL_NAME: un nome per
DeployedModel
. Puoi utilizzare il nome visualizzatoModel
anche perDeployedModel
.
Creazione di un endpoint
Devi eseguire il deployment del modello su un endpoint prima che il modello possa essere utilizzato
le previsioni online. Se esegui il deployment di un modello in un endpoint esistente,
puoi saltare questo passaggio. L'esempio seguente utilizza il metodo
gcloud ai endpoints create
comando:
gcloud ai endpoints create \
--region=LOCATION \
--display-name=ENDPOINT_NAME
Sostituisci quanto segue:
- LOCATION_ID: la regione in cui stai utilizzando Vertex AI.
- ENDPOINT_NAME: il nome visualizzato dell'endpoint.
Lo strumento Google Cloud CLI potrebbe richiedere alcuni secondi per creare l'endpoint.
esegui il deployment del modello nell'endpoint
Quando l'endpoint è pronto, esegui il deployment del modello nell'endpoint.
ENDPOINT_ID=$(gcloud ai endpoints list \
--region=LOCATION \
--filter=display_name=ENDPOINT_NAME \
--format="value(name)")
MODEL_ID=$(gcloud ai models list \
--region=LOCATION \
--filter=display_name=DEPLOYED_MODEL_NAME \
--format="value(name)")
gcloud ai endpoints deploy-model $ENDPOINT_ID \
--region=LOCATION \
--model=$MODEL_ID \
--display-name=DEPLOYED_MODEL_NAME \
--machine-type=ct5lp-hightpu-4t \
--traffic-split=0=100
Sostituisci quanto segue:
- LOCATION_ID: la regione in cui stai utilizzando Vertex AI.
- ENDPOINT_NAME: il nome visualizzato dell'endpoint.
-
DEPLOYED_MODEL_NAME: un nome per
DeployedModel
. Puoi utilizzare il nome visualizzatoModel
anche perDeployedModel
.
Il deployment di Gemma 2B
può essere eseguito su una macchina ct5lp-hightpu-1t più piccola, in questo caso
devi specificare --platform_topology=1x1
durante il caricamento del modello.
Lo strumento Google Cloud CLI potrebbe richiedere alcuni minuti per eseguire il deployment del modello endpoint. Una volta eseguito il deployment del modello, questo comando visualizza il seguente output:
Deployed a model to the endpoint xxxxx. Id of the deployed model: xxxxx.
Generazione di previsioni online dal modello di cui è stato eseguito il deployment
Per richiamare il modello tramite l'endpoint Vertex AI Prediction, formatta la richiesta di previsione utilizzando un oggetto JSON standard Inference Request .
L'esempio seguente utilizza la classe gcloud ai endpoints predict
comando:
ENDPOINT_ID=$(gcloud ai endpoints list \
--region=LOCATION \
--filter=display_name=ENDPOINT_NAME \
--format="value(name)")
gcloud ai endpoints predict $ENDPOINT_ID \
--region=LOCATION \
--http-headers=Content-Type=application/json \
--json-request instances.json
Sostituisci quanto segue:
- LOCATION_ID: la regione in cui stai utilizzando Vertex AI.
- ENDPOINT_NAME: il nome visualizzato dell'endpoint.
- instances.json ha il seguente formato:
{"instances": [{"text_batch": "<your prompt>"},{...}]}
esegui la pulizia
Per evitare ulteriori incorrere in Vertex AI addebiti e Artifact Registry addebiti, elimina le risorse Google Cloud che hai creato durante questo tutorial:
Per annullare il deployment del modello nell'endpoint ed eliminare l'endpoint, esegui questo comando nella shell:
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
Sostituisci LOCATION con la regione in cui hai creato il modello una sezione precedente.
Per eliminare il modello, esegui questo comando nella shell:
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
Sostituisci LOCATION con la regione in cui hai creato il modello una sezione precedente.
Limitazioni
- Su Vertex AI Prediction le Cloud TPU sono supportate solo in
us-west1
. Per maggiori informazioni informazioni, consulta le località.
Passaggi successivi
- Scopri come eseguire il deployment di altri modelli Saxml, come Llama2 e GPT-J.