Copyright (C) 2021 GROUPES AUTOML FREIBURG ET HANNOVER
Alors que les premiers cadres automnaux se sont concentrés sur l'optimisation des pipelines ML traditionnels et leurs hyperparamètres, une autre tendance en Automl est de se concentrer sur la recherche d'architecture neuronale. Pour rassembler le meilleur de ces deux mondes, nous avons développé Auto-Pytorch , qui optimise conjointement et de manière robuste l'architecture du réseau et les hyperparamètres de formation pour permettre à l'apprentissage en profondeur entièrement automatisé (Autodl).
Auto-Pytorch est principalement développé pour prendre en charge les données tabulaires (classification, régression) et les données de séries chronologiques (prévision). Les caractéristiques les plus récentes de l'auto-pytorch pour les données tabulaires sont décrites dans le papier "Auto-Pytorch Tabular: Multifility Metalarning pour une autodl efficace et robuste" (voir ci-dessous pour Bibtex Ref). Des détails sur l'auto-Pytorch pour les tâches de prévision des séries chronologiques multi-horizontales peuvent être trouvés dans le document "Enseignement en profondeur automatisé efficace pour les prévisions de séries chronologiques" (voir également ci-dessous pour Bibtex Ref).
Trouvez également la documentation ici.
À partir de V0.1.0, AutopyTorch a été mis à jour pour améliorer davantage la convivialité, la robustesse et l'efficacité en utilisant SMAC comme package d'optimisation sous-jacent ainsi que pour modifier la structure du code. Par conséquent, le passage de V0.0.2 à V0.1.0 rompra la compatibilité. Dans le cas où vous souhaitez utiliser l'ancienne API, vous pouvez la trouver chez master_old .
La description approximative du flux de travail de l'auto-pytorch est dessinée dans la figure suivante.
Dans la figure, les données sont fournies par l'utilisateur et le portefeuille est un ensemble de configurations de réseaux de neurones qui fonctionnent bien sur divers ensembles de données. La version actuelle ne prend en charge que le portefeuille gourmand comme décrit dans le Tabulaire de Pyto-Pytorch en papier: Multifility Metalarning pour un Autodl efficace et robuste Ce portefeuille est utilisé pour réchauffer l'optimisation de SMAC. En d'autres termes, nous évaluons le portefeuille sur des données fournies en tant que configurations initiales. Alors l'API démarre les procédures suivantes:
sklearn.dummy qui représente les pires performances possibles.* 1: les lignes de base sont un pool prédéfini d'algorithmes d'apprentissage automatique, par exemple LightGBM et la machine vectorielle de support, pour résoudre la tâche de régression ou de classification sur l'ensemble de données fourni
* 2: Une configuration d'hyperparamètre de pipeline spécifie le choix des composants, l'algorithme cible par exemple, la forme des réseaux de neurones, à chaque étape et (qui spécifie le choix des composants à chaque étape et leurs hyperparamètres correspondants.
pip install autoPyTorch
Auto-Pytorch pour les prévisions de séries chronologiques nécessite des dépendances supplémentaires
pip install autoPyTorch[forecasting]
Nous vous recommandons d'utiliser Anaconda pour le développement comme suit:
# Following commands assume the user is in a cloned directory of Auto-Pytorch
# We also need to initialize the automl_common repository as follows
# You can find more information about this here:
# https://github.com/automl/automl_common/
git submodule update --init --recursive
# Create the environment
conda create -n auto-pytorch python=3.8
conda activate auto-pytorch
conda install swig
python setup.py install
De même, pour installer toutes les dépendances pour la mise en ligne automatique de la pytorch.
git submodule update --init --recursive
conda create -n auto-pytorch python=3.8
conda activate auto-pytorch
conda install swig
pip install -e[forecasting]
En un mot:
from autoPyTorch . api . tabular_classification import TabularClassificationTask
# data and metric imports
import sklearn . model_selection
import sklearn . datasets
import sklearn . metrics
X , y = sklearn . datasets . load_digits ( return_X_y = True )
X_train , X_test , y_train , y_test =
sklearn . model_selection . train_test_split ( X , y , random_state = 1 )
# initialise Auto-PyTorch api
api = TabularClassificationTask ()
# Search for an ensemble of machine learning algorithms
api . search (
X_train = X_train ,
y_train = y_train ,
X_test = X_test ,
y_test = y_test ,
optimize_metric = 'accuracy' ,
total_walltime_limit = 300 ,
func_eval_time_limit_secs = 50
)
# Calculate test accuracy
y_pred = api . predict ( X_test )
score = api . score ( y_pred , y_test )
print ( "Accuracy score" , score )Pour les tâches de prévision des séries chronologiques
from autoPyTorch . api . time_series_forecasting import TimeSeriesForecastingTask
# data and metric imports
from sktime . datasets import load_longley
targets , features = load_longley ()
# define the forecasting horizon
forecasting_horizon = 3
# Dataset optimized by APT-TS can be a list of np.ndarray/ pd.DataFrame where each series represents an element in the
# list, or a single pd.DataFrame that records the series
# index information: to which series the timestep belongs? This id can be stored as the DataFrame's index or a separate
# column
# Within each series, we take the last forecasting_horizon as test targets. The items before that as training targets
# Normally the value to be forecasted should follow the training sets
y_train = [ targets [: - forecasting_horizon ]]
y_test = [ targets [ - forecasting_horizon :]]
# same for features. For uni-variant models, X_train, X_test can be omitted and set as None
X_train = [ features [: - forecasting_horizon ]]
# Here x_test indicates the 'known future features': they are the features known previously, features that are unknown
# could be replaced with NAN or zeros (which will not be used by our networks). If no feature is known beforehand,
# we could also omit X_test
known_future_features = list ( features . columns )
X_test = [ features [ - forecasting_horizon :]]
start_times = [ targets . index . to_timestamp ()[ 0 ]]
freq = '1Y'
# initialise Auto-PyTorch api
api = TimeSeriesForecastingTask ()
# Search for an ensemble of machine learning algorithms
api . search (
X_train = X_train ,
y_train = y_train ,
X_test = X_test ,
optimize_metric = 'mean_MAPE_forecasting' ,
n_prediction_steps = forecasting_horizon ,
memory_limit = 16 * 1024 , # Currently, forecasting models use much more memories
freq = freq ,
start_times = start_times ,
func_eval_time_limit_secs = 50 ,
total_walltime_limit = 60 ,
min_num_test_instances = 1000 , # proxy validation sets. This only works for the tasks with more than 1000 series
known_future_features = known_future_features ,
)
# our dataset could directly generate sequences for new datasets
test_sets = api . dataset . generate_test_seqs ()
# Calculate test accuracy
y_pred = api . predict ( test_sets )
score = api . score ( y_pred , y_test )
print ( "Forecasting score" , score ) Pour plus d'exemples, notamment la personnalisation de l'espace de recherche, la parentie du code, etc., consultez le dossier examples
$ cd examples/ Le code du papier est disponible sous examples/ensemble dans la branche TPAMI.2021.3067763.
Si vous souhaitez contribuer à Auto-Pytorch, clonez le référentiel et vérifiez notre branche de développement actuelle
$ git checkout developmentCe programme est un logiciel gratuit: vous pouvez le redistribuer et / ou le modifier selon les termes de la Licence 2.0 Apache (veuillez consulter le fichier de licence).
Ce programme est distribué dans l'espoir qu'il sera utile, mais sans aucune garantie; Sans même la garantie implicite de qualité marchande ou d'adéquation à un usage particulier.
Vous devriez avoir reçu une copie de l'Apache License 2.0 avec ce programme (voir le fichier de licence).
Veuillez vous référer à la branche TPAMI.2021.3067763 pour reproduire le papier Tabulaire en papier Auto-Pytorch: Multifility Metalarning pour une autodl efficace et robuste .
@article { zimmer-tpami21a ,
author = { Lucas Zimmer and Marius Lindauer and Frank Hutter } ,
title = { Auto-PyTorch Tabular: Multi-Fidelity MetaLearning for Efficient and Robust AutoDL } ,
journal = { IEEE Transactions on Pattern Analysis and Machine Intelligence } ,
year = { 2021 } ,
note = { also available under https://arxiv.org/abs/2006.13799 } ,
pages = { 3079 - 3090 }
} @incollection { mendoza-automlbook18a ,
author = { Hector Mendoza and Aaron Klein and Matthias Feurer and Jost Tobias Springenberg and Matthias Urban and Michael Burkart and Max Dippel and Marius Lindauer and Frank Hutter } ,
title = { Towards Automatically-Tuned Deep Neural Networks } ,
year = { 2018 } ,
month = dec,
editor = { Hutter, Frank and Kotthoff, Lars and Vanschoren, Joaquin } ,
booktitle = { AutoML: Methods, Sytems, Challenges } ,
publisher = { Springer } ,
chapter = { 7 } ,
pages = { 141--156 }
} @article { deng-ecml22 ,
author = { Difan Deng and Florian Karl and Frank Hutter and Bernd Bischl and Marius Lindauer } ,
title = { Efficient Automated Deep Learning for Time Series Forecasting } ,
year = { 2022 } ,
booktitle = { Machine Learning and Knowledge Discovery in Databases. Research Track
- European Conference, {ECML} {PKDD} 2022 } ,
url = { https://doi.org/10.48550/arXiv.2205.05511 } ,
}Auto-Pytorch est développé par les groupes automliques de l'Université de Freiburg et Hanovre.