Aller au contenu principal

Créez une exécution d'entraînement à l'aide de l'API d'affinement des modèles de fondation (obsolète)

important

L'affinement des modèles de fondation est obsolète et devrait être supprimé le 14 août 2026. Les exécutions d'affinement existantes continuent de fonctionner et peuvent être réentraînées, mais les nouvelles installations du package databricks_genai et de l'interface utilisateur d'affinement du modèle de fondation seront bloquées après cette date.

Databricks vous recommande de migrer vers AI Runtime, qui fournit un environnement serverless, basé sur un GPU, pour l'entraînement et l'affinement des modèles de base.

info

Aperçu

Cette fonctionnalité est en Aperçu public dans us-east-1 et us-west-2.

Cet article explique comment créer et configurer une exécution d'entraînement à l'aide de l'API d'affinement du modèle de fondation (faisant maintenant partie de l'entraînement de modèles Databricks), et décrit tous les parameters utilisés dans l'appel d'API. Vous pouvez également créer une exécution à l'aide de l'interface utilisateur. Pour obtenir des instructions, consultez Créer une exécution d'entraînement à l'aide de l'interface utilisateur d'affinement du modèle de fondation (déprécié).

Exigences

Consultez Exigences.

Créer une exécution d'entraînement

Pour créer des exécutions d'entraînement par programme, utilisez la fonction create(). Cette fonction entraîne un modèle sur le dataset fourni et enregistre le modèle entraîné pour l'inférence.

Les entrées requises sont le modèle que vous souhaitez entraîner, l'emplacement de votre dataset d'entraînement et l'endroit où enregistrer votre modèle. Il existe également des paramètres facultatifs qui vous permettent d'effectuer une évaluation et de modifier les hyperparamètres de votre exécution.

Une fois l'exécution terminée, l'exécution achevée et le point de contrôle final sont enregistrés, le modèle est cloné, et ce clone est enregistré dans Unity Catalog comme version de modèle pour l'inférence.

Le modèle de l'exécution terminée, et non la version clonée du modèle dans Unity Catalog, est enregistré dans MLflow. Les checkpoints peuvent être utilisés pour des tâches d'affinement continues.

Consultez Configurer une exécution d'entraînement pour plus de détails sur les arguments de la fonction create().

Python
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'entraînement

Le tableau suivant récapitule les paramètres de la fonction foundation_model.create().

parameter

Obligatoire

Type

Description

model

X

str

Le nom du modèle à utiliser. Consultez les Modèles pris en charge.

train_data_path

X

str

L'emplacement de vos données d'entraînement. Il peut s'agir d'un emplacement dans Unity Catalog (<catalog>.<schema>.<table> ou dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl), ou d'un dataset HuggingFace. Pour INSTRUCTION_FINETUNE, les données doivent être formatées avec chaque ligne contenant un champ prompt et response. Pour CONTINUED_PRETRAIN, il s'agit d'un dossier de .txt fichiers. Voir Préparer les données pour l'affinement du modèle de fondation (obsolète) pour les formats de données acceptés et Taille de données recommandée pour l'entraînement du modèle pour les recommandations de taille de données.

register_to

X

str

Le catalogue Unity Catalog et le schéma (<catalog>.<schema> ou <catalog>.<schema>.<custom-name>) où le modèle est enregistré après l'entraînement pour un déploiement facile. Si custom-name n'est pas fourni, cela prend par default le nom de l'exécution.

data_prep_cluster_id

str

L'ID de cluster du cluster à utiliser pour le traitement des données Spark. Ceci est requis pour les tâches d’entraînement d’instructions où les données d’entraînement se trouvent dans une table Delta. Pour plus d'informations sur la façon de trouver l'ID du cluster, voir Obtenir l'ID du cluster.

experiment_path

str

Le chemin d'accès à l'expérimentation MLflow où la sortie de l'exécution d'entraînement (métriques et points de contrôle) est enregistrée. Par default, utilise le nom de l'exécution dans le Workspace personnel de l'utilisateur (c'est-à-dire /Users/<username>/<run_name>).

task_type

str

Le type de tâche à exécuter. Peut être CHAT_COMPLETION (default), CONTINUED_PRETRAIN, ou INSTRUCTION_FINETUNE.

eval_data_path

str

L'emplacement distant de vos données d'évaluation (le cas échéant). Doit suivre le même format que train_data_path.

eval_prompts

Liste[str]

Une liste de chaînes de prompt pour générer des réponses pendant l'évaluation. Default est None (ne pas générer d'invites). Les résultats sont enregistrés dans l'expérimentation chaque fois que le modèle est mis en point de contrôle. Les générations ont lieu à chaque point de contrôle du modèle avec les paramètres de génération suivants : 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 de modèle personnalisé pour l'entraînement. default est None, ce qui signifie que l'exécution start avec les poids pré-entraînés d'origine du modèle choisi. Si des poids personnalisés sont fournis, ces poids sont utilisés à la place des poids pré-entraînés d'origine du modèle. Ces poids doivent avoir été produits par l'API d'affinement et correspondre à l'architecture du model spécifié. Consultez Créer des modèles avec des poids personnalisés. REMARQUE : Si vous avez entraîné un modèle avant le 26/03/2025, vous ne pourrez plus continuer à l'entraîner à partir de ces points de contrôle de modèle. Toutes les exécutions d'entraînement précédemment terminées peuvent toujours être servies avec un throughput provisionné sans problème.

training_duration

str

La durée totale de votre exécution. Default est une époque ou 1ep. Peut être spécifié en époques (10ep) ou en jetons (1000000tok).

learning_rate

str

Le taux d'apprentissage pour l'entraînement du modèle. Tous les modèles sont entraînés à l'aide de l'optimiseur AdamW, avec un réchauffement du taux d'apprentissage. Le taux d'apprentissage default peut varier par modèle. Nous suggérons d'effectuer un balayage d'hyperparamètres en essayant différents taux d'apprentissage et différentes durées d'entraînement pour obtenir les modèles de la plus haute qualité.

context_length

str

La longueur maximale des séquences d'un échantillon de données. Ceci est utilisé pour tronquer toutes les données trop longues et pour package des séquences plus courtes ensemble pour plus d’efficacité. La default est de 8 192 jetons ou la longueur maximale du contexte pour le modèle fourni, selon la valeur la plus basse. Vous pouvez utiliser ce paramètre pour configurer la longueur du contexte, mais la configuration au-delà de la longueur maximale du contexte de chaque modèle n'est pas prise en charge. Consultez Modèles pris en charge pour la longueur maximale de contexte prise en charge de chaque modèle.

validate_inputs

Booléen

Indique s'il faut valider l'accès aux chemins d'entrée avant de soumettre le job d'entraînement. default est True.

parameter

Obligatoire

Type

Description

model

X

str

Le nom du modèle à utiliser. Consultez les Modèles pris en charge.

train_data_path

X

str

L'emplacement de vos données d'entraînement. Il peut s'agir d'un emplacement dans Unity Catalog (<catalog>.<schema>.<table> ou dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl), ou d'un dataset HuggingFace. Pour INSTRUCTION_FINETUNE, les données doivent être formatées avec chaque ligne contenant un champ prompt et response. Pour CONTINUED_PRETRAIN, il s'agit d'un dossier de .txt fichiers. Voir Préparer les données pour l'affinement du modèle de fondation (obsolète) pour les formats de données acceptés et Taille de données recommandée pour l'entraînement du modèle pour les recommandations de taille de données.

register_to

X

str

Le catalogue Unity Catalog et le schéma (<catalog>.<schema> ou <catalog>.<schema>.<custom-name>) où le modèle est enregistré après l'entraînement pour un déploiement facile. Si custom-name n'est pas fourni, cela prend par default le nom de l'exécution.

data_prep_cluster_id

str

L'ID de cluster du cluster à utiliser pour le traitement des données Spark. Ceci est requis pour les tâches d’entraînement d’instructions où les données d’entraînement se trouvent dans une table Delta. Pour plus d'informations sur la façon de trouver l'ID du cluster, voir Obtenir l'ID du cluster.

experiment_path

str

Le chemin d'accès à l'expérimentation MLflow où la sortie de l'exécution d'entraînement (métriques et points de contrôle) est enregistrée. Par default, utilise le nom de l'exécution dans le Workspace personnel de l'utilisateur (c'est-à-dire /Users/<username>/<run_name>).

task_type

str

Le type de tâche à exécuter. Peut être CHAT_COMPLETION (default), CONTINUED_PRETRAIN, ou INSTRUCTION_FINETUNE.

eval_data_path

str

L'emplacement distant de vos données d'évaluation (le cas échéant). Doit suivre le même format que train_data_path.

eval_prompts

Liste[str]

Une liste de chaînes de prompt pour générer des réponses pendant l'évaluation. Default est None (ne pas générer d'invites). Les résultats sont enregistrés dans l'expérimentation chaque fois que le modèle est mis en point de contrôle. Les générations ont lieu à chaque point de contrôle du modèle avec les paramètres de génération suivants : 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 de modèle personnalisé pour l'entraînement. default est None, ce qui signifie que l'exécution start avec les poids pré-entraînés d'origine du modèle choisi. Si des poids personnalisés sont fournis, ces poids sont utilisés à la place des poids pré-entraînés d'origine du modèle. Ces poids doivent avoir été produits par l'API d'affinement et correspondre à l'architecture du model spécifié. Consultez Créer des modèles avec des poids personnalisés. REMARQUE : Si vous avez entraîné un modèle avant le 26/03/2025, vous ne pourrez plus continuer à l'entraîner à partir de ces points de contrôle de modèle. Toutes les exécutions d'entraînement précédemment terminées peuvent toujours être servies avec un throughput provisionné sans problème.

training_duration

str

La durée totale de votre exécution. Default est une époque ou 1ep. Peut être spécifié en époques (10ep) ou en jetons (1000000tok).

learning_rate

str

Le taux d'apprentissage pour l'entraînement du modèle. Tous les modèles sont entraînés à l'aide de l'optimiseur AdamW, avec un réchauffement du taux d'apprentissage. Le taux d'apprentissage default peut varier par modèle. Nous suggérons d'effectuer un balayage d'hyperparamètres en essayant différents taux d'apprentissage et différentes durées d'entraînement pour obtenir les modèles de la plus haute qualité.

context_length

str

La longueur maximale des séquences d'un échantillon de données. Ceci est utilisé pour tronquer toutes les données trop longues et pour package des séquences plus courtes ensemble pour plus d’efficacité. La default est de 8 192 jetons ou la longueur maximale du contexte pour le modèle fourni, selon la valeur la plus basse. Vous pouvez utiliser ce paramètre pour configurer la longueur du contexte, mais la configuration au-delà de la longueur maximale du contexte de chaque modèle n'est pas prise en charge. Consultez Modèles pris en charge pour la longueur maximale de contexte prise en charge de chaque modèle.

validate_inputs

Booléen

Indique s'il faut valider l'accès aux chemins d'entrée avant de soumettre le job d'entraînement. default est True.

S’appuyer sur des poids de modèle personnalisés

REMARQUE : Si vous avez entraîné un modèle avant le 26/03/2025, vous ne pourrez plus continuer à l'entraîner à partir de ces points de contrôle de modèle. Toutes les exécutions d'entraînement précédemment terminées peuvent toujours être servies avec un throughput provisionné sans problème.

L'affinement des modèles de fondation prend en charge l'ajout de pondérations personnalisées à l'aide du parameter facultatif custom_weights_path pour entraîner et personnaliser un modèle.

Pour commencer, définissez custom_weights_path sur le chemin du point de contrôle d'une exécution d'entraînement d'API d'affinement précédente. Les chemins de points de contrôle se trouvent dans l’onglet Artefacts d’une précédente exécution MLflow. Le nom du dossier du point de contrôle correspond au batch et à l'époque d'un instantané particulier, tel que ep29-ba30/.

tab Artefacts pour une exécution MLflow précédente

  • Pour fournir le dernier point de contrôle d’une exécution précédente, définissez custom_weights_path sur le point de contrôle produit par l’API d’affinement. 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, définissez custom_weights_path sur un chemin d'accès à un dossier contenant .distcp fichiers correspondant au point de contrôle souhaité, tel que custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba#.

Ensuite, mettez à jour le paramètre model pour qu'il corresponde au modèle de base du point de contrôle que vous avez transmis à custom_weights_path.

Dans l'exemple suivant, ift-meta-llama-3-1-70b-instruct-ohugkq est une exécution précédente qui affine meta-llama/Meta-Llama-3.1-70B. Pour affiner le dernier point de contrôle de ift-meta-llama-3-1-70b-instruct-ohugkq, définissez les variables model et custom_weights_path comme suit :

Python
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'entraînement pour configurer d'autres parameters dans votre exécution d'affinement.

Obtenir l'ID de cluster

Pour récupérer l’ID de cluster :

  1. Dans la barre de navigation de gauche du workspace Databricks, cliquez sur Compute .

  2. Dans le tableau, cliquez sur le nom de votre cluster.

  3. Cliquez sur Bouton Plus dans le coin supérieur droit et sélectionnez Afficher le JSON dans le menu déroulant.

  4. Le fichier JSON du cluster apparaît. Copiez l'ID du cluster, qui est la première ligne du fichier.

    ID de cluster

Obtenir le statut d'une exécution

Vous pouvez suivre la progression d'une exécution en utilisant la page Experimentation dans l'interface utilisateur de Databricks ou en utilisant la commande API get_events(). Pour plus de détails, consultez Afficher, gérer et analyser les exécutions d'affinement de modèle de fondation (déprécié).

Exemple de sortie de get_events():

Utilisez l&#39;API pour obtenir l&#39;état d&#39;exécution.

Exemple de détails d'exécution sur la page d'Experimentation :

Obtenir l&#39;état d&#39;exécution depuis l&#39;interface utilisateur des expérimentations

Étapes suivantes

Une fois votre exécution d'entraînement terminée, vous pouvez consulter les métriques dans MLflow et déployer votre modèle pour l'inférence. Consultez les étapes 5 à 7 de Didacticiel : Créer et déployer une exécution d'affinement de modèle de fondation (obsolète).

Consultez le notebook de démonstration Affinement d'instructions : Named Entity Recognition pour un exemple d'affinement d'instructions qui présente la préparation des données, la configuration et le déploiement de l'exécution de l'affinement.

Exemple de Notebook

Le Notebook suivant montre un exemple de la façon de générer des données synthétiques à l'aide du modèle Meta Llama 3.1 405B Instruct et d'utiliser ces données pour affiner un modèle :

Générez des données synthétiques à l’aide du notebook Llama 3.1 405B Instruct.

Ressources supplémentaires