Open Source Robotics

Une collection organisée de projets, outils et logiciels robotiques open source de haute qualité.

Isaac Gym: High Performance GPU-Based Physics Simulation For Robot Learning

Auteurs: Viktor Makoviychuk, Lukasz Wawrzyniak, Yunrong Guo, Michelle Lu, Kier Storey, Miles Macklin, David Hoeller, Nikita Rudin, Arthur Allshire, Ankur Handa, Gavriel State · arXiv 2021

Licences

  • Accès libre
  • Article: CC BY 4.0

Tout ce qui suit s'appuie sur l'article complet sous sa licence CC BY 4.0 ; sa figure est montrée en citant les auteurs.

En bref

Isaac Gym exécute la simulation PhysX, les observations, les récompenses et l'entraînement PPO sur un seul GPU via une API de tenseurs PyTorch ; la réorientation d'un cube par la Shadow Hand passe de 30 h sur une grappe de CPU à moins de 1 h.

Pourquoi c'est important

Des tâches qui nécessitaient auparavant une grappe de CPU peuvent être entraînées sur un seul GPU en quelques minutes à quelques heures, ce qui raccourcit les itérations de la recherche en locomotion et en manipulation dextre. Les auteurs transfèrent aussi des politiques ainsi entraînées vers un ANYmal réel sur terrain accidenté et vers un TriFinger réel distant, ce qui indique que la physique de contact simulée se prête au travail sim-to-real.

Problème

Le RL robotique simule habituellement la physique sur CPU et entraîne les réseaux sur GPU, de sorte que les données circulent entre les appareils à chaque pas et que la vitesse de simulation limite l'entraînement. Les travaux d'OpenAI sur le cube avec la Shadow Hand, par exemple, ont utilisé 384 machines avec 6144 cœurs CPU plus 8 GPU V100 pendant 30 heures, et leur suite sur le Rubik's Cube a utilisé près de 30 000 cœurs CPU.

Solution proposée

