Cette page explique comment effectuer un affinage supervisé sur des modèles ouverts tels que Llama 3.1.
Méthodes de réglage compatibles
Adaptation de rang faible (LoRA) : LoRA est une méthode de réglage des paramètres avec optimisation qui n'ajuste qu'un sous-ensemble de paramètres. Elle est plus rentable et nécessite moins de données d'entraînement que l'affinage complet. En revanche, l'affinage complet offre un potentiel de qualité plus élevé en ajustant tous les paramètres.
Modèles compatibles
meta/llama3_1@llama-3.1-8b
meta/llama3_1@llama-3.1-8b-instruct
meta/llama3-2@llama-3.2-1b-instruct
: ne prend en charge que l'affinage complet.meta/llama3-2@llama-3.2-3b-instruct
: ne prend en charge que l'affinage complet.meta/llama3-3@llama-3.3-70b-instruct
Avant de commencer
- 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.
- Installer et initialiser le SDK Vertex AI pour Python
- Importez les bibliothèques suivantes :
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 modèle de base compatible, tel que Llama 3.1
Modèle dont l'architecture est identique à celle de l'un des modèles de base compatibles. Il peut s'agir d'un point de contrôle de modèle personnalisé provenant d'un dépôt tel que Hugging Face ou d'un modèle précédemment ajusté à partir d'un job d'ajustement Vertex AI. Cela vous permet de continuer à régler un modèle qui l'a déjà été.
Vous pouvez lancer le réglage précis de différentes manières :
Accédez à la fiche du modèle, cliquez sur Affiner, puis sélectionnez Réglage géré.
Accéder à la fiche de modèle Llama 3.1
ou
Accédez à la page Réglage, puis cliquez sur Créer un modèle réglé.
Renseignez les paramètres, puis cliquez sur Commencer l'optimisation.
Accédez à la page Model Garden, puis cliquez sur Déployer un modèle avec des pondérations personnalisées.
Renseignez les paramètres, puis cliquez sur Déployer.
Préparer l'ensemble de données pour le réglage
Un ensemble de données d'entraînement est nécessaire pour le réglage. Nous vous recommandons de préparer un ensemble de données de validation facultatif si vous souhaitez évaluer les performances de votre modèle ajusté.
Votre ensemble de données doit être dans l'un des formats JSON Lines (JSONL) acceptés suivants, où chaque ligne contient un seul exemple de réglage.
Format de chat au tour par tour
{"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"}
]}
Importez vos fichiers JSONL dans Cloud Storage.
Créer un job de réglage
Vous pouvez écouter les stations suivantes :
Console Cloud
Une tâche de réglage démarre. Vous pouvez la consulter sur la page "Réglage", dans l'onglet Réglage géré.
Une fois le job de réglage terminé, vous pouvez afficher les informations sur le modèle réglé dans l'onglet Détails.
SDK Vertex AI pour Python
Remplacez les valeurs des paramètres par les vôtres, puis exécutez le code suivant pour créer un job d'optimisation :
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}",
)
Une fois le job terminé, les artefacts du modèle réglé sont stockés dans le dossier <output_uri>/postprocess/node-0/checkpoints/final
.
Déployer le modèle réglé
Vous pouvez déployer le modèle ajusté sur un point de terminaison Vertex AI. Vous pouvez également exporter le modèle ajusté depuis Cloud Storage et le déployer ailleurs.
Pour déployer le modèle ajusté sur un point de terminaison Vertex AI :
Console Cloud
SDK Vertex AI pour Python
Déployez un G2 machine
à l'aide d'un conteneur prédéfini :
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,
)
Obtenir une inférence
Une fois le déploiement réussi, vous pouvez envoyer des requêtes au point de terminaison avec des requêtes textuelles. Notez que l'exécution des premières requêtes prendra plus de temps.
# 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)
Pour en savoir plus sur l'obtention d'inférences à partir d'un modèle déployé, consultez Obtenir une inférence en ligne.
Notez que les modèles ouverts gérés utilisent la méthode chat.completions
au lieu de la méthode predict
utilisée par les modèles déployés. Pour savoir comment obtenir des inférences à partir de modèles gérés, consultez Appeler un modèle Llama.
Limites et quotas
Le quota est appliqué au nombre de jobs de réglage simultanés. Chaque projet est associé à un quota par défaut pour exécuter au moins un job de réglage. Il s'agit d'un quota mondial, partagé entre toutes les régions disponibles et tous les modèles compatibles. Si vous souhaitez exécuter plus de jobs simultanément, vous devez demander un quota supplémentaire pour Global
concurrent managed OSS model fine-tuning jobs per project
.
Tarifs
L'ajustement vous est facturé en fonction de la tarification de l'ajustement de modèles.
Vous êtes également facturé pour les services associés, tels que Cloud Storage et Vertex AI Prediction.
Découvrez les tarifs de Vertex AI et de Cloud Storage, puis utilisez le simulateur de coût pour générer une estimation des coûts en fonction de votre utilisation prévue.