Ajuste um modelo aberto

Esta página descreve como realizar o ajuste preciso supervisionado em modelos abertos, como o Llama 3.1.

Modos de ajuste suportados

  • Ajuste preciso completo

  • Adaptação de baixo nível (LoRA): o LoRA é um modo de ajuste eficiente em termos de parâmetros que apenas ajusta um subconjunto de parâmetros. É mais rentável e requer menos dados de preparação do que o ajuste fino completo. Por outro lado, o ajuste preciso tem um potencial de qualidade superior, uma vez que ajusta todos os parâmetros.

Modelos suportados

  • Gemma 3 27B IT (google/gemma-3-27b-it)
  • Llama 3.1 8B (meta/llama3_1@llama-3.1-8b)
  • Llama 3.1 8B Instruct (meta/llama3_1@llama-3.1-8b-instruct)
  • Llama 3.2 1B Instruct (meta/llama3-2@llama-3.2-1b-instruct)
  • Llama 3.2 3B Instruct (meta/llama3-2@llama-3.2-3b-instruct)
  • Llama 3.3 70B Instruct (meta/llama3-3@llama-3.3-70b-instruct)
  • Qwen 3 32B (qwen/qwen3@qwen3-32b)
  • Llama 4 Scout 17B 16E Instruct (meta/llama4@llama-4-scout-17b-16e-instruct)

Regiões suportadas

  • Iowa (us-central1)
  • Países Baixos (europe-west4)

Limitações

Modelo Especificação Valor
Gemma 3 27B IT Modos de aperfeiçoamento Ajuste eficiente em termos de parâmetros
Ajuste completo
Comprimento máximo da sequência 8192
Modalidades Texto
Llama 3.1 8B Modos de aperfeiçoamento Ajuste eficiente em termos de parâmetros
Ajuste completo
Comprimento máximo da sequência 4096 (ajuste fino eficiente em termos de parâmetros)
8192 (ajuste fino completo)
Modalidades Texto
Llama 3.1 8B Instruct Modos de aperfeiçoamento Ajuste eficiente em termos de parâmetros
Ajuste completo
Comprimento máximo da sequência 4096 (ajuste fino eficiente em termos de parâmetros)
8192 (ajuste fino completo)
Modalidades Texto
Llama 3.2 1B Instruct Modos de aperfeiçoamento Ajuste total
Comprimento máximo da sequência 8192
Modalidades Texto
Llama 3.2 3B Instruct Modos de aperfeiçoamento Ajuste total
Comprimento máximo da sequência 8192
Modalidades Texto
Llama 3.3 70B Instruct Modos de aperfeiçoamento Ajuste eficiente em termos de parâmetros
Ajuste completo
Comprimento máximo da sequência 4096 (ajuste fino eficiente em termos de parâmetros)
8192 (ajuste fino completo)
Modalidades Texto
Llama 4 Scout 17B 16E Instruct Modos de aperfeiçoamento Ajuste fino eficiente em termos de parâmetros
Comprimento máximo da sequência 2048
Modalidades Texto
Imagens*