Isaac Gym exécute NVIDIA PhysX sur le GPU avec deux ajouts : les résultats de simulation ne sont plus rapatriés vers le CPU après chaque pas, et une API GPU directe lit l'état et applique les commandes dans des tampons GPU. Ces tampons sont encapsulés en tenseurs PyTorch sans copie, si bien que des milliers d'environnements parallèles sont avancés, observés, récompensés et entraînés (avec l'implémentation PPO de rl_games) sur un seul GPU, les robots étant chargés depuis URDF ou MJCF.

Idées clés

  • Garder sur le GPU l'état physique, le calcul des observations et des récompenses, et l'entraînement de la politique supprime les copies CPU-GPU qui limitent les chaînes RL conventionnelles.
  • Davantage d'environnements parallèles raccourcissent l'entraînement jusqu'à ce que l'horizon par environnement devienne trop court : Humanoid ne gagne rien et apprend des allures moins bonnes au-delà de 4096 environnements avec un horizon de 32, mais apprend avec 8192 et 16384 environnements lorsque les horizons sont doublés.
  • Le débit de simulation baisse avec la complexité du modèle : jusqu'à environ 700K pas d'environnement par seconde pour Ant, 200K pour Humanoid et 150K pour la Shadow Hand sur un A100.
  • Un acteur-critique asymétrique, où le critique reçoit l'état privilégié du simulateur et la politique uniquement les observations disponibles sur un robot réel, est utilisé pour les configurations Shadow Hand OpenAI et TriFinger afin de permettre le transfert sim-to-real.
  • Un poignet mobile aide à la réorientation : la Allegro Hand, avec un poignet fixe et des doigts légèrement plus longs, atteint moins de réussites consécutives que la Shadow Hand malgré moins de degrés de liberté.

Principaux résultats

  • Sur un seul A100 : Ant dépasse une récompense de 3000 en 20 s, Humanoid court (récompense 5000) en moins de 4 min, ANYmal suit des consignes de vitesse en moins de 2 min, et l'empilement de cubes avec Franka converge en moins de 25 min.
  • Shadow Hand avec observations OpenAI et randomisation de domaine : plus de 20 réussites consécutives en moins de 1 h (feed-forward) et 37 en un peu moins de 6 h (LSTM), contre 30 h et environ 17 h pour OpenAI sur 6144 cœurs CPU plus 8 GPU V100 ; la meilleure graine LSTM atteint 37 en 2,5 h.
  • Shadow Hand Standard (sans randomisation) : 20 réussites consécutives en moins de 35 min ; passer de 256 à 16384 environnements réduit l'entraînement de 5×10⁴ s (environ 14 h) à 3×10³ s (environ 1 h).
  • Animation de personnage humanoïde AMP : environ 39 millions d'échantillons en environ 6 min avec 4096 environnements, contre environ 30 h sur 16 cœurs CPU dans PyBullet, présenté comme une amélioration de 300×.
  • Sim-to-real : la politique ANYmal pour terrain accidenté est entraînée sur une RTX A6000 en moins de 20 min et transférée au robot réel ; le TriFinger réel atteint un taux de réussite moyen de 55 %, le transfert ayant été réalisé à distance.
  • Chiffres d'accélération contradictoires : le résumé de la v1 indique 1-2 ordres de grandeur par rapport à l'entraînement avec simulateur sur CPU, tandis que l'introduction de la v1 et la Fig. 2 indiquent 100×-1000× ; le résumé arXiv actuel indique 2-3 ordres de grandeur.

Limites

  • Les expériences avec la Shadow Hand se font uniquement en simulation ; contrairement aux travaux d'OpenAI, aucun transfert sim-to-real n'est tenté pour la main, et les randomisations omettent le retard d'action et le jeu des moteurs.
  • Shadow Hand Standard utilise des observations qui peuvent ne pas être disponibles sur un robot réel ; les auteurs indiquent donc qu'il ne convient pas au transfert sim-to-real.
  • Ingenuity est un modèle simplifié : les forces sont appliquées directement aux deux rotors au lieu de simuler l'aérodynamique.
  • Seule une fonctionnalité limitée de l'API de tenseurs est disponible avec le moteur FleX, la mise en place de la scène s'exécute sur le CPU, et les exemples fournis utilisent PyTorch, une intégration TensorFlow nécessitant une personnalisation supplémentaire.
  • Ajouter des environnements n'aide plus une fois les horizons devenus courts : Ant ne montre aucun gain de 8192 à 16384 environnements, et Humanoid, au-delà de 4096 environnements avec un horizon de 32, s'entraîne plus lentement et apprend des allures sous-optimales.

Impact sur le domaine

1469 citations. L'article met Isaac Gym à disposition en téléchargement auprès de NVIDIA (developer.nvidia.com/isaac-gym), avec une implémentation PPO de base et un système de tâches RL, et héberge les résultats et les vidéos sur son site de projet.

Résumé

Isaac Gym offre une plateforme d'apprentissage haute performance pour entraîner des politiques pour une grande variété de tâches robotiques directement sur GPU. La simulation physique et l'entraînement de la politique par réseau de neurones résident tous deux sur le GPU et communiquent en passant directement les données des tampons physiques à des tenseurs PyTorch, sans jamais passer par un goulot d'étranglement CPU. Cela conduit à des temps d'entraînement extrêmement rapides pour des tâches robotiques complexes sur un seul GPU, avec des améliorations de 2-3 ordres de grandeur par rapport à l'entraînement RL conventionnel qui utilise un simulateur sur CPU et un GPU pour les réseaux de neurones. Nous hébergeons les résultats et les vidéos à l'adresse https://sites.google.com/view/isaacgym-nvidia et isaac gym peut être téléchargé à l'adresse https://developer.nvidia.com/isaac-gym.

Liens

  • arXiv 2108.10470: https://arxiv.org/abs/2108.10470
  • DOI https://doi.org/10.48550/arxiv.2108.10470: https://doi.org/https://doi.org/10.48550/arxiv.2108.10470
  • PDF: https://arxiv.org/pdf/2108.10470v1
  • Page du projet: https://sites.google.com/view/isaacgym-nvidia

Ce site nécessite JavaScript. Veuillez activer JavaScript pour explorer nos projets de robotique open source.