Open Source Robotics

고품질 오픈소스 로봇 프로젝트, 도구 및 소프트웨어의 엄선된 컬렉션.

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

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

라이선스

  • 오픈 액세스
  • 논문: CC BY 4.0

아래 내용은 모두 논문의 라이선스(CC BY 4.0)에 따라 논문 전문을 바탕으로 하며, 그림에는 저자를 표기했습니다.

요약

Isaac Gym은 PyTorch 텐서 API를 통해 PhysX 시뮬레이션, 관측, 보상, PPO 학습을 하나의 GPU에서 실행한다. Shadow Hand 큐브 방향 바꾸기는 CPU 클러스터에서 30 h 걸리던 것이 1 h 미만으로 줄어든다.

중요한 이유

이전에는 CPU 클러스터가 필요했던 작업을 단일 GPU에서 몇 분에서 몇 시간 안에 학습할 수 있어, 보행 및 정교한 조작 연구의 반복 주기가 짧아진다. 저자들은 또한 이렇게 학습한 정책을 험한 지형의 실제 ANYmal과 원격지의 실제 TriFinger로 전이하며, 이는 시뮬레이션된 접촉 물리가 sim-to-real 작업을 뒷받침함을 시사한다.

문제

로봇 RL은 보통 CPU에서 물리를 시뮬레이션하고 GPU에서 네트워크를 학습하므로, 매 스텝마다 장치 간에 데이터가 이동하고 시뮬레이션 속도가 학습을 제한한다. 예를 들어 OpenAI의 Shadow Hand 큐브 연구는 CPU 코어 6144개를 가진 머신 384대와 V100 GPU 8개를 30시간 동안 사용했고, 후속 Rubik's Cube 연구는 거의 30,000개의 CPU 코어를 사용했다.

제안 방법

Isaac Gym은 GPU에서 NVIDIA PhysX를 실행하면서 두 가지를 추가한다. 시뮬레이션 결과를 매 스텝 후 CPU로 가져오지 않으며, 직접 GPU API가 GPU 버퍼에서 상태를 읽고 제어를 적용한다. 이 버퍼들은 복사 없이 PyTorch 텐서로 감싸지므로, 수천 개의 병렬 환경이 하나의 GPU에서 스텝 진행, 관측, 보상 계산, 학습(rl_games PPO 구현 사용)을 거치며, 로봇은 URDF나 MJCF에서 불러온다.

핵심 통찰

  • 물리 상태, 관측 및 보상 계산, 정책 학습을 모두 GPU에 두면 기존 RL 파이프라인을 제한하는 CPU-GPU 간 복사가 사라진다.
  • 병렬 환경을 늘리면 환경당 호라이즌이 지나치게 짧아지기 전까지 학습이 빨라진다. Humanoid는 호라이즌 32에서 4096개를 넘는 환경으로는 이득이 없고 더 나쁜 걸음새를 학습하지만, 호라이즌을 두 배로 늘리면 8192개와 16384개 환경으로도 학습한다.
  • 시뮬레이션 처리량은 모델 복잡도에 따라 떨어진다. A100에서 초당 환경 스텝이 Ant는 최대 약 700K, Humanoid는 200K, Shadow Hand는 150K이다.
  • 크리틱은 특권적인 시뮬레이터 상태를 받고 정책은 실제 로봇에서 얻을 수 있는 관측만 받는 비대칭 액터-크리틱이 Shadow Hand OpenAI 및 TriFinger 구성에서 sim-to-real 전이를 위해 사용된다.
  • 움직이는 손목은 방향 바꾸기에 도움이 된다. 손목이 고정되고 손가락이 약간 더 긴 Allegro Hand는 자유도가 더 적음에도 Shadow Hand보다 연속 성공 횟수가 적다.

