0 / 0
Retourner à la version anglaise de la documentation
Accorder un foundation model de manière programmatique ( Python )
Dernière mise à jour : 03 févr. 2025
Accorder un foundation model de manière programmatique ( Python )

Vous pouvez adapter les modèles de fondation dans IBM watsonx.ai de manière programmatique en utilisant la bibliothèque Python.

Pour mettre au point un foundation model, vous exécutez une expérience qui utilise des données de formation que vous avez fournies. L'expérience est un processus d'apprentissage automatique qui montre à l'adresse foundation model les résultats que vous attendez du modèle en fonction de vos données d'entrée. Le processus d'optimisation est complexe et implique un actif de données, un actif d'entraînement et un actif de déploiement.

La bibliothèque Python comporte des méthodes et des classes auxiliaires pour l'optimisation des modèles de base. Pour plus d'informations sur la bibliothèque, voir Tuning.

Utilisez les fonctions disponibles dans la bibliothèque watsonx.ai Python à partir de blocs-notes dans watsonx.ai pour optimiser les modèles de base.

Exemple de carnet de notes pour l'accord rapide

L'exemple de notebook Python " Use watsonx to tune IBM granite-13b-instruct-v2 model with Car Rental Company customer satisfaction" contient du code pour l'ajustement rapide des modèles de fondation dans watsonx.ai

L'exemple de bloc-notes vous aide à effectuer les deux phases principales de l'optimisation:

L'exemple de bloc-notes est conçu pour vous permettre d'optimiser le modèle granite-13b-instruct-v2 . Mais vous pouvez également l'utiliser pour l'ajustement d'autres modèles de base. Pour ce faire, remplacez les références base_model comme suit:

  • base_model='google/flan-t5-xl'

Si vous modifiez le foundation model, vous devez également remplacer les données de formation. Remplacez le chemin d'accès au fichier dans la section Chargement de données du bloc-notes.

url = "{path to your file}"
if not os.path.isfile(filename): 
    wget.download(url)

Vous pouvez également utiliser un exemple de bloc-notes qui ajuste les autres modèles de base pouvant être réglés sur invite.

Utilisation de l'exemple de bloc-notes pour optimiser les valeurs des paramètres d'optimisation

L'exemple de bloc-notes comporte un code qui optimise la valeur du paramètre learning_rate . L'exemple de bloc-notes modifie systématiquement la valeur du taux d'apprentissage et réexécute l'expérimentation 10 fois, de sorte que la perte peut être comparée sur les 10 exécutions. L'exemple de bloc-notes calcule la valeur de taux d'apprentissage optimal pour vous.

L'exemple de bloc-notes génère 10 expériences distinctes ; il n'exécute pas la même expérience 10 fois.

Le paramètre à optimiser est défini dans la section Espace de recherche et optimisation du bloc-notes.

Vous pouvez éditer ou ajouter à l'exemple de bloc-notes pour exécuter du code automatisé afin d'optimiser les paramètres suivants en plus du taux d'apprentissage:

  • accumulate_steps
  • batch_size
  • num_epochs

Pour vérifier les valeurs optimales d'un grand nombre de paramètres à la fois, vous pouvez modifier l'exemple de bloc-notes pour utiliser le code suivant, par exemple:

SPACE = [
    skopt.space.Real(0.001, 0.09, name='learning_rate', prior='log-uniform'),
    skopt.space.Integer(1, 50, name='num_epochs', prior='uniform'),
    skopt.space.Integer(1, 16, name='batch_size', prior='uniform')
]

L'optimisation d'un grand nombre de paramètres à la fois peut permettre de gagner du temps car les paramètres fonctionnent ensemble. Leurs valeurs s'influencent les unes les autres et le juste équilibre des valeurs entre elles conduit aux meilleurs résultats.

L'exemple de bloc-notes utilise des méthodes de la bibliothèque scikit-optimize. Pour plus d'informations, voir la référence de l'API scikit-optimize.

Utilisation de l'exemple de bloc-notes pour évaluer le modèle optimisé

L'exemple de bloc-notes comporte du code qui déploie le modèle optimisé, inférence le modèle optimisé, puis calcule la précision de la sortie du modèle optimisé. Il déduit également le foundation model sous-jacent et calcule l'exactitude des résultats du modèle de base, afin de permettre une comparaison.

Si vous souhaitez utiliser l'exemple de bloc-notes pour optimiser et évaluer d'autres modèles, vous pouvez remplacer la valeur du paramètre model_id dans le code suivant.

base_model = ModelInference(
    model_id='ibm/granite-13b-instruct-v2',
    params=generate_params,
    api_client=client
)

Par exemple, indiquez google/flan-t5-xl.

Vous devez également remplacer le texte d'invite par une invite provenant de votre propre jeu de données d'entraînement.

response = tuned_model.generate_text(prompt="{your text here}")

Si le score d'exactitude de votre modèle optimisé est faible, examinez quelques idées pour améliorer vos données d'apprentissage dans Adressage des problèmes de qualité de données dans la sortie de modèle optimisé.

N'oubliez pas que l'optimisation des paramètres d'ajustement est spécifique au modèle et aux données d'apprentissage que vous utilisez. Si vous modifiez le modèle ou les données d'apprentissage, vous devez réévaluer l'expérimentation d'ajustement. Ajustez à nouveau les paramètres d'optimisation afin de les optimiser pour votre ensemble de données étendu.

Rubrique parent: Python