Gérer facilement les modèles d’apprentissage en profondeur avec des configurations TOML
Manage deep learning models easily with TOML configurations.
Vous n’aurez peut-être jamais besoin de ces longs arguments CLI pour votre train.py
La gestion des modèles d’apprentissage profond peut être difficile en raison du grand nombre de paramètres et de réglages nécessaires pour tous les modules. Le module d’entraînement peut nécessiter des paramètres tels que batch_size
ou le num_epochs
ou des paramètres pour le planificateur de taux d’apprentissage. De même, le module de prétraitement des données peut nécessiter train_test_split
ou des paramètres pour l’augmentation d’image.
Une approche naïve pour gérer ou introduire ces paramètres dans le pipeline est de les utiliser en tant qu’arguments CLI lors de l’exécution des scripts. Les arguments de ligne de commande peuvent être difficiles à saisir et la gestion de tous les paramètres dans un seul fichier peut ne pas être possible. Les fichiers TOML fournissent une manière plus propre de gérer les configurations et les scripts peuvent charger les parties nécessaires de la configuration sous forme de dict
Python sans avoir besoin de code de base pour lire/analyser les arguments de ligne de commande.
Dans ce blog, nous explorerons l’utilisation de TOML dans les fichiers de configuration et comment nous pouvons les utiliser efficacement dans les scripts d’entraînement/déploiement.
Qu’est-ce que les fichiers TOML?
TOML, signifie Tom’s Obvious Minimal Language, est un format de fichier conçu spécifiquement pour les fichiers de configuration. Le concept d’un fichier TOML est assez similaire aux fichiers YAML/YML qui ont la capacité de stocker des paires clé-valeur dans une hiérarchie en forme d’arbre. Un avantage de TOML par rapport à YAML est sa lisibilité qui devient importante lorsqu’il y a plusieurs niveaux imbriqués.
- Eh GPU, qu’est-ce qui se passe avec ma matrice ?
- Si l’art est la façon dont nous exprimons notre humanité, où se situe l’IA ?
- Analyse de performance et optimisation de modèle PyTorch

Personnellement, à part une lisibilité améliorée, je ne trouve aucune raison pratique de préférer TOML à YAML. L’utilisation de YAML est tout à fait acceptable, voici un package Python pour l’analyse de YAML.
Pourquoi avons-nous besoin de configurations en TOML?
Il y a deux avantages à utiliser TOML pour stocker la configuration du modèle/des données/de déploiement pour les modèles de ML :
Gestion de toutes les configurations dans un seul fichier : Avec les fichiers TOML, nous pouvons créer plusieurs groupes de paramètres qui sont nécessaires pour différents modules. Par exemple, dans la figure 1, les paramètres liés à la procédure d’entraînement du modèle sont imbriqués sous l’attribut [train]
, de même que le port
et le host
requis pour le déploiement du modèle sont stockés sous deploy
. Nous n’avons pas besoin de sauter entre train.py
ou deploy.py
pour modifier leurs paramètres, nous pouvons plutôt globaliser tous les paramètres à partir d’un seul fichier de configuration TOML.
Cela pourrait être très utile si nous formons le modèle sur une machine virtuelle, où les éditeurs de code ou les IDE ne sont pas disponibles pour modifier les fichiers. Un seul fichier de configuration est facile à modifier avec
vim
ounano
disponibles sur la plupart des VM.
Comment pouvons-nous lire les configurations à partir de TOML?
Pour lire la configuration à partir de fichiers TOML, deux packages Python peuvent être utilisés, toml
et munch
. toml
nous aidera à lire le fichier TOML et à retourner le contenu du fichier sous forme de dict
Python. munch
convertira le contenu du dict
pour permettre un accès de style d’attribut des éléments. Par exemple, au lieu d’écrire, config[ "training" ][ "num_epochs" ]
, nous pouvons simplement écrire config.training.num_epochs
qui améliore la lisibilité.
Considérez la structure de fichier suivante,
- config.py- train.py- project_config.toml
project_config.toml
contient la configuration de notre projet de ML, comme,
[data]vocab_size = 5589seq_length = 10test_split = 0.3data_path = "dataset/"data_tensors_path = "data_tensors/"[model]embedding_dim = 256num_blocks = 5num_heads_in_block = 3[train]num_epochs = 10batch_size = 32learning_rate = 0.001checkpoint_path = "auto"
Dans config.py
, nous créons une fonction qui renvoie la version “munchifiée” de cette configuration à l’aide de toml
et munch
,
$> pip install toml munch
import tomlimport munchdef load_global_config( filepath : str = "project_config.toml" ): return munch.munchify( toml.load( filepath ) )def save_global_config( new_config , filepath : str = "project_config.toml" ): with open( filepath , "w" ) as file: toml.dump( new_config , file )
Maintenant, dans n’importe lequel de nos fichiers de projet, comme train.py
ou predict.py
, nous pouvons charger cette configuration,
from config import load_global_configconfig = load_global_config()batch_size = config.train.batch_sizelr = config.train.learning_rateif config.train.checkpoint_path == "auto": # Crée un répertoire avec un nom correspondant au timestamp courant pass
La sortie de print( toml.load( filepath ) ) )
est,
{'data': {'data_path': 'dataset/', 'data_tensors_path': 'data_tensors/', 'seq_length': 10, 'test_split': 0.3, 'vocab_size': 5589}, 'model': {'embedding_dim': 256, 'num_blocks': 5, 'num_heads_in_block': 3}, 'train': {'batch_size': 32, 'checkpoint_path': 'auto', 'learning_rate': 0.001, 'num_epochs': 10}}
Si vous utilisez des outils MLOps tels que W&B Tracking ou MLFlow, la maintenance de la configuration sous forme de dict
peut être utile car nous pouvons le passer directement en argument.
La fin
Nous espérons que vous envisagerez d’utiliser les configurations TOML dans votre prochain projet de ML ! C’est une façon propre de gérer les paramètres qui sont globaux ou locaux à vos scripts d’entraînement, de déploiement ou d’inférence. Au lieu d’écrire de longs arguments CLI, les scripts peuvent charger directement la configuration à partir du fichier TOML. Si nous souhaitons entraîner deux versions d’un modèle avec des hyperparamètres différents, nous n’avons qu’à modifier le fichier TOML dans config.py
. J’ai commencé à utiliser des fichiers TOML dans mes projets récents et l’expérimentation est devenue plus rapide. Les outils MLOps peuvent également gérer les versions d’un modèle ainsi que leurs configurations, mais la simplicité de l’approche discutée ci-dessus est unique et nécessite un changement minimal dans les projets existants.
Nous espérons que vous avez apprécié la lecture. Bonne journée !
We will continue to update IPGirl; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Maîtriser la gestion de configuration en apprentissage automatique avec Hydra.
- AI Telephone – Une Bataille de Modèles Multimodaux
- Des pipelines CI/CD transparents avec GitHub Actions sur GCP vos outils pour un MLOps efficace.
- Détection de la croissance du cancer à l’aide de l’IA et de la vision par ordinateur
- Problème du Gradient Disparu Causes, Conséquences et Solutions
- Classer et localiser les différentes formes de harcèlement sexuel.
- Recherche de similarité, Partie 2 Quantification de Produit