Questa pagina descrive come eseguire l'ottimizzazione supervisionata su modelli aperti come Llama 3.1.
Metodi di ottimizzazione supportati
Adattamento a basso ranking (LoRA): LoRA è un metodo di ottimizzazione efficiente in termini di parametri che regola solo un sottoinsieme di parametri. È più conveniente e richiede meno dati di addestramento rispetto all'ottimizzazione completa. D'altra parte, il fine-tuning completo ha un potenziale di qualità superiore perché vengono modificati tutti i parametri.
Modelli supportati
meta/[email protected]
meta/[email protected]
meta/[email protected]
: supporta solo l'ottimizzazione completameta/[email protected]
: supporta solo l'ottimizzazione completameta/[email protected]
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI and Cloud Storage APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI and Cloud Storage APIs.
- Installa e inizializza l'SDK Vertex AI Python
- Importa le seguenti librerie:
import os import time import uuid import vertexai vertexai.init(project=PROJECT_ID, location=REGION) from google.cloud import aiplatform from vertexai.preview.tuning import sft, SourceModel
Prepara il set di dati per l'ottimizzazione
Per l'ottimizzazione è necessario un set di dati di addestramento. Ti consigliamo di preparare un set di dati di convalida facoltativo se vuoi valutare il rendimento del modello ottimizzato.
Il set di dati deve essere in uno dei seguenti formati JSON Lines (JSONL) supportati, in cui ogni riga contiene un singolo esempio di ottimizzazione.
Formato della chat a turni
{"messages": [ {"content": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles.", "role": "system"}, {"content": "Summarize the paper in one paragraph.", "role": "user"}, {"content": " Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ...", "role": "assistant"} ]}
Carica i file JSONL in Cloud Storage.
Crea job di ottimizzazione
Puoi sintonizzarti su:
- Un modello di base supportato, come Llama 3.1
Un modello con la stessa architettura di uno dei modelli di base supportati. Può trattarsi di un checkpoint del modello personalizzato di un repository come Hugging Face o di un modello ottimizzato in precedenza da un job di ottimizzazione di Vertex AI. In questo modo puoi continuare a ottimizzare un modello già ottimizzato.
Cloud Console
Puoi avviare il perfezionamento nei seguenti modi:
Vai alla scheda del modello, fai clic su Ottimizza e scegli Ottimizzazione gestita.
Vai alla scheda del modello Llama 3.1
o
Vai alla pagina Ottimizzazione e fai clic su Crea modello ottimizzato.
Compila i parametri e fai clic su Avvia ottimizzazione.
Viene avviato un job di ottimizzazione, che puoi visualizzare nella pagina Ottimizzazione nella scheda Ottimizzazione gestita.
Una volta terminato il job di ottimizzazione, puoi visualizzare le informazioni sul modello ottimizzato nella scheda Dettagli.
SDK Vertex AI per Python
Sostituisci i valori dei parametri con i tuoi e poi esegui il seguente codice per creare un job di ottimizzazione:
sft_tuning_job = sft.preview_train( source_model=SourceModel( base_model="meta/[email protected]", # Optional, folder that either a custom model checkpoint or previously tuned model custom_base_model="gs://{STORAGE-URI}", ), tuning_mode="FULL", # FULL or PEFT_ADAPTER epochs=3, train_dataset="gs://{STORAGE-URI}", # JSONL file validation_dataset="gs://{STORAGE-URI}", # JSONL file output_uri="gs://{STORAGE-URI}", )
Al termine del job, gli artefatti del modello ottimizzato vengono archiviati nella cartella <output_uri>/postprocess/node-0/checkpoints/final
.
Esegui il deployment del modello ottimizzato
Puoi eseguire il deployment del modello ottimizzato su un endpoint Vertex AI. Puoi anche esportare il modello ottimizzato da Cloud Storage e implementarlo altrove.
Per eseguire il deployment del modello ottimizzato su un endpoint Vertex AI:
Cloud Console
Vai alla pagina Model Garden e fai clic su Esegui il deployment del modello con pesi personalizzati.
Compila i parametri e fai clic su Esegui il deployment.
SDK Vertex AI per Python
Esegui il deployment di un G2 machine
utilizzando un container predefinito:
from vertexai.preview import model_garden MODEL_ARTIFACTS_STORAGE_URI = "gs://{STORAGE-URI}/postprocess/node-0/checkpoints/final" model = model_garden.CustomModel( gcs_uri=MODEL_ARTIFACTS_STORAGE_URI, ) # deploy the model to an endpoint using GPUs. Cost will incur for the deployment endpoint = model.deploy( machine_type="g2-standard-12", accelerator_type="NVIDIA_L4", accelerator_count=1, )
Ottenere un'inferenza
Una volta eseguito il deployment, puoi inviare richieste all'endpoint con prompt di testo. Tieni presente che l'esecuzione dei primi prompt richiederà più tempo.
# Loads the deployed endpoint endpoint = aiplatform.Endpoint("projects/{PROJECT_ID}/locations/{REGION}/endpoints/{endpoint_name}") prompt = "Summarize the following article. Article: Preparing a perfect risotto requires patience and attention to detail. Begin by heating butter in a large, heavy-bottomed pot over medium heat. Add finely chopped onions and minced garlic to the pot, and cook until they're soft and translucent, about 5 minutes. Next, add Arborio rice to the pot and cook, stirring constantly, until the grains are coated with the butter and begin to toast slightly. Pour in a splash of white wine and cook until it's absorbed. From there, gradually add hot chicken or vegetable broth to the rice, stirring frequently, until the risotto is creamy and the rice is tender with a slight bite.. Summary:" # Define input to the prediction call instances = [ { "prompt": "What is a car?", "max_tokens": 200, "temperature": 1.0, "top_p": 1.0, "top_k": 1, "raw_response": True, }, ] # Request the prediction response = endpoint.predict( instances=instances ) for prediction in response.predictions: print(prediction)
Per maggiori dettagli su come ottenere inferenze da un modello di cui è stato eseguito il deployment, consulta Ottenere un'inferenza online.
Tieni presente che i modelli open gestiti utilizzano il metodo chat.completions
anziché il metodo predict
utilizzato dai modelli di cui è stato eseguito il deployment. Per saperne di più su come ottenere inferenze dai modelli gestiti, consulta Fare una chiamata a un modello Llama.
Limiti e quote
La quota viene applicata al numero di job di ottimizzazione simultanei. Ogni progetto viene fornito con una quota predefinita per eseguire almeno un job di ottimizzazione. Si tratta di una quota globale, condivisa tra tutte le regioni disponibili e i modelli supportati. Se vuoi eseguire più job contemporaneamente, devi richiedere una quota aggiuntiva per Global concurrent managed OSS model fine-tuning jobs per project
.
Prezzi
La messa a punto ti viene fatturata in base ai prezzi per la messa a punto del modello.
Ti vengono addebitati anche i costi per i servizi correlati, come Cloud Storage e Vertex AI Prediction.
Scopri di più sui prezzi di Vertex AI, sui prezzi di Cloud Storage e utilizza il Calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.