Search Unity

Unity 머신러닝 에이전트 툴킷(ML-Agents)은 2017년 9월 17일에 처음 출시되었습니다. ML-Agents는 Unity를 기반으로 게임 개발자와 AI 연구원이 최신 머신러닝 기술을 이용하여 지능형 에이전트를 훈련하고 임베드할 수 있도록 설계되었습니다. 첫 “Hello World” 출시 이래, 이 프로젝트는 8,400개 이상의 Github 스타(Star)를 받으며 툴킷 사용자 규모와 개발면에서 주목할 만한 성장을 이루었습니다. 2년 6개월 이상의 개발 기간과 15회 이상의 릴리스 업데이트를 거친 결과, ML-Agents Unity 패키지 v1.0이 프리뷰 패키지로 출시되었으며, 새로운 ML-Agents용 제품 및 리소스 패키지도 함께 출시되었습니다.

ML-Agents는 게임 및 시뮬레이션을 통해 지능형 에이전트를 훈련할 수 있는 환경을 조성하는 오픈 소스 프로젝트로, C# SDK를 활용하여 씬을 설정하고 씬에서 에이전트를 정의할 수 있으며, 첨단 머신러닝 라이브러리를 통해 2D, 3D 및 VR/AR 환경에 맞게 에이전트를 훈련할 수 있습니다.

ML-Agents는 곧 정식으로 제작에 사용 가능해질 예정입니다. 현재 Unity 패키지 관리자를 통해 C# SDK의 첫 번째 주요 버전인 v1.0을 프리뷰 패키지인 com.unity.ml-agents로 이용할 수 있게 되었습니다. 이 패키지는 다음과 같은 세 가지 이점이 있습니다.

  • API 안정성.ML-Agents C# SDK는 이동(움직임, 동작), 멀티플레이어 게임 및 로봇 팔에 이르는 Unity의 자체적인 데모 환경을 비롯해 Unity로 만든 실제 게임에서 2년 이상의 개발과 테스트를 거쳤습니다. 그 결과, 모든 게임과 Unity 환경에 손쉽게 통합할 수 있는 유연하고 다양한 기능을 갖춘 안정적인 API가 구현되었습니다.
  • 간편한 설치.이제 GitHub 프로젝트를 복제할 필요 없이 패키지 관리자에서 직접 ML-Agents Unity 패키지를 이용할 수 있습니다.
  • 검증된 Unity 패키지( 출시 예정).ML-Agents Unity 패키지가 Unity 에디터2 버전에서 검증된 패키지로 출시될 예정입니다.

이 블로그 포스팅에서는 ML-Agents의 역사를 간단히 소개하고, 최근에 출시된 ML-Agents 릴리스 1 및 향후 출시될 ML-Agents의 개선된 기능에 대해서도 살펴보겠습니다.

ML-Agents 역사

머신 러닝과 관련된 첫 번째 블로그 포스팅을 보면 다음과 같은 말이 있습니다.

Unity는 세계에서 가장 널리 사용되는 3D 엔진으로 머신러닝 및 게임 분야 사이에서 미래를 그려나가고 있습니다. 머신러닝 연구자가 가장 효과적인 학습 방법을 개발하고, 이를 통해 게임 커뮤니티가 최신 머신러닝 기술을 활용할 수 있도록 하는 것이 유니티의 핵심 임무입니다.

단순한 것부터 복잡한 훈련 환경까지 모두 지원하는 ML-Agents

ML-Agents는 그 후 2년 반 동안 발전을 거듭하여 게임 및 머신러닝 커뮤니티를 이어주는 매개체가 되었습니다. 유니티는 커리큘럼 학습과 같은 새로운 훈련 옵션을 추가하고, 보상이 드물게 발생하는 환경에서 호기심 모듈을 제공하며, 훈련 속도와 효율성을 개선했습니다. 또한 멀티 에이전트 시나리오에서 셀프 플레이를 가능하게 하고, ML-Agents로 훈련하는 모든 모델에 크로스 플랫폼 추론을 지원하는 등 툴킷을 지속적으로 개선해 왔습니다. (ML-Agents의 모든 기능에 관한 설명은 GitHub ML-Agents 개요 페이지에서 확인할 수 있습니다.) 유니티는 이러한 개선을 통해 퍼포(Puppo)와 같은 새로운 데모와 환경을 구현하는 과정과, Jam City의 Snoopy Pop, Carry Castle의 Source of Madness와 같은 실제 게임과의 통합이 어떻게 이루어지는지 직접 확인할 수 있었습니다.

