Partager via


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/.

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

  • Pour fournir le dernier point de contrôle d’une exécution précédente, setcustom_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, setcustom_weights_path à un chemin d’accès à un dossier contenant des fichiers .distcp 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, 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 :

  1. Dans la barre de navigation gauche de l’espace de travail Databricks, cliquez sur Calcul.

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

  3. Cliquez sur Autre bouton dans le coin supérieur droit et selectAfficher JSON à partir du menu déroulant.

  4. Le fichier JSON Cluster s’affiche. Copiez l’ID de cluster, qui est la première ligne dans le fichier.

    ID de cluster

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() :

Utiliser l’API pour get l’état d’exécution

Exemple des détails d’une exécution sur la page Expérience :

Get l'état d’exécution à partir de l’interface utilisateur des expériences

É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

Get ordinateur portable

Ressources supplémentaires