Amazon Linux에서 Apache MXNet 시작하기
Ubuntu에서 Apache MXNet 시작하기

Apache MXNet은 CNN(Convolutional Neural Network)과 LSTM(Long Short-Term Memory Network)을 비롯하여 최첨단 딥 모델을 지원하는 유연하고 군더더기가 없으며 확장성이 뛰어난 딥 러닝 프레임워크입니다. 이 프레임워크는 학계에 기반을 두고 있으며 주요 대학 몇 곳의 연구원들의 협업과 노력을 통해 탄생하였습니다. 컴퓨터 비전, 음성, 언어 처리 및 이해, 생성 모델, 동시 신경망, 순환 신경망에서 탁월한 성능을 발휘하도록 설계되었습니다.

MXNet을 사용하면 방대한 클라우드 인프라에서 모바일 및 커넥티드 디바이스까지 다양한 사용 사례에서 네트워크를 정의, 훈련 및 배포할 수 있습니다. 다수의 일반 언어를 지원하고 명령형 및 기호 프로그래밍 구조를 사용할 수 있는 기능을 지원하는 매우 유연한 환경을 제공합니다. MXNet은 또한 매우 가볍습니다. 따라서 여러 GPU와 여러 시스템에 걸쳐 확장할 수 있으므로 클라우드에서 대규모 데이터 세트를 사용하여 훈련을 수행할 때 매우 효과적입니다.

이러한 이점이 Amazon Web Services가 딥 러닝 프레임워크로 Apache MXNet을 선택한 이유입니다. AWS Deep Learning AMI를 사용하면 AWS에서 Apache MXNet을 쉽게 시작할 수 있으며, 이 AMI는 Amazon Linux용과 Ubuntu용으로 제공됩니다.

Apache MXNet 프로젝트에 참여하기

GitHub에 참여하기

GitHub 프로젝트 페이지에서 샘플 코드, 노트 및 자습서 콘텐츠를 확인하십시오.

GitHub-Mark-120px-plus
간편성

프로그래밍 기능

네트워크 정의를 간소화하고 익숙한 언어를 사용

내구성

이동성

모델이 다양한 디바이스와 플랫폼에서 실행될 수 있으려며 메모리의 효율적 사용이 필요

확장 가능

 확장성

큰 규모의 정교한 모델을 신속하게 훈련하기 필요한 여러 GPU 및 호스트로 확장하는 기능

Apache MXNet에서는 명령형 언어와 기호 언어를 조합하여 사용할 수 있습니다. 실제로 "MXNet"이라는 이름은 "조합된 네트워크(mixed networks)"에서 유래되었습니다. 즉, 기호 실행기의 최적화와 더불어 반복 루프나 파라미터 업데이트와 같은 명령형 언어의 유연한 기능을 통해 네트워크 계층을 조작할 수 있습니다. 이러한 조합된 특성으로 인해 MXNet은 복잡한 다계층적 딥 러닝 모델에서 좀 더 쉽게 작동할 수 있는 고유한 기능 세트를 제공합니다. 

import mxnet as mx

a = mx.nd.zeros((100, 50))

b = mx.nd.ones((100, 50))

c = a + b

c += 1

print(c)

 

import mxnet as mx

net = mx.symbol.Variable('data')

net = mx.symbol.FullyConnected(data=net, num_hidden=128)

net = mx.symbol.SoftmaxOutput(data=net)

texec = mx.module.Module(net)

texec.forward(data=c)

texec.backward()

또한, MXNet은 C++, JavaScript, Python, r, Matlab, Julia, Scala 및 Go를 비롯하여 프레임워크의 프런트 엔드에서 다양한 프로그래밍 언어 집합을 지원합니다. 따라서 이미 익숙한 언어를 모두 사용하여 즉시 딥 러닝을 실행하기 시작할 수 있습니다. 백엔드에서는 코드가 언제나 C++로 컴파일되므로 프런트 엔드에서 어떤 언어를 사용하든 일관된 성능을 얻을 수 있습니다. 