Snoopy Pop(왼쪽 상단), Puppo Day at the Races(오른쪽 상단), Source of Madness(하단)

특히, 유니티는 AI 연구원을 위해 컴퓨터 비전, 컨트롤, 계획의 벤치마크로 사용할 수 있는 옵스타클 타워 환경 및 챌린지(ML-Agents 사용)를 제작했습니다. 연구 벤치마크를 생성하기 위해 ML-Agents를 도입한 연구원이나 실험실도 있었습니다. 대표적인 예로는 아레나 멀티 에이전트 환경, 동물 AI 올림픽, 연속 제어 마라톤 환경이 있습니다.

옵스타클 타워(왼쪽 상단), 마라톤 환경(오른쪽 상단), 동물 AI 올림픽(왼쪽 하단), 아레나(오른쪽 하단)

첫 출시 당시 ML-Agents 커뮤니티는 AI 연구원, 게임 개발자, 학생들로 이루어진 다소 체계적이지 못한 모임이었지만, 이제는 수천 명에 달하는 열정적인 구성원들로 이루어진 커뮤니티로 성장했습니다. 커뮤니티를 통해 ML-Agents의 창의적인 데모가 여러 개 온라인으로 공유되었습니다. 그 결과, 유니티의 GitHub 저장소는 8,400개 이상의 스타와 2,300개의 포크(Fork)를 받았으며 유니티의 연구 논문인 Unity: 지능형 에이전트를 위한 보편적인 플랫폼은 115회 이상 인용되었습니다.

ML-Agents Unity 패키지 v1.0

이제 최신 릴리스ML-Agents Unity 패키지 v1.0.0이 출시되어 Unity 패키지 관리자를 통해 프리뷰 패키지로 이용 가능합니다. 유니티의 연구 논문인 Unity: 지능형 에이전트를 위한 보편적인 플랫폼 역시 ML-Agents 릴리스 1을 반영하여 업데이트되었습니다.

이번 출시를 통해 ML-Agents에 이루어진 두 가지 핵심 개선 사항은 다음과 같습니다.

  1. 패키지 구성. 이제 ML-Agents는 Unity 패키지 1개와 Unity-Python 커뮤니케이션 및 머신러닝 알고리즘을 포함하는 Python 패키지 3개로 이루어진 4개의 패키지로 구성됩니다. 유니티의 훈련 알고리즘을 수정하거나 자신만의 알고리즘을 구축하려는 연구원이 아니라면, Unity 패키지를 프로젝트에 통합하고 훈련 CLI를 사용하는 간단한 절차를 거쳐 ML-Agents를 이용하실 수 있습니다.
  2. API 개선 사항. 몇 개월 전, 유니티는 C# SDK를 훨씬 쉽고 직관적으로 사용할 수 있도록 개선 작업을 시작했습니다. 그 결과 2019년 9월10.0을 시작으로 몇 차례의 릴리스를 거쳐 현재 버전이 되기까지 수많은 개선이 이루어졌습니다. 변경 사항에 관한 자세한 정보는 유니티의 릴리스 노트에서 확인하실 수 있습니다.