주요 결과

  • 단일 A100에서: Ant는 20 s 만에 보상 3000을 넘고, Humanoid는 4 min 미만에 달리며(보상 5000), ANYmal은 2 min 미만에 속도 목표를 따르고, Franka 큐브 쌓기는 25 min 미만에 수렴한다.
  • OpenAI 관측과 도메인 무작위화를 사용한 Shadow Hand: 1 h 미만에 연속 성공 20회 초과(피드포워드), 6 h 약간 미만에 37회(LSTM). OpenAI는 CPU 코어 6144개와 V100 GPU 8개로 30 h와 약 17 h가 걸렸다. 가장 좋은 LSTM 시드는 2.5 h에 37회에 도달한다.
  • Shadow Hand Standard(무작위화 없음): 35 min 미만에 연속 성공 20회. 환경을 256개에서 16384개로 늘리면 학습 시간이 5×10⁴ s(약 14 h)에서 3×10³ s(약 1 h)로 줄어든다.
  • AMP 휴머노이드 캐릭터 애니메이션: 4096개 환경으로 약 6 min에 약 3900만 샘플. PyBullet에서 CPU 코어 16개로 약 30 h 걸린 것과 비교되며, 300× 개선으로 보고된다.
  • Sim-to-real: ANYmal 험지 정책은 RTX A6000에서 20 min 미만에 학습되어 실제 로봇으로 전이된다. 실제 TriFinger는 평균 성공률 55%에 도달하며, 전이는 원격으로 수행되었다.
  • 상충하는 속도 향상 수치: v1 초록은 CPU 시뮬레이터 학습 대비 1-2 자릿수라고 하고, v1 서론과 Fig. 2는 100×-1000×라고 하며, 현재 arXiv 초록은 2-3 자릿수라고 한다.

한계

  • Shadow Hand 실험은 시뮬레이션에서만 이루어진다. OpenAI의 연구와 달리 손에 대해서는 sim-to-real 전이를 시도하지 않으며, 무작위화에는 행동 지연과 모터 백래시가 빠져 있다.
  • Shadow Hand Standard는 실제 로봇에서 얻을 수 없을 수도 있는 관측을 사용하므로, 저자들은 이것이 sim-to-real 전이에 적합하지 않다고 밝힌다.
  • Ingenuity는 단순화된 모델이다. 공기역학을 시뮬레이션하는 대신 두 로터에 힘을 직접 가한다.
  • FleX 엔진에서는 텐서 API 기능이 제한적으로만 제공되고, 장면 설정은 CPU에서 실행되며, 포함된 예제는 PyTorch를 사용하고 TensorFlow 통합에는 추가적인 맞춤 작업이 필요하다.
  • 호라이즌이 짧아지면 환경을 추가해도 더 이상 도움이 되지 않는다. Ant는 8192개에서 16384개 환경으로 늘려도 이득이 없고, Humanoid는 호라이즌 32에서 4096개를 넘는 환경으로 학습이 더 느려지고 차선의 걸음새를 학습한다.

분야에 미친 영향

인용 1469회. 논문은 Isaac Gym을 NVIDIA(developer.nvidia.com/isaac-gym)에서 내려받을 수 있도록 공개하며, 여기에는 기본 PPO 구현과 RL 작업 시스템이 포함되고, 결과와 영상은 프로젝트 사이트에 게시되어 있다.

초록

Isaac Gym은 다양한 로봇 작업을 위한 정책을 GPU에서 직접 학습하는 고성능 학습 플랫폼을 제공한다. 물리 시뮬레이션과 신경망 정책 학습이 모두 GPU에 있으며, CPU 병목을 전혀 거치지 않고 물리 버퍼의 데이터를 PyTorch 텐서로 직접 전달하여 통신한다. 그 결과 단일 GPU에서 복잡한 로봇 작업의 학습 시간이 매우 빨라지며, CPU 기반 시뮬레이터와 신경망용 GPU를 사용하는 기존 RL 학습에 비해 2-3 자릿수의 개선을 얻는다. 결과와 영상은 https://sites.google.com/view/isaacgym-nvidia 에 게시되어 있으며, isaac gym은 https://developer.nvidia.com/isaac-gym 에서 내려받을 수 있다.

링크

  • 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
  • 프로젝트 페이지: https://sites.google.com/view/isaacgym-nvidia

이 웹사이트는 JavaScript가 필요합니다. 오픈소스 로봇 프로젝트를 탐색하려면 JavaScript를 활성화하세요.