c-plus-plus-logo-100px
javascript-logo-100px
python-logo-100px
r-logo-100px
Matlab
julia-logo-100px
scala-logo-100px
go-logo-100px

우리의 일상에서 인공 지능 애플리케이션이 점점 더 많은 부분을 차지함에 따라 다양한 디바이스에서 이를 배포할 수 있는 기능이 더욱 중요해지고 있습니다. 스토리지가 중요하고 AI가 엣지의 모바일과 커넥티드 디바이스에 배포되는 경우에는 특히 그러합니다.

Apache MXNet 모델은 아주 적은 양의 메모리를 사용합니다. 예를 들어 1천 계층 네트워크에 필요한 스토리지는 4GB 미만입니다. 이 프레임워크는 또한 플랫폼 간에 이동이 가능합니다. 핵심 라이브러리(모든 종속성 포함)를 단일 C++ 소스 파일에 담을 수 있으며 iOS용과 Android용으로 컴파일할 수 있습니다. 그뿐만 아니라 JavaScript를 사용하면 브라우저 내에서도 실행할 수 있습니다. 이러한 유연성은 모델을 아주 다양한 사용 사례 집합에 배포하여 가장 광범위한 사용자 집합에 도달할 수 있습니다. 

portability-cloud

클라우드

portability-mobile

모바일

portability-browser

브라우저

portability-devices

커넥티드 디바이스

Apache MXNet은 데이터 종속성을 일련의 코드로 구문 분석하고 선언형 및 명령형 작업 모두 즉시 자동으로 병렬화하는 동적인 종속성 스케줄러를 기반으로 구축됩니다. 그 외에 그래프 최적화 계층은 빠른 선언형 실행과 효율적인 메모리를 지원합니다.

이러한 자동 병렬화를 통해 MXNet은 매우 효율적으로 확장됩니다. 예를 들어 MXNet의 효율성을 벤치마크하도록 계속 증가하는 EC2 P2 GPU 지원 인스턴스를 사용하여 인기 있는 이미지 분석 알고리즘인 Inception v3를 훈련했습니다.

mxnet-scale-story-1

빨간색 선은 GPU를 두 배로 늘리면 속도가 두 배로 빨라지는 완벽한 효율성을 나타냅니다. MXNet의 처리량은 사용된 GPU 수와 같은 거의 비율로 증가했습니다. 16GPU의 단일 인스턴스에서 Apache MXNet은 91%의 효율성을 달성했습니다.

하지만 대규모 네트워크의 경우 P2 인스턴스 클러스터로 확장하는 것이 좋을 수 있습니다. 이 시나리오에서 같은 벤치마크를 실행하면 GPU 수가 폭발적으로 증가할 때 효율성은 아주 조금 감소하는 것을 볼 수 있습니다.

mxnet-scale-story-2

하지만 AWS에서 하는 이야기를 그대로 믿을 필요는 없습니다. 클라우드의 이점 중 하나는 손쉽게 자체 코드를 사용해 직접 테스트할 수 있다는 것입니다. AWS는 누구나 사용할 수 있도록 GitHub에서 벤치마크를 제공하고 있습니다. AWS에서는 여러분이 작동 방식을 살펴보고 직접 실행하여 자체 결과를 확인해보길 권장합니다. 또한, AWS CloudFormation 템플릿을 사용하면 필요한 용량을 신속하게 구동해볼 수 있습니다. 

쉽게 AWS에서 Apache MXNet 사용을 시작할 수 있습니다. AWS Marketplace로 이동하여 AWS Deep Learning AMI를 시작하면 됩니다.

AMI는 MXNet의 안정적인 최신 빌드와 그 외 여러 인기 있는 딥 러닝 프레임워크 및 도구를 무료로 제공합니다. 사용한 EC2 시간에 대해서만 비용을 지불하면 됩니다.