또한 ML-Agents 릴리스 1부터는 매 GitHub 릴리스마다 ML-Agents를 구성하는 각 패키지의 새로운 버전을 게시할 예정입니다. ML-Agents 릴리스 1에서 설정한 버전은 다음과 같습니다.

  • unity.ml-agents(v1.0.0, C#)
    • 공개 API가 정의되었으며 추후 릴리스에서는 유의적 버전을 적용할 예정입니다. 또한 프리뷰 패키지 형태로 Unity 패키지 관리자에 추가되었습니다. 검증된 패키지는 Unity 2020.2 버전에서 릴리스할 예정입니다.
  • 커뮤니케이터(0.0, C#/Python)
    • Unity와 Python 간의 커뮤니케이션 프로토콜이 안정화되었으며 유의적 버전이 적용될 예정입니다. 동일한 주요 버전의 커뮤니케이션 프로토콜을 사용하는 C#와 Python 패키지 간에는 이전 또는 이후 버전에서 기능이 호환됩니다.
  • ml-agents, ml-agents-envs, gym-unity(16.0, Python).
    • Python 패키지는 계속해서 발전하며 이전 버전과 호환되지 않는 방식으로 개선될 예정입니다. 앞으로 적용될 CLI 개선 사항으로 인해 주요 변화가 발생할 수 있으나 곧 CLI를 마무리하고 안정화할 예정입니다.

패키지 버전과 그에 따른 GitHub 릴리스의 변경 사항에 관한 자세한 내용은 버전 페이지에서 확인할 수 있습니다.

향후 계획

유니티는 ML-Agents 릴리스 1을 시작으로 훈련 알고리즘의 성능과 효율성을 개선하고, 사용자 피드백을 바탕으로 Unity 패키지를 강화하며, 게임 및 산업에 적용된 ML-Agents의 사례에서 영감을 얻어 더 많은 예시 환경을 추가할 계획입니다. ML-Agents를 사용해보고 ML-Agents 포럼에서 로드맵에 관한 의견을 나눠보세요.

핵심 툴킷 외에도 유니티에서는 현재 다음 기능들을 개선 중입니다.

Unity 2020.2 검증된 패키지

검증된 패키지가 되려면, 엄격한 테스트를 마치고 Unity의 특정 버전에서 안정적으로 작업을 수행하는지 검증 받아야 합니다. 즉, 제작 중인 게임에 정식으로 사용하려면 ML-Agents를 충분히 검증해야 합니다. 유니티에서는 Unity 2020.2 버전에 검증된 패키지를 릴리스할 예정입니다. 따라서Unity 2020 LTS 스트림에 ML-Agents Unity 패키지도 포함됩니다.

ML-Agents Cloud

ML-Agents Cloud를 이용하여 훈련 규모 확장

ML-Agents 사용자는 Python을 설치할 필요 없이 훈련이 가능해지기를 원합니다. 또한 사용자가 로컬 머신에서 훈련할 경우, 동시에 훈련할 수 있는 환경의 수나 하이퍼파라미터 설정이 크게 제한됩니다. 올해 출시 예정인 클라우드 서비스인 ML-Agents Cloud는 ML-Agents 사용자가 확장 가능한 클라우드 인프라에서 훈련할 수 있도록 지원합니다. 사용자는 동시에 진행되는 여러 훈련 세션을 제출하거나 훈련 세션을 여러 머신으로 확장하여 더 빠른 결과를 얻을 수 있습니다.

현재 유니티에서는 ML-Agents Cloud의 프리뷰 버전 사용자 신청을 받고 있습니다. 실험을 확장하고 관리하는 데 도움이 필요한 기존 ML-Agents 사용자는 여기에서 신청하시기 바랍니다.

DOTS 환경에서 ML-Agents

데이터 지향 기술 스택(DOTS)을 통해 Unity의 핵심 기반이 재구축되고 있습니다. DOTS는 빌드의 규모를 줄이고 실행 속도를 높임으로써 커다란 성능상의 이점을 제공하며, 이러한 이점은 시뮬레이션과 머신러닝 부문에서 더욱 두드러집니다. 따라서 유니티는 DOTS용으로 구축된 ML-Agents 버전을 내부적으로 프로토타이핑해 왔습니다. DOTS 프로토타입을 샘플 씬(상단 참조) 및 메가시티(MegaCity), 타이니 레이싱(TinyRacing)과 같은 Unity 데모에 성공적으로 통합한 결과, 메가시티처럼 복잡하고 규모가 큰 환경에서 일반 노트북으로 단 몇 시간 만에 에이전트를 훈련할 수 있었습니다. 올해 말에는 DOTS용 ML-Agents의 실험 버전을 릴리스할 예정입니다.

 

DOTS를 사용하여 게임이나 Unity 프로젝트를 빌드 중이며, ML-Agents를 사용해보고 싶다면 이메일을 보내주시기 바랍니다. 유니티에서는 DOTS용 ML-Agents를 개선하는 데 도움을 주실 프리뷰 사용자를 찾고 있습니다.

로봇 공학

로봇 공학 연구원들은 Unity의 NVIDIA PhysX 4.0을 통해 로봇 공학 시뮬레이션의 품질을 대폭 개선할 수 있었습니다(Unity 2019.3 물리 업데이트 참조). Unity 2020.1은 Nvidia의 PhysX 4.1을 기반으로 하는 새로운 관절 시스템(articulation joint system)을 포함하고 있어 로봇 팔과 연속적 조인트의 시뮬레이션이 크게 향상되었습니다. 이 시스템은 Featherstone의 알고리즘, 감소된 좌표 표현, 새로운 비선형적 반복 계산법을 사용하여 조인트 내에서 원치 않는 스트레치를 현저히 감소시킵니다. 그 결과, 여러 조인트가 한 줄로 연결된 상태에서도 안정적이고 정교한 움직임을 구현할 수 있게 되었습니다.

새로운 관절 시스템은 Unity 2020.1(베타)에서 사용 가능합니다. 위에 언급된 로봇 공학 환경으로 실험을 수행하거나 나만의 로봇 공학 환경을 생성하려면 Unity 로봇 공학 데모 프로젝트(ML-Agents 릴리스 1과 통합)를 확인해 보시기 바랍니다. 추가적인 로봇 공학 및 연속 제어 환경을 구축하기 위해 ML-Agents 내에서 예시 환경이 추가될 예정입니다.

ML-Agents 릴리스 1 구현 방법

유니티는 Immersive Limit과 협력하여 ML-Agents: Hummingbirds를 제작했습니다. 이 과정은 Unity Learn 플랫폼을 통해 제공되며 실습, 코드 워크스루, 유용한 토론 등을 활용하여 ML-Agents 릴리스 1을 구현하는 방법을 소개합니다.

벌새의 신경망을 훈련하여 6개의 자유도와 복잡한 비행 경로를 이용해 꽃에 도달하도록 해보세요. 이 과정을 마치면 ML-Agents 릴리스 1을 활용하여 지능형 에이전트를 생성하는 방법과 나만의 Unity 게임 및 시뮬레이션 프로젝트에 지능형 에이전트를 통합하는 방법을 알 수 있게 됩니다.

이 과정은 5월 말에 제공될 예정입니다. 이 양식을 작성하면 알림을 받아보실 수 있습니다.

감사합니다!

Unity ML-Agents 팀 전체를 대표하여 여러 해 동안 유니티를 사랑해주신 여러분께 감사의 인사를 전합니다.

Unity ML-Agents 팀 구성원. (왼쪽에서 오른쪽으로, 위에서 아래로): Jason Bowman, Jeffrey Shih, Andrew Cohen, Yuan Gao, Chris Elion, Arthur Juliani, Ervin Teng, Chris Goy, Anupam Bhatnagar, Jonathan Harper, Vincent-Pierre Berges, Marwan Mattar. 사진에 없는 구성원: Hunter Henry.

다음 단계

ML-Agents를 사용하려면 GitHub 홈페이지를 방문하시기 바랍니다.

이번 릴리스가 제공하는 기능을 사용해 보고 많은 의견을 주시기 바랍니다. ML-Agents에 관한 의견, 일반적인 문제 또는 문의사항이 있는 경우 ML-Agents 포럼에 글을 남겨주시거나 이메일을 통해 알려주세요. 사용 과정에서 발생하는 버그는 ML-Agents GitHub 이슈 페이지에서 문의해 주시기 바랍니다.

게임에 머신러닝을 적용하는 흥미로운 분야에 도전하고 싶다면, 유니티 채용 공고를 통해 지원해주시기 바랍니다!

12 replies on “ML-Agents Unity 패키지 v1.0 출시”

Fantastic. I’ve been watching and using this project for a while now and I’m glad that it is finally achieving 1.0 status and even moreso, getting easier to install. This should greatly increase adoption!

Congratulations, I have only been following the project since 0.13, but it has been a cavalcade of upgrades. Good work getting the job done with the world shifting around you.

Hi Alsharefee – you can use ML-Agents today w/o Anaconda (either through a straight install with Python or using virtual envs). Let me know if that answers your question.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다