Ajusta un modelo abierto

En esta página, se describe cómo realizar el ajuste supervisado en modelos abiertos, como Llama 3.1.

Métodos de ajuste admitidos

  • Ajuste completo

  • Adaptación de bajo rango (LoRA): LoRA es un método de ajuste eficiente en cuanto a parámetros que solo ajusta un subconjunto de parámetros. Es más rentable y requiere menos datos de entrenamiento que el ajuste fino completo. Por otro lado, el ajuste completo tiene un mayor potencial de calidad, ya que ajusta todos los parámetros.

Modelos compatibles

  • meta/llama3_1@llama-3.1-8b
  • meta/llama3_1@llama-3.1-8b-instruct
  • meta/llama3-2@llama-3.2-1b-instruct: Solo admite el ajuste fino completo
  • meta/llama3-2@llama-3.2-3b-instruct: Solo admite el ajuste fino completo
  • meta/llama3-3@llama-3.3-70b-instruct

Antes de comenzar

  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. Instala e inicializa el SDK de Vertex AI para Python
  9. Importa las siguientes bibliotecas:
    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. Prepara el conjunto de datos para el ajuste

    Se requiere un conjunto de datos de entrenamiento para el ajuste. Te recomendamos que prepares un conjunto de datos de validación opcional si deseas evaluar el rendimiento de tu modelo ajustado.

    Tu conjunto de datos debe estar en uno de los siguientes formatos JSON Lines (JSONL) admitidos, en el que cada línea contiene un solo ejemplo de ajuste.

    Formato de chat por 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"}
    ]}
    

    Sube tus archivos JSONL a Cloud Storage.

    Crear trabajo de ajuste

    Puedes sintonizar desde los siguientes dispositivos:

    • Un modelo base compatible, como Llama 3.1
    • Un modelo que tiene la misma arquitectura que uno de los modelos base admitidos. Puede ser un punto de control de un modelo personalizado de un repositorio como Hugging Face o un modelo ajustado previamente de un trabajo de ajuste de Vertex AI. Esto te permite seguir ajustando un modelo que ya se ajustó.

    Consola de Cloud

    1. Puedes iniciar el ajuste fino de las siguientes maneras:

    2. Completa los parámetros y haz clic en Start tuning.

    Esto inicia un trabajo de ajuste, que puedes ver en la página Ajuste en la pestaña Ajuste administrado.

    Una vez que finalice el trabajo de ajuste, podrás ver la información sobre el modelo ajustado en la pestaña Detalles.

    SDK de Vertex AI para Python

    Reemplaza los valores de los parámetros por los tuyos y, luego, ejecuta el siguiente código para crear un trabajo 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}",
    )
    

    Cuando finaliza el trabajo, los artefactos del modelo ajustado se almacenan en la carpeta <output_uri>/postprocess/node-0/checkpoints/final.

    Implementa el modelo ajustado

    Puedes implementar el modelo ajustado en un extremo de Vertex AI. También puedes exportar el modelo ajustado desde Cloud Storage y, luego, implementarlo en otro lugar.

    Para implementar el modelo ajustado en un extremo de Vertex AI, haz lo siguiente:

    Consola de Cloud

    1. Ve a la página Model Garden y haz clic en Implementar modelo con pesos personalizados.

      Ir a Model Garden

    2. Completa los parámetros y haz clic en Implementar.

    SDK de Vertex AI para Python

    Implementa un G2 machine con un contenedor compilado previamente:

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

    Obtén una inferencia

    Una vez que la implementación se realice correctamente, podrás enviar solicitudes al extremo con instrucciones de texto. Ten en cuenta que las primeras instrucciones tardarán más en ejecutarse.

    # 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 obtener más detalles sobre cómo obtener inferencias de un modelo implementado, consulta Cómo obtener una inferencia en línea.

    Ten en cuenta que los modelos abiertos administrados usan el método chat.completions en lugar del método predict que usan los modelos implementados. Para obtener más información sobre cómo obtener inferencias de modelos administrados, consulta Cómo llamar a un modelo de Llama.

    Límites y cuotas

    La cuota se aplica a la cantidad de trabajos de ajuste simultáneos. Cada proyecto viene con una cuota predeterminada para ejecutar al menos un trabajo de ajuste. Esta es una cuota global, que se comparte en todas las regiones y modelos compatibles disponibles. Si necesitas ejecutar más trabajos de forma simultánea, debes solicitar una cuota adicional para Global concurrent managed OSS model fine-tuning jobs per project.

    Precios

    Se te factura el ajuste según los precios del ajuste de modelos.

    También se te factura por los servicios relacionados, como Cloud Storage y Vertex AI Prediction.

    Obtén información sobre los precios de Vertex AI y los precios de Cloud Storage, y usa la calculadora de precios para generar una estimación de costos según el uso previsto.

    ¿Qué sigue?