HyperAI

Intégration De TorchX Et D'ax : Recherche D'architecture Neuronale Multi-objectifs Plus Efficace

il y a 2 ans
Information
Jiaxin Sun
特色图像

L’objectif du NAS est de découvrir la meilleure architecture pour un réseau neuronal. L'intégration de Torch et d'Ax fournit une assistance pour l'exploration multi-objectif des architectures neuronales. Dans cet article, nous démontrerons l’utilisation du NAS bayésien multi-objectif pour exécuter une recherche d’architecture neuronale entièrement automatique.

Optimisation multi-objectifs dans Ax (Optimisation multi-objectifs) peut explorer efficacement la recherche d'architecture neuronale Recherche d'architecture neuronale compromis , comme le compromis entre les performances du modèle et la taille ou la latence du modèle.

Cette approche a été utilisée avec succès par Meta dans divers produits tels que l’IA sur appareil.

Cet article fournit un didacticiel de bout en bout pour vous aider à utiliser TorchX.

Introduction à la hache

Les réseaux neuronaux continuent de croître en taille et en complexité.Le développement d’architectures de pointe est souvent un processus fastidieux et chronophage qui nécessite une expertise du domaine et des efforts d’ingénierie considérables.

Pour surmonter ces défis, plusieurs méthodes de recherche d’architecture neuronale (NAS) ont été proposées.Concevoir automatiquement des architectures performantes sans intervention humaine (HITL).

Bien que l’efficacité de l’échantillon soit faible,Mais les méthodes naïves comme la recherche aléatoire et la recherche par grille sont toujours populaires pour l’optimisation des hyperparamètres et le NAS. Une étude menée lors de NeurIPS 2019 et ICLR 2020 a révélé que 80% des articles NeurIPS et 88% des articles ICLR utilisaient un réglage manuel, une recherche aléatoire ou une recherche sur grille pour ajuster les hyperparamètres du modèle ML.

Étant donné que la formation des modèles prend souvent du temps et peut nécessiter beaucoup de ressources informatiques,Il est donc très important de minimiser le nombre de configurations évaluées.

Ax est un outil général d'optimisation de boîte noire qui permet aux utilisateurs d'utiliser des algorithmes de pointe tels que l'optimisation bayésienne de manière efficace en termes d'échantillons tout en explorant de grands espaces de recherche.

Meta utilise Ax dans divers domaines.Domaines incluant le réglage des hyperparamètres, le NAS, la détermination des paramètres de produit optimaux avec des tests A/B à grande échelle, l'optimisation de l'infrastructure et la conception de matériel AR/VR de pointe.

Dans de nombreuses applications NAS, il existe un compromis naturel entre plusieurs mesures d’intérêt.Par exemple, lors du déploiement d'un modèle sur un appareil, il convient de maximiser les performances du modèle (comme la précision) tout en minimisant les mesures concurrentes telles que la consommation d'énergie, la latence d'inférence ou la taille du modèle pour répondre aux contraintes de déploiement.

Dans de nombreux cas, une petite diminution des performances du modèle est acceptable en échange d'une réduction significative des exigences de calcul ou de la latence de prédiction (dans certains cas, cela peut entraîner à la fois une précision améliorée et une latence réduite !).

Un élément clé de l’IA durable est une approche fondée sur des principes permettant d’explorer efficacement les implications de tels compromis.

Meta explore avec succès ce compromis en utilisant le NAS bayésien multi-objectif dans Ax.Et la méthode est déjà couramment utilisée pour optimiser les modèles ML sur les appareils AR/VR.

En plus des applications NAS, Meta a également développé MORBO, une méthode d'optimisation multi-objectifs à haute dimension des systèmes optiques AR.

NAS bayésien multi-objectif dans Ax :

https://research.facebook.com/blog/2021/07/optimizing-model-accuracy-and-latency-using-bayesian-multi-objective-neural-architecture-search/

Utilisation d'Ax pour implémenter un Nas multi-objectifs entièrement automatique

Le planificateur d'Ax permet d'exécuter des expériences de manière asynchrone en boucle fermée.Cela se fait en déployant continuellement des expériences sur un système externe, en interrogeant les résultats, en utilisant les données acquises pour générer davantage d'expériences et en répétant le processus jusqu'à ce qu'une condition d'arrêt soit remplie. Aucune intervention ou supervision humaine n’est requise. Les fonctionnalités de ce planificateur sont :

  •   Le parallélisme, la tolérance aux pannes et de nombreux autres paramètres peuvent être personnalisés.
  •   Large sélection d'algorithmes d'optimisation de pointe.
  •   Enregistrez les expériences en cours (base de données SQL ou json) et restaurez les expériences à partir du stockage.
  •   Facilement extensible vers de nouveaux backends pour exécuter des évaluations d'essai à distance.

Vous trouverez ci-dessous une illustration du didacticiel du planificateur Ax qui résume la manière dont Sceduler interagit avec tout système externe utilisé pour exécuter des évaluations d'essai.

Tutoriel Axe seduler :

https://ax.dev/tutorials/scheduler.html

Pour exécuter le NAS automatique à l'aide du planificateur, les préparations suivantes sont requises :

  •   Définir un coureur.Responsable de l'envoi d'un modèle avec une architecture spécifique à entraîner sur la plateforme de notre choix. (Par exemple, Kubernetes peut simplement être une image Docker locale). Le didacticiel suivant utilisera TorchX pour gérer le déploiement du travail de formation.
  •   Définir une métrique.Responsable de l'obtention de mesures objectives (telles que la précision, la taille du modèle, la latence) à partir des tâches de formation. Le didacticiel suivant utilisera Tensorboard pour enregistrer les données, vous pouvez donc utiliser les métriques Tensorboard fournies avec Ax.

