Nesta página, descrevemos como realizar o ajuste supervisionado em modelos abertos, como o Llama 3.1.
Métodos de ajuste com suporte
Adaptação de baixo escalão (LoRA): a LoRA é um método de ajuste eficiente de parâmetros que ajusta apenas um subconjunto de parâmetros. Ele é mais econômico e exige menos dados de treinamento do que o ajuste de detalhes completo. Por outro lado, o ajuste fino completo tem um potencial de qualidade maior porque ajusta todos os parâmetros.
Modelos compatíveis
meta/llama3_1@llama-3.1-8b
meta/llama3_1@llama-3.1-8b-instruct
meta/llama3-2@llama-3.2-1b-instruct
: só oferece suporte ao ajuste fino completometa/llama3-2@llama-3.2-3b-instruct
: só oferece suporte ao ajuste fino completometa/llama3-3@llama-3.3-70b-instruct
Antes de começar
- 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.
- Instalar e inicializar o SDK da Vertex AI para Python
- Importe as bibliotecas a seguir:
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
- Um modelo de base compatível, como o Llama 3.1
Um modelo com a mesma arquitetura de um dos modelos de base compatíveis. Pode ser um ponto de verificação de modelo personalizado de um repositório como o Hugging Face ou um modelo ajustado anteriormente de um trabalho de ajuste da Vertex AI. Isso permite continuar ajustando um modelo que já foi ajustado.
É possível iniciar o ajuste refinado das seguintes maneiras:
Acesse o card do modelo, clique em Ajustar e escolha Ajuste gerenciado.
Acessar o card do modelo Llama 3.1
ou
Acesse a página Ajuste e clique em Criar modelo ajustado.
Preencha os parâmetros e clique em Iniciar ajuste.
Acesse a página Model Garden e clique em Implantar modelo com ponderações personalizadas.
Preencha os parâmetros e clique em Implantar.
Preparar o conjunto de dados para ajuste
Um conjunto de dados de treinamento é necessário para o ajuste. Recomendamos que você prepare um conjunto de dados de validação opcional se quiser avaliar a performance do modelo ajustado.
O conjunto de dados precisa estar em um dos seguintes formatos JSON Lines (JSONL) compatíveis, em que cada linha contém um único exemplo de ajuste.
Formato de chat baseado em turnos
{"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"}
]}
Faça upload dos arquivos JSONL para o Cloud Storage.
Criar job de ajuste
Você pode ajustar em:
Console do Cloud
Isso inicia um job de ajuste, que pode ser visto na página "Ajuste", na guia Ajuste gerenciado.
Quando o job de ajuste terminar, você poderá conferir as informações sobre o modelo ajustado na guia Detalhes.
SDK da Vertex AI para Python
Substitua os valores de parâmetro pelos seus e execute o código a seguir para criar um job de ajuste:
sft_tuning_job = sft.preview_train(
source_model=SourceModel(
base_model="meta/llama3_1@llama-3.1-8b",
# 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}",
)
Quando o job termina, os artefatos do modelo ajustado são armazenados na pasta <output_uri>/postprocess/node-0/checkpoints/final
.
Implantar o modelo ajustado
É possível implantar o modelo ajustado em um endpoint da Vertex AI. Também é possível exportar o modelo ajustado do Cloud Storage e implantá-lo em outro lugar.
Para implantar o modelo ajustado em um endpoint da Vertex AI:
Console do Cloud
SDK da Vertex AI para Python
Implante um G2 machine
usando um contêiner
pré-criado:
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,
)
Receber uma inferência
Depois que a implantação for concluída, você poderá enviar solicitações ao endpoint com comandos de texto. As primeiras solicitações vão levar mais tempo para serem executadas.
# 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)
Para mais detalhes sobre como receber inferências de um modelo implantado, consulte Receber uma inferência on-line.
Os modelos abertos gerenciados usam o método
chat.completions
em vez do
predict
usado pelos modelos implantados. Para mais informações sobre como receber inferências de modelos gerenciados, consulte Fazer uma chamada para um modelo do Llama.
Limites e cotas
A cota é aplicada ao número de jobs de ajuste simultâneos. Todo projeto tem
uma cota padrão para executar pelo menos um job de ajuste. Essa é uma cota global
compartilhada por todas as regiões disponíveis e modelos compatíveis. Se você quiser executar
mais jobs simultaneamente, solicite uma cota
extra para Global
concurrent managed OSS model fine-tuning jobs per project
.
Preços
A cobrança pelo ajuste é feita com base nos preços do ajuste de modelo.
Você também recebe cobranças por serviços relacionados, como o Cloud Storage e a previsão da Vertex AI.
Saiba mais sobre os preços do Vertex AI e do Cloud Storage e use a calculadora de preços para gerar uma estimativa de custo com base no uso projetado.