Créer une exécution d’entraînement à l’aide de l’API De réglage fin du modèle Foundation
Important
Cette fonctionnalité est disponible en préversion publique dans les régions suivantes : centralus
, eastus
, eastus2
, northcentralus
et westus
.
Cet article explique comment créer et configurer une exécution d’entraînement à l’aide de l’API Foundation Model Fine-tuning (désormais partie de l’API Mosaïque AI Model Training) et décrit toutes les parameters utilisées dans l’appel d’API. Vous pouvez également créer une exécution en utilisant l’interface utilisateur. Pour obtenir des instructions, consultez Créer une exécution d’entraînement à l’aide de l’interface utilisateur d’optimisation du modèle Foundation.
Exigences
Consultez Spécifications.
Créer une exécution d’apprentissage
Pour créer des exécutions d’apprentissage de manière programmatique, utilisez la fonction create()
. Cette fonction effectue l’apprentissage d’un modèle sur le jeu de données fourni et transforme le point de contrôle Composer en point de contrôle au format Hugging Face pour l’inférence.
Les entrées requises sont le modèle que vous souhaitez entraîner, l’emplacement de votre jeu de données d’entraînement et where pour inscrire votre modèle. Il existe également des parameters facultatifs qui vous permettent d’effectuer l’évaluation et de modifier les hyperparamètres de votre exécution.
Une fois l’exécution terminée, l’exécution terminée et le point de contrôle final sont enregistrés, le modèle est cloné et ce clone est inscrit dans Unity Catalog en tant que version de modèle pour l’inférence.
Le modèle issu de l’exécution terminée, pas la version de modèle cloné dans Unity Catalog, et ses points de contrôle Composer et Hugging Face sont enregistrés dans MLflow. Les points de contrôle Composer peuvent être utilisés pour les tâches d’optimisation continues.
Consultez Configurer une exécution d’apprentissage afin d’obtenir des informations sur les arguments pour la fonction create()
.
from databricks.model_training import foundation_model as fm
run = fm.create(
model='meta-llama/Llama-3.2-3B-Instruct',
train_data_path='dbfs:/Volumes/main/mydirectory/ift/train.jsonl', # UC Volume with JSONL formatted data
# Public HF dataset is also supported
# train_data_path='mosaicml/dolly_hhrlhf/train'
register_to='main.mydirectory', # UC catalog and schema to register the model to
)
Configurer une exécution d’apprentissage
La table suivante récapitule la parameters de la fonction foundation_model.create()
.
Paramètre | Obligatoire | Type | Description |
---|---|---|---|
model |
x | str | Nom du modèle à utiliser. Consultez Modèles pris en charge. |
train_data_path |
x | str | L’emplacement de vos données d’apprentissage. Il peut s’agir d’un emplacement dans Unity Catalog (<catalog>.<schema>.<table> ou dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl ), ou d’un jeu de données HuggingFace.Pour INSTRUCTION_FINETUNE , les données doivent être mises en forme avec chaque ligne contenant un champ prompt et response .Pour CONTINUED_PRETRAIN , c’est un dossier de fichiers .txt . Consultez Préparer les données pour le réglage précis du modèle Foundation pour les formats de données acceptés et la taille des données recommandées pour l’apprentissage du modèle pour les recommandations de taille de données. |
register_to |
x | str | Le modèle Catalogcatalog Unity et schema (<catalog>.<schema> ou <catalog>.<schema>.<custom-name> ) where est enregistré pour un déploiement facile après l'apprentissage. Si custom-name n’est pas fourni, le nom d’exécution constitue sa valeur par défaut. |
data_prep_cluster_id |
str | L’ID de cluster du cluster à utiliser pour le traitement de données Spark. Cela est nécessaire pour les tâches d’apprentissage d’instruction where. Les données d’apprentissage se trouvent dans un Delta table. Pour plus d’informations sur la recherche de l’ID de cluster, consultez Get ID de cluster. | |
experiment_path |
str | Le chemin vers l'expérience MLflow where où le résultat de l'exécution d'apprentissage (mesures et points de contrôle) est enregistré. Prend la valeur par défaut du nom d’exécution dans l’espace de travail personnel de l’utilisateur (c’est-à-dire /Users/<username>/<run_name> ). |
|
task_type |
str | Type de tâche à exécuter. Il peut s’agir de CHAT_COMPLETION (par défaut), de CONTINUED_PRETRAIN ou de INSTRUCTION_FINETUNE . |
|
eval_data_path |
str | L’emplacement distant de vos données d’évaluation (le cas échéant). Il doit respecter le même format que train_data_path . |
|
eval_prompts |
List[str] | Une liste de list chaînes d’invites pour generate des réponses pendant l’évaluation. La valeur par défaut est None (ne generate aucune invite). Les résultats sont journalisés dans l’expérience chaque fois que le modèle fait l’objet d’un point de contrôle. Les générations se produisent à chaque point de contrôle du modèle avec la génération suivante parameters: max_new_tokens: 100 , temperature: 1 , top_k: 50 , top_p: 0.95 , do_sample: true . |
|
custom_weights_path |
str | L’emplacement distant d’un point de contrôle personnalisé de modèle pour l’apprentissage. La valeur par défaut est None , ce qui signifie que l’exécution démarre à partir des pondérations préentraînées d’origine du modèle choisi. Si des pondérations personnalisées sont fournies, elles sont utilisées au lieu des pondérations préentraînées d’origine du modèle. Ces pondérations doivent être un point de contrôle Composer et doivent correspondre à l’architecture du point de model contrôle spécifié. Voir Générer sur des pondérations de modèle personnalisées |
|
training_duration |
str | Durée totale de votre exécution. La valeur par défaut est une époque ou 1ep . Peut être spécifié en époques (10ep ) ou en jetons (1000000tok ). |
|
learning_rate |
str | Taux d’apprentissage pour l’apprentissage du modèle. Pour tous les modèles autres que Llama 3.1 405B Instruct, le taux d’apprentissage par défaut est 5e-7 . Pour Llama 3.1 405B Instruct, le taux d’apprentissage par défaut est 1.0e-5 . L’optimiseur est DecoupledLionW avec des bêtas de 0,99 et 0,95 et aucune perte de pondération. Le planificateur de taux d’apprentissage est LinearWithWarmupSchedule avec un préchauffage de 2 % de la durée total d’apprentissage et un multiplicateur de taux d’apprentissage final de 0. |
|
context_length |
str | Longueur maximale de séquence d’un exemple de données. Elle est utilisée pour tronquer des données trop longues ou pour empaqueter ensemble des séquences plus courtes pour davantage d’efficacité. La valeur par défaut est 8192 jetons ou la longueur maximale du contexte pour le modèle fourni (selon la valeur inférieure). Vous pouvez utiliser ce paramètre pour configurer la longueur du contexte, mais une configuration au-delà de la longueur maximale de chaque modèle n’est pas prise en charge. Consultez les Modèles pris en charge pour la longueur de contexte maximale prise en charge de chaque modèle. |
|
validate_inputs |
Boolean | Indique s’il faut valider l’accès aux chemins d’accès d’entrée avant de soumettre le travail d’apprentissage. La valeur par défaut est True . |
Générer à partir de pondérations de modèle personnalisé
Foundation Model Fine-tuning prend en charge l’ajout de poids personnalisés à l’aide du paramètre custom_weights_path
facultatif pour entraîner et personnaliser un modèle.
getPour démarrer, setcustom_weights_path
sur le chemin d’accès du point de contrôle Composer à partir d'une précédente exécution d’apprentissage. Les chemins de point de contrôle se trouvent sous l’onglet Artefacts d’une exécution MLflow précédente. Le nom du dossier de point de contrôle correspond au lot et à l’époque d’un instantané particulier, tel que ep29-ba30/
.
- Pour fournir le dernier point de contrôle d’une exécution précédente, set
custom_weights_path
au point de contrôle Composer. Par exemple :custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/latest-sharded-rank0.symlink
. - Pour fournir un point de contrôle antérieur, set
custom_weights_path
à un chemin d’accès à un dossier contenant des fichiers.distcp
correspondant au point de contrôle souhaité, tel quecustom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba#
.
Ensuite, update le paramètre model
pour qu’il corresponde au modèle de base du point de contrôle que vous avez passé à custom_weights_path
.
Dans l’exemple ift-meta-llama-3-1-70b-instruct-ohugkq
suivant, il s’agit d’une exécution précédente qui fine-tunes meta-llama/Meta-Llama-3.1-70B
. Pour affiner le dernier point de contrôle à partir de ift-meta-llama-3-1-70b-instruct-ohugkq
, ainsi que les variables set, model
et custom_weights_path
comme suit :
from databricks.model_training import foundation_model as fm
run = fm.create(
model = 'meta-llama/Meta-Llama-3.1-70B'
custom_weights_path = 'dbfs:/databricks/mlflow-tracking/2948323364469837/d4cd1fcac71b4fb4ae42878cb81d8def/artifacts/ift-meta-llama-3-1-70b-instruct-ohugkq/checkpoints/latest-sharded-rank0.symlink'
... ## other parameters for your fine-tuning run
)
Consultez Configurer une exécution d’apprentissage pour configurer d’autres parameters dans votre exécution d’optimisation.
ID de cluster Get
Pour récupérer l’ID de cluster :
Dans la barre de navigation gauche de l’espace de travail Databricks, cliquez sur Calcul.
Dans le table, cliquez sur le nom de votre cluster.
Cliquez sur dans le coin supérieur droit et selectAfficher JSON à partir du menu déroulant.
Le fichier JSON Cluster s’affiche. Copiez l’ID de cluster, qui est la première ligne dans le fichier.
Get état d'une exécution
Vous pouvez suivre la progression d’une exécution en utilisant la page Expérience dans l’interface utilisateur Databricks ou à l’aide de la commande d’API get_events()
. Pour plus d’informations, consultez Afficher, gérer et analyser les exécutions de réglage fin du modèle Foundation.
Exemple de sortie à partir de get_events()
:
Exemple des détails d’une exécution sur la page Expérience :
Étapes suivantes
Une fois votre exécution d’apprentissage terminée, vous pouvez passer en revue les mesures dans MLflow et déployer votre modèle pour l’inférence. Consultez les étapes 5 à 7 du tutoriel : Créer et déployer une exécution d’optimisation fine du modèle Foundation.
Consultez le notebook de démonstration Optimisation des instructions : Reconnaissance d’entité nommée pour obtenir un exemple d’optimisation des instructions qui décrit la préparation des données, l’optimisation de la configuration d’exécution de formation et le déploiement.
Exemple de Bloc-notes
Le notebook suivant montre comment generate des données synthétiques à l’aide du modèle Meta Llama 3.1 405B Instruct et utiliser ces données pour affiner un modèle :
Generate données synthétiques utilisant le notebook Llama 3.1 405B Instruct
Ressources supplémentaires
- Réglage précis du modèle de base
- Tutoriel : Créer et déployer une exécution d’optimisation fine du modèle Foundation
- Créer une exécution d’entraînement à l’aide de l’interface utilisateur d’optimisation du modèle Foundation
- Afficher, gérer et analyser les exécutions de réglage fin du modèle Foundation
- Préparer des données pour le réglage précis du modèle Foundation