*Não são suportados conjuntos de dados mistos de exemplos apenas de texto e de imagens. Se existir, pelo menos, um exemplo de imagem no conjunto de dados, todos os exemplos apenas de texto são filtrados.
Qwen 3 32B Modos de aperfeiçoamento Ajuste eficiente em termos de parâmetros
Ajuste completo
Comprimento máximo da sequência 8192
Modalidades Texto

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.

    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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

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

  4. Enable the Vertex AI and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

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

  7. Enable the Vertex AI and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. Instale e inicialize o SDK Vertex AI para Python
  9. Importe as seguintes bibliotecas:
    import os
    import time
    import uuid
    import vertexai
    
    vertexai.init(project=PROJECT_ID, location=REGION)
    
    from google.cloud import aiplatform
    from vertexai.tuning import sft, SourceModel
    
  10. Prepare o conjunto de dados para a otimização

    É necessário um conjunto de dados de preparação para a otimização. Recomendamos que prepare um conjunto de dados de validação opcional se quiser avaliar o desempenho do modelo otimizado.

    O seu conjunto de dados tem de estar num dos seguintes formatos JSON Lines (JSONL) suportados, em que cada linha contém um único exemplo de ajuste.

    Carregue os seus ficheiros JSONL para o Cloud Storage.

    Conjuntos de dados apenas de texto

    Conclusão do comando

    {"prompt": "<prompt text>", "completion": "<ideal generated text>"}
    

    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"}
    ]}
    

    GenerateContent

    {
    "systemInstruction": {
      "parts": [{ "text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles." }]},
    "contents": [
      {"role": "user",
        "parts": [{ "text": "Summarize the paper in one paragraph." }]},
      {"role": "assistant",
        "parts": [{ "text": "Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ..." }]}
    ]}
    

    Conjuntos de dados multimodais

    Formato de chat baseado em turnos

    {"messages": [
      {"role": "user", "content": [
        {"type": "text", "text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles."},
        {"type": "image_url", "image_url": {
          "url": "gs://your-gcs-bucket/your-image.jpeg",
          "detail": "low"}}]
      },
      {"role": "assistant", "content": [
        {"type": "text", "text": "Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ..."}]
      },
      {"role": "user", "content": [
        {"type": "text", "text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles."},
        {"type": "image_url", "image_url": {
          "url": "data:image/jpeg;base64,<base64 image>",
          "detail": "low"}}]
      },
      {"role": "assistant", "content": [
        {"type": "text", "text": "Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ..."}]
      },
    ]}
    

    GenerateContent

    {
    "systemInstruction": {
      "parts": [{ "text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles." }]},
    "contents": [
      {"role": "user",
        "parts": [
          {"text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles." },
          {"file_data": {
            "mime_type": "image/jpeg", "file_uri": "gs://your-gcs-bucket/your-image.jpeg"}}]
      },
      {"role": "assistant",
        "parts": [{ "text": "Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ..." }]}
    ]}
    

    Os formatos suportados incluem JPEG, PNG, WEBP e imagens codificadas em Base64.

    Tenha em atenção que, se as suas imagens estiverem armazenadas num contentor do Cloud Storage diferente dos seus ficheiros JSONL, certifique-se de que concedeu a função do IAM Storage Object User (roles/storage.objectUser) em ambos os contentores para estas duas contas de serviço:

    • service-PROJECT_NUMBER@gcp-sa-vertex-moss-ft.iam.gserviceaccount.com
    • service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com

    Crie uma tarefa de ajuste

    Pode sintonizar a partir de:

    • Um modelo base suportado, como o Llama 3.1
    • Um modelo que tem a mesma arquitetura que um dos modelos base suportados. Pode ser um ponto de verificação de modelo personalizado de um repositório, como o Hugging Face, ou um modelo ajustado anteriormente de uma tarefa de ajuste do Vertex AI. Isto permite-lhe continuar a otimizar um modelo que já foi otimizado.

    Cloud Console

    1. Pode iniciar o ajuste preciso das seguintes formas:

      • Aceda ao cartão do modelo, clique em Ajustar e escolha Ajuste gerido.

      Aceda ao cartão do modelo Llama 3.1

      ou

      • Aceda à página Ajuste e clique em Criar modelo ajustado.

      Aceder a Ajuste

    2. Preencha os parâmetros e clique em Iniciar otimização.

    Isto inicia uma tarefa de otimização, que pode ver na página Otimização no separador Otimização gerida.

    Quando a tarefa de otimização estiver concluída, pode ver as informações sobre o modelo otimizado no separador Detalhes.

    SDK Vertex AI para Python

    Substitua os valores dos parâmetros pelos seus e, em seguida, execute o seguinte código para criar uma tarefa de otimização:

    sft_tuning_job = sft.train(
        source_model=SourceModel(
          base_model="meta/llama3_1@llama-3.1-8b",
          # Optional, folder that is 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 a tarefa termina, os artefactos do modelo para o modelo otimizado são armazenados na pasta <output_uri>/postprocess/node-0/checkpoints/final.

    Implemente o modelo otimizado

    Pode implementar o modelo otimizado num ponto final do Vertex AI. Também pode exportar o modelo otimizado do Cloud Storage e implementá-lo noutro local.

    Para implementar o modelo otimizado num ponto final do Vertex AI:

    Cloud Console

    1. Aceda à página Model Garden e clique em Implementar modelo com ponderações personalizadas.

    Aceda ao Model Garden

    1. Preencha os parâmetros e clique em Implementar.

    SDK Vertex AI para Python

    Implemente um G2 machine através de um contentor 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,
    )
    

    Obtenha uma inferência

    Assim que a implementação for bem-sucedida, pode enviar pedidos para o ponto final com comandos de texto. Tenha em atenção que os primeiros comandos demoram mais tempo a ser executados.

    # 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 obter inferências a partir de um modelo implementado, consulte o artigo Obtenha uma inferência online.

    Tenha em atenção que os modelos abertos geridos usam o método chat.completions em vez do método predict usado pelos modelos implementados. Para mais informações sobre como obter inferências de modelos geridos, consulte o artigo Faça uma chamada a um modelo Llama.

    Limites e quotas

    A quota é aplicada ao número de tarefas de ajuste simultâneas. Todos os projetos incluem uma quota predefinida para executar, pelo menos, um trabalho de otimização. Esta é uma quota global, partilhada em todas as regiões disponíveis e modelos suportados. Se quiser executar mais tarefas em simultâneo, tem de pedir uma quota adicional para Global concurrent managed OSS model fine-tuning jobs per project.

    Preços

    A faturação da otimização é feita com base nos preços da otimização de modelos.

    Também lhe é faturado o uso de serviços relacionados, como o Cloud Storage e o Vertex AI Prediction.

    Saiba mais sobre os preços do Vertex AI, os preços do Cloud Storage e use a calculadora de preços para gerar uma estimativa de custo com base na sua utilização prevista.

    O que se segue?