Tutoriel

Tutoriel montrant comment utiliser Ax pour exécuter un NAS multi-objectifs pour un modèle de réseau neuronal simple sur l'ensemble de données MNIST populaire.

Bien que la méthodologie de base puisse être utilisée pour des modèles plus complexes et des ensembles de données plus volumineux, un didacticiel a été choisi qui peut être facilement exécuté sur un ordinateur portable et terminé de bout en bout en moins d'une heure.

Dans cet exemple, nous ajustons la largeur des deux couches cachées, le taux d’apprentissage, la probabilité d’abandon, la taille du lot et le nombre d’itérations d’entraînement.L'objectif est d'utiliser l'optimisation bayésienne multi-objectifs pour équilibrer les performances(précision sur l'ensemble de validation) et la taille du modèle (nombre de paramètres du modèle).

Ce tutoriel utilise les bibliothèques PyTorch suivantes :

  •  PyTorch Lightnig (pour spécifier le modèle et la boucle d'entraînement)

https://github.com/Lightning-AI/lightning

  •  TorchX (pour exécuter des tâches de formation à distance/de manière asynchrone)

https://github.com/pytorch/torchx

  •  BoTorch (la bibliothèque d'optimisation bayésienne qui alimente l'algorithme d'Ax)

https://github.com/pytorch/botorch

Pour un exemple exécutable complet, voir :

https://pytorch.org/tutorials/intermediate/ax_multiobjective_nas_tutorial.html

résultat

Le résultat final de l’optimisation NAS effectuée dans le didacticiel peut être vu dans le graphique de compromis ci-dessous.Ici, chaque point correspond au résultat d'un essai, la couleur représente son numéro d'itération et l'étoile représente le point de référence défini par le seuil imposé à la cible.

On peut voir que cette méthode peut explorer avec succès le compromis entre la précision de la validation et le nombre de paramètres.Il peut trouver à la fois de grands modèles avec une précision de vérification élevée et de petits modèles avec une faible précision de vérification.

En fonction des exigences de performances et des contraintes de taille du modèle, les décideurs peuvent désormais choisir le modèle à utiliser ou à analyser plus en détail.

Visualisation

Ax fournit des outils de visualisation pour aider à analyser et à comprendre les résultats expérimentaux.Nous nous concentrons sur les performances des modèles de processus gaussiens pour la modélisation de cibles inconnues, qui peuvent être utilisées pour aider à découvrir plus rapidement des configurations prometteuses.

Ax permet de mieux comprendre la précision de ces modèles et leurs performances sur des données invisibles grâce à la validation croisée « leave-one-out ».

Dans les figures ci-dessous, nous pouvons voir que le modèle s’adapte assez bien – les prédictions sont proches des résultats réels.Les intervalles de confiance prédits du 95% couvrent bien les résultats réels.

De plus, on peut voir que la taille du modèle (num_params) Précision de la vérification du ratio d'index (val_acc) Les indicateurs sont plus faciles à modéliser.

Résumé d'Ax

  •   Tutoriel montrant comment exécuter une recherche d'architecture neuronale multi-objectifs entièrement automatisée à l'aide d'Ax.
  •   Utilisez le planificateur Ax pour exécuter automatiquement les optimisations de manière entièrement asynchrone (cela peut être fait localement) ou en déployant des expériences à distance sur un cluster (modifiez simplement la configuration du planificateur TorchX).
  •  Les algorithmes d’optimisation bayésienne multi-objectifs de pointe fournis dans Ax aident à explorer efficacement le compromis entre la précision de la validation et la taille du modèle.

Fonctionnalités avancées

Ax possède d'autres fonctionnalités avancées qui ne sont pas abordées dans le didacticiel ci-dessus. Comprend les éléments suivants :

Arrêt anticipé 

Lors de l'évaluation d'une nouvelle configuration candidate, des courbes d'apprentissage partielles sont souvent disponibles pendant que le travail de formation NN est en cours d'exécution.

Les informations contenues dans les courbes partielles sont utilisées pour identifier les essais peu performants afin qu'ils puissent être arrêtés prématurément, libérant ainsi des ressources informatiques pour des candidats plus prometteurs. Bien que cela ne soit pas démontré dans le didacticiel ci-dessus, Axe prend en charge l'arrêt anticipé dès la sortie de la boîte.

https://ax.dev/versions/latest/tutorials/early_stopping/early_stopping.html

Espace de recherche à grande dimension

Le didacticiel utilise l'optimisation bayésienne avec un processus gaussien standard pour maintenir le temps d'exécution bas.

Cependant, ces modèles ne s'adaptent généralement qu'à environ 10 à 20 paramètres réglables. La nouvelle méthode SAASBO est très efficace en termes d’échantillonnage et peut régler des centaines de paramètres. À travers select_generation_strategy  transfert use_saasbo=Vrai , SAASBO peut être facilement activé.

Ce qui précède est une introduction à TorchX. La communauté des développeurs PyTorch continuera de se concentrer sur l’utilisation des transformations graphiques pour optimiser les performances des modèles PyTorch de production.

Recherchez Hyperai01, notez « PyTorchRejoignez le groupe d'échange technique PyTorch pour en savoir plus sur les derniers développements et les meilleures pratiques de PyTorch !