En esta página se describe cómo llevar a cabo el ajuste fino supervisado en modelos abiertos, como Llama 3.1.
Métodos de ajuste admitidos
Adaptación de rango bajo (LoRA): LoRA es un método de ajuste eficiente de 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 fino completo tiene un mayor potencial de calidad, ya que se ajustan todos los parámetros.
Modelos admitidos
- Llama 3.3 70B Instruct (
meta/llama3_1@llama-3.1-8b
) - Llama 3.2 1B Instruct* (
meta/llama3_1@llama-3.1-8b-instruct
) - Llama 3.2 8B Instruct* (
meta/llama3-2@llama-3.2-1b-instruct
) - Llama 3.1 8B (
meta/llama3-2@llama-3.2-3b-instruct
) - Llama 3.1 8B Instruct (
meta/llama3-3@llama-3.3-70b-instruct
)
* Solo admite el ajuste fino completo
Antes de empezar
- 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.
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enable
permission. Learn how to grant roles. -
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enable
permission. Learn how to grant roles. - Instalar e inicializar el SDK de Vertex AI para Python
- 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
- Un modelo base admitido, 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 anteriormente de un trabajo de ajuste de Vertex AI. De esta forma, puedes seguir ajustando un modelo que ya se haya ajustado.
Puedes iniciar el ajuste fino de las siguientes formas:
Ve a la tarjeta del modelo, haz clic en Ajuste fino y elige Ajuste fino gestionado.
Ir a la tarjeta del modelo Llama 3.1
o
Ve a la página Ajuste y haz clic en Crear modelo ajustado.
Rellena los parámetros y haz clic en Iniciar ajuste.
Ve a la página Model Garden y haz clic en Implementar modelo con pesos personalizados.
Rellena los parámetros y haz clic en Desplegar.
Preparar el conjunto de datos para el ajuste
Para la optimización, se necesita un conjunto de datos de entrenamiento. Te recomendamos que prepares un conjunto de datos de validación opcional si quieres 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.
Completar petición
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
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 tarea de ajuste
Puedes ajustar los parámetros desde:
Consola de Cloud
De esta forma, se inicia un trabajo de ajuste que puedes ver en la página Ajuste, en la pestaña Ajuste gestionado.
Una vez que se haya completado el trabajo de ajuste, podrá ver la información sobre el modelo ajustado en la pestaña Detalles.
SDK de Vertex AI para Python
Sustituye los valores de los parámetros por los tuyos y, a continuación, ejecuta el siguiente código para crear una tarea 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 finalice el trabajo, los artefactos del modelo ajustado se almacenarán en la carpeta <output_uri>/postprocess/node-0/checkpoints/final
.
Desplegar modelo ajustado
Puedes desplegar el modelo ajustado en un endpoint de Vertex AI. También puedes exportar el modelo ajustado de Cloud Storage e implementarlo en otro lugar.
Para desplegar el modelo ajustado en un endpoint de Vertex AI, sigue estos pasos:
Consola de Cloud
SDK de Vertex AI para Python
Despliega un G2 machine
con un contenedor prediseñado:
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,
)
Obtener una inferencia
Una vez que se haya completado el despliegue, podrás enviar solicitudes al endpoint con peticiones de texto. Ten en cuenta que las primeras peticiones 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 información sobre cómo obtener inferencias de un modelo desplegado, consulta Obtener una inferencia online.
Ten en cuenta que los modelos abiertos gestionados 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 gestionados, consulta Hacer una llamada a un modelo Llama.
Límites y cuotas
La cuota se aplica al número de tareas de ajuste simultáneas. Todos los proyectos tienen una cuota predeterminada para ejecutar al menos un trabajo de ajuste. Se trata de una cuota global que se comparte entre todas las regiones disponibles y los modelos admitidos. Si quieres ejecutar más trabajos simultáneamente, debes solicitar cuota adicional para Global
concurrent managed OSS model fine-tuning jobs per project
.
Precios
La factura de la optimización se basa en los precios de la optimización de modelos.
También se te facturarán los servicios relacionados, como Cloud Storage y Vertex AI Prediction.
Consulta los precios de Vertex AI y los precios de Cloud Storage, y usa la calculadora de precios para generar una estimación de costes basada en el uso previsto.