Amazon Web Services 한국 블로그
Gluon 소개 – AWS와 마이크로소프트가 만드는 딥러닝 라이브러리
오늘 AWS와 Microsoft는 새로운 오픈 소스 딥러닝 학습 인터페이스인 Gluon을 발표했습니다. Gluon은 개발자가 높은 성능을 유지히면서도, 쉽고 빠르게 기계 학습 모델을 만들 수 있습니다.
Gluon은 사전 구축한 최적화 된 신경망 구성 요소 모음을 사용하여, 기계 학습 모델을 정의하기 위한 명확하고 간결한 API를 제공합니다. 기계 학습 모델을 정의하고 조정할 수 있기 때문에 처음 사용하는 개발자는 본 인터페이스가 기존 코드에 비해 더욱 익숙할 것입니다. 숙련된 데이터 과학자 및 연구자들이 신속하게 프로토 타입을 제작하고 완전히 새로운 모델 아키텍처를 위해 동적 신경망 그래프를 활용하는 등 다양한 가치를 발휘할 것입니다.
Gluon은 Apache MXNet과 함께 곧 출시 될 Microsoft Cognitive Toolkit를 비롯 더 많은 프레임 워크에서 사용할 수 있습니다.
신경망 vs. 개발자
신경망을 이용한 기계 학습 ( ‘딥러닝’포함)에는 세 가지 주요 구성 요소가 있습니다. 즉, 데이터 학습, 신경망 모델 및 신경망을 학습시키는 알고리듬입니다. 여러분은 직선 그래프와 비슷한 방식으로 신경망을 생각할 수 있습니다. 일련의 연결된 레이어 및 가중치를 통해 출력 (예측)에 연결되는 입력 (데이터를 나타냄)을 가집니다. 학습 중에 알고리즘은 네트워크 출력의 오류를 기반으로 네트워크의 가중치를 조정합니다. 이것이 신경망을 학습하는 과정입니다. 이는 며칠이 걸릴 수있는 메모리 및 컴퓨팅이 필요한 과정입니다.
Caffe2, Cognitive Toolkit, TensorFlow 및 Apache MXNet과 같은 딥러닝 학습 프레임 워크는 부분적으로 ‘어떻게 이 프로세스를 가속화 할 수 있습니까?’라는 질문에 대한 대답입니다. 데이터베이스의 쿼리 최적화 프로그램처럼 네트워크와 알고리즘에 대해 알고있는 학습 엔진이 많을수록 학습 과정에서 더 많은 최적화가 가능합니다 (예를 들어, 무엇을 기반으로 그래프에서 다시 계산해야 하는지를 추측 할 수 있습니다. 영향을받지 않는 가중치는 무시할 수 있습니다.) 이들 프레임 워크는 병렬 처리를 제공하여 컴퓨팅 프로세스를 분산시키고, 전체 학습 시간을 단축시킵니다.
그러나 이러한 최적화를 달성하기 위해 대부분 프레임 워크에서는 개발자가 추가 작업을해야합니다. 즉, 네트워크 그래프의 정식 정의를 제공하고 그래프를 ‘정지’한 다음 가중치를 조정하는 과정입니다.
수백만 개가 연결된 크고 복잡 할 수있는 네트워크 정의는 일반적으로 수작업으로 작성해야합니다. 딥러닝 네트워크는 다루기 힘들뿐만 아니라 디버깅하기가 어려울 수 있으며 프로젝트간에 코드를 재사용하기도 어렵습니다.
이러한 복잡성은 (예제 학습을 마치고 실제 데이터를 학습해보려는) 초보자에게는 어려울 수 있으며, 경험 많은 연구자에게도 시간이 많이 걸리는 작업입니다. AWS에서는 신경망을 정의하고 학습하는 새롭고 유연하며 접근하기 쉬운 방법에 대해서 MXNet 내보에서 아이디어를 실험해 왔습니다. Microsoft 또한 오픈 소스인 MXNet 프로젝트의 공헌자로서 이러한 아이디어 중 일부에 관심이 있었습니다. 이를 토대로 이야기를 나누었을 때 우리는 비슷한 비전을 가지고 있음을 발견했습니다. 따라서, 새로운 기술을 사용하여 기계 학습의 복잡성을 줄이고 더 많은 개발자가 참여할 수 있는 프로젝트를 함께 시작하게 되었습니다.
Gluon 소개 : 동적 그래프, 신속한 반복, 확장 가능한 학습
Gluon에서 중요한 네 가지 핵심 요소를 소개합니다.
- 친숙한 API: 간단하고 명확하고 간결한 코드를 사용하여 Gluon 신경망을 정의 할 수 있습니다. 이는 개발자가 배우기 쉽고 네트워크 및 관련 가중치 점수 지정 기능을 기존 방식 보다 훨씬 이해하기 쉽도록 만들었습니다.
- 동적 네트워크: Gluon의 네트워크 정의는 동적입니다. 다른 모든 데이터 구조와 마찬가지로 유연합니다. 이는 학습 과정에서 연산 과정을 최적화 할 수 있도록 합니다. 동적 네트워크는 관리하기 쉽고, Gluon을 사용하면 개발자는 빠른 ‘심볼릭 표현’과 네트워크 및 알고리즘에 대한보다 친숙하고 역동적 인 ‘명령형 정의’ 사이를 쉽게 연동할 수 있습니다.
- 네트워크 정의 알고리듬: 모델과 학습 알고리즘이 훨씬 가까워졌습니다. 알고리즘 정의 및 학습 중에 네트워크를 동적으로 조정할 수 있습니다. 이는 개발자가 표준 프로그래밍 루프와 조건을 사용하여, 신경망을 만들 수 있음을 의미 할뿐만 아니라 이전에는 불가능했던 정교한 알고리즘과 모델을 정의 할 수 있습니다. 이전 보다 생성, 변경 및 디버그하는 것이 더 편리해졌습니다.
- 학습을 위한 고성능 운영 : 학습 속도를 높이면서도, 친숙하고 간결한 API 및 동적 그래프를 사용할 수 있습니다. 이것은 기계 학습의 커다란 발전입니다. 일부 프레임 워크에서 친숙한 API 또는 동적 그래프를 딥러닝에 적용하지만, 학습 과정에서 시간과 비용이 발생합니다. Gluon은 개발자가 특정 세부 사항을 알거나 컴파일러 최적화를 수동으로 수용 할 필요없이 간결한 API를 정식 정의와 효율적으로 혼합 할 수 있습니다.
AWS의 팀과 Microsoft의 공동 협력팀은 Gluon을 통해 이러한 개선 사항을 개발자에게 제공하게 된 것을 기쁘게 생각하며, 이미 많은 딥러닝 개발자와 연구자들로부터 상당히 호응을 얻고 있습니다.
Gluon 시작하기
Gluon은 Apache MXNet에서 현재 사용할 수 있으며 Microsoft Cognitive Toolkit은 향후 출시 될 예정입니다. 프런트 엔드 인터페이스와 저수준 API 사양을 게시하여 시간이 많이 걸리는 다른 프레임 워크에 포함될 수 있도록합니다.
오늘 글 루언을 시작할 수 있습니다. 단 한 번의 클릭으로 AWS Deep Learning AMI를 시작하여, 이미 제공 중인 50 가지 주피터 노트북 예제 중 하나를 실행해 보세요. 기계 학습 프레임 워크에 참여한 분이라면, GitHub의 소스 코드 공헌에도 참여해주시면 감사하겠습니다.
-Dr. Matt Wood
이 글은 Introducing Gluon: a new library for machine learning from AWS and Microsoft 의 한국어 번역입니다.