Isaac Gym: High Performance GPU-Based Physics Simulation For Robot Learning
Autori: Viktor Makoviychuk, Lukasz Wawrzyniak, Yunrong Guo, Michelle Lu, Kier Storey, Miles Macklin, David Hoeller, Nikita Rudin, Arthur Allshire, Ankur Handa, Gavriel State · arXiv 2021
Licenze
- Open access
- Articolo: CC BY 4.0
Tutto ciò che segue si basa sull'articolo completo secondo la sua licenza CC BY 4.0; la figura è riportata citando gli autori.
In breve
Isaac Gym esegue simulazione PhysX, osservazioni, ricompense e addestramento PPO su una sola GPU tramite un'API a tensori PyTorch; il riorientamento del cubo con la Shadow Hand scende da 30 h su un cluster di CPU a meno di 1 h.
Perché è importante
Compiti che prima richiedevano un cluster di CPU possono essere addestrati su una singola GPU in minuti od ore, il che accorcia le iterazioni nella ricerca su locomozione e manipolazione destra. Gli autori trasferiscono inoltre policy addestrate in questo modo a un ANYmal reale su terreno accidentato e a un TriFinger reale remoto, a indicare che la fisica dei contatti simulata regge il lavoro sim-to-real.
Problema
L'RL per robot di solito simula la fisica su CPU e addestra le reti su GPU, quindi i dati si spostano tra i dispositivi a ogni passo e la velocità della simulazione limita l'addestramento. Il lavoro di OpenAI sul cubo con la Shadow Hand, per esempio, ha usato 384 macchine con 6144 core CPU più 8 GPU V100 per 30 ore, e il suo seguito sul cubo di Rubik ha usato quasi 30.000 core CPU.
Soluzione proposta
Isaac Gym esegue NVIDIA PhysX sulla GPU con due aggiunte: i risultati della simulazione non vengono più riportati alla CPU dopo ogni passo, e un'API GPU diretta legge lo stato e applica i comandi nei buffer della GPU. Questi buffer sono incapsulati come tensori PyTorch senza copia, così migliaia di ambienti paralleli vengono fatti avanzare, osservati, ricompensati e addestrati (con l'implementazione PPO di rl_games) su una sola GPU, con robot caricati da URDF o MJCF.
Idee chiave
- Mantenere sulla GPU lo stato della fisica, il calcolo di osservazioni e ricompense e l'addestramento della policy elimina le copie CPU-GPU che limitano le pipeline RL convenzionali.
- Più ambienti paralleli accorciano l'addestramento finché l'orizzonte per ambiente non diventa troppo corto: Humanoid non guadagna nulla e apprende andature peggiori oltre 4096 ambienti con orizzonte 32, ma apprende con 8192 e 16384 ambienti quando gli orizzonti vengono raddoppiati.
- Il throughput della simulazione cala con la complessità del modello: fino a circa 700K passi d'ambiente al secondo per Ant, 200K per Humanoid e 150K per la Shadow Hand su una A100.
- L'actor-critic asimmetrico (asymmetric actor-critic), in cui il critic riceve lo stato privilegiato del simulatore e la policy solo osservazioni disponibili su un robot reale, è usato nelle configurazioni Shadow Hand OpenAI e TriFinger per consentire il trasferimento sim-to-real.
- Un polso mobile aiuta il riorientamento: la Allegro Hand, con polso fisso e dita leggermente più lunghe, ottiene meno successi consecutivi della Shadow Hand pur avendo meno gradi di libertà.
Risultati principali
- Su una singola A100: Ant supera una ricompensa di 3000 in 20 s, Humanoid corre (ricompensa 5000) in meno di 4 min, ANYmal segue obiettivi di velocità in meno di 2 min e l'impilamento di cubi con Franka converge in meno di 25 min.
- Shadow Hand con osservazioni OpenAI e randomizzazione del dominio: oltre 20 successi consecutivi in meno di 1 h (feed-forward) e 37 in poco meno di 6 h (LSTM), contro 30 h e circa 17 h di OpenAI su 6144 core CPU più 8 GPU V100; il miglior seed LSTM arriva a 37 in 2,5 h.
- Shadow Hand Standard (senza randomizzazione): 20 successi consecutivi in meno di 35 min; portare gli ambienti da 256 a 16384 riduce l'addestramento da 5×10⁴ s (circa 14 h) a 3×10³ s (circa 1 h).
- Animazione di personaggi umanoidi con AMP: circa 39 milioni di campioni in circa 6 min con 4096 ambienti, contro circa 30 h su 16 core CPU in PyBullet, riportato come un miglioramento di 300×.
- Sim-to-real: la policy per terreno accidentato di ANYmal è addestrata su una RTX A6000 e trasferita al robot reale in meno di 20 min; il TriFinger reale raggiunge un tasso di successo medio del 55 %, con il trasferimento effettuato da remoto.
- Dati di accelerazione contrastanti: l'abstract della v1 indica 1-2 ordini di grandezza rispetto all'addestramento con simulatore su CPU, mentre l'introduzione della v1 e la Fig. 2 indicano 100×-1000×; l'abstract attuale su arXiv indica 2-3 ordini di grandezza.
Limiti
- Gli esperimenti con la Shadow Hand sono solo in simulazione; a differenza del lavoro di OpenAI, per la mano non si tenta alcun trasferimento sim-to-real, e le randomizzazioni omettono il ritardo delle azioni e il gioco (backlash) dei motori.
- Shadow Hand Standard usa osservazioni che potrebbero non essere disponibili su un robot reale, quindi gli autori affermano che non è adatta al trasferimento sim-to-real.
- Ingenuity è un modello semplificato: le forze sono applicate direttamente ai due rotori invece di simulare l'aerodinamica.
- Con il motore FleX è disponibile solo una funzionalità limitata dell'API a tensori, la configurazione della scena gira sulla CPU e gli esempi inclusi usano PyTorch, mentre l'integrazione con TensorFlow richiede ulteriore personalizzazione.
- Aggiungere ambienti smette di aiutare quando gli orizzonti diventano corti: Ant non mostra guadagni passando da 8192 a 16384 ambienti, e Humanoid oltre 4096 ambienti con orizzonte 32 si addestra più lentamente e apprende andature subottimali.
Impatto sul settore
1469 citazioni. L'articolo rilascia Isaac Gym come download da NVIDIA (developer.nvidia.com/isaac-gym), con un'implementazione PPO di base e un sistema di task RL, e ospita risultati e video sul sito del progetto.
Abstract
Isaac Gym offre una piattaforma di apprendimento ad alte prestazioni per addestrare policy per un'ampia varietà di compiti robotici direttamente su GPU. Sia la simulazione fisica sia l'addestramento della policy a rete neurale risiedono sulla GPU e comunicano passando direttamente i dati dai buffer della fisica ai tensori PyTorch, senza mai attraversare colli di bottiglia della CPU. Ciò porta a tempi di addestramento rapidissimi per compiti robotici complessi su una singola GPU, con miglioramenti di 2-3 ordini di grandezza rispetto all'addestramento RL convenzionale che usa un simulatore basato su CPU e la GPU per le reti neurali. Ospitiamo risultati e video su https://sites.google.com/view/isaacgym-nvidia e isaac gym può essere scaricato da https://developer.nvidia.com/isaac-gym.
Link
- 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
- Pagina del progetto: https://sites.google.com/view/isaacgym-nvidia