Ajustar um modelo aberto

Neste guia, mostramos como realizar o ajuste supervisionado em modelos abertos, como o Llama 3.1. Neste guia, abordamos os seguintes tópicos:

Modelos e métodos de ajuste compatíveis

Modelos compatíveis

Métodos de ajuste

Método de ajuste Descrição Prós Contras
Ajuste de detalhes completo Ajusta todos os parâmetros do modelo durante o treinamento. Tem potencial para a mais alta qualidade e desempenho. Exige mais recursos computacionais, tempo e um conjunto de dados maior.
Adaptação de baixa classificação (LoRA) Um método de ajuste com eficiência de parâmetros que ajusta apenas um pequeno subconjunto dos parâmetros do modelo. Mais eficiente em termos de custos, exige menos dados de treinamento e é mais rápido do que o ajuste detalhado completo. Pode não atingir o mesmo nível de qualidade que o ajuste fino completo para tarefas altamente complexas.

Antes de começar

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI and Cloud Storage APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI and Cloud Storage APIs.

    Enable the APIs

  8. Instalar e inicializar o SDK da Vertex AI para Python
  9. 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 
  10. Preparar o conjunto de dados para ajuste

    O ajuste requer um conjunto de dados de treinamento. Para ter os melhores resultados, prepare também um conjunto de dados de validação opcional para avaliar a performance do modelo ajustado.

    O conjunto de dados precisa estar no formato JSON Lines (JSONL), 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 um modelo de ajuste

É possível ajustar um modelo de uma das seguintes fontes:

  • Um modelo de base compatível, como o Llama 3.1. Para uma lista de modelos compatíveis, consulte Modelos compatíveis.
  • Um modelo com a mesma arquitetura de um modelo de base compatível. 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 job de ajuste da Vertex AI. Isso permite continuar ajustando um modelo que já foi ajustado.

Console do Cloud

  1. É possível iniciar um job de ajuste refinado de uma das seguintes maneiras:

  2. Configure as definições do job de ajuste e clique em Iniciar ajuste.

Isso inicia um job de ajuste, que pode ser monitorado na página Ajuste, na guia Ajuste gerenciado.

Depois que o job de ajuste terminar, você poderá conferir informações sobre o modelo ajustado na guia Detalhes.

SDK da Vertex AI para Python

Para criar um job de ajuste, substitua os valores de marcador no código a seguir e execute-o:

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}", ) 

Quando o job termina, os artefatos do modelo 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

  1. Acesse a página Model Garden e clique em Implantar modelo com ponderações personalizadas.

    Acessar o Model Garden

  2. Configure as opções de implantação e clique em Implantar.

SDK da Vertex AI para Python

Para implantar o modelo, use um G2 machine com 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 de implantar o modelo em um endpoint, é possível enviar solicitações de previsão para ele. Os primeiros pedidos podem ter uma latência maior.

# 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 informações 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 método 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 Vertex AI aplica uma cota ao número de jobs de ajuste simultâneos. Cada 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.

A seguir