태그 보관물: DSSTNE

MXNet, DL Framework of Choice at AWS

지난 주 아마존 CTO 워너 보글스(Werner Vogels)는 AWS 에서 사용할 수 있는 딥러닝 프레임워크로 MXNet 을 추가했으며 앞으로 아마존이 MXNet 의 개발을 지원하겠다고 발표하였습니다. MXNet 은 카네기 멜론 대학과 워싱톤 대학이 시작한 이후 많은 대학과 회사들의 후원을 받고 있는 딥러닝 오픈소스 라이브러리입니다. 깃허브 활동에서도 크게 뒤쳐지지 않고 활발히 개발되고 있습니다. 특징으로는 파이썬, 줄리아(Julia), R, 매트랩(Matlab), 스칼라(Scala) 등 다양한 인터페이스를 지원하는 것이 눈에 띄입니다. 성능과 대용량 처리 부분에서도 크게 뒤지지 않는 듯 보입니다.

그럼 아마존의 데스트니(DSSTNE)는 어떻게 되는 것인지 모르겠습니다. 자체 라이브러리의 생태계를 만들어 가는 것이 역부족이라고 느낀 것일까요. 아니면 구글이 스탠포드 비전랩의  Fei Fei, Li 교수와 스냅챗의 Jia Li 를 구글 클라우드의 머신러닝 유닛을 이끌 수장으로 영입한 것이 영향을 미쳤을지도 모릅니다. 문제는 프레임워크가 아니고 클라우드 비즈니스라고 말이죠.

또 트위터가 2015년 웻랩(Whetlab)을 인수하면서 영입한 AI 연구자 다섯명이 트위터 코텍스(Twitter Cortex)를 떠난다는 소식이 있었습니다. 그 중에 업계에 비교적 잘 알려진 휴고 라로쉘(Hug Larochelle)은 구글로 자리를 옮겼습니다. 구글이 요슈아 벤지오(Yoshua Bengio) 교수가 있는 몬트리올 대학 MILA 랩에 3백만 달러(역대 최고라 하는군요)를 지원하기로 발표하면서 휴고 라로쉘이 구글의 몬트리올 랩의 리더가 되었습니다. 거기에 최근에는 OpenAI 가 클라우드 플랫폼으로 마이크로소프트의 애저(Azure)를 선택한다고 발표하니 아마존이 다급해진 것일까요. 여러모로 프레임워크로 경쟁하기 보다는 실리를 추구하는 쪽으로 선회한 것일지 모르겠습니다.

아마존의 AWS 에는 MXNet, Caffe, Tensorflow, Theano, Torch 그리고 CNTK 가 미리 설치되어 있는 딥러닝 AMI 가 있습니다. 그리고 사용자는 여전히 입맛에 맞는 프레임워크를 설치해서 사용할 수 있습니다. 하지만 앞으로 AWS RDS 처럼 관리형 딥러닝 서비스가 나온다면 MXNet 이 첫번째 후보가 될수 있을 것 같습니다.

Recommendations with DSSTNE

아마존이 공개한 딥러닝 라이브러리인 데스트니(DSSTNE)와 아파치 스파크(Spark)를 이용한 추천 시스템을 구성하는 방법에 대해 아마존 개발자 Kiuk Chung이 빅데이터 블로그에 ‘Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE‘ 글을 올렸습니다. 자세히 읽어보진 못했지만 추천 시스템 쪽에선 좋은 참고가 되지 않을까 생각합니다. 아마존이 라이브러리를 공개하고 나서 조금씩이라도 커뮤니티를 위해 알리는 노력을 하는 것 같아 반갑습니다.

AWS New Instance for AI

오늘 블룸버그에 아마존이 뉴럴 네트워크를 위한 새로운 인스턴스 타입을 테스트 중에 있다고 기사를 게재했습니다. 아마존의 입장에서는 계속 인기가 올라가고 있는 구글의 클라우드 플랫폼(GCP)에 대응하지 않을 수 없을 것 같습니다. 특히 구글의 클라우드 머신러닝 플랫폼이 이미 알파 서비스를 하고 있습니다. 하지만 아마존이 구글 클라우드 플랫폼이 제공하는 Vision API, Prediction API, Translate API 같은 API 서비스를 제공할 것 같지는 않습니다.

새로운 타입의 인스턴스는 최대 8개까지의 GPU가 탑재되었고 몇몇 고객을 대상으로 테스트 중에 있다고 합니다. 아마도 보다 최신의 Nvidia GPU가 탑재될 것으로 생각됩니다. 이 인스턴스에 아마존이 발표한 딥러닝 프레임워크인 데스트니(DSSTNE)만 운영할 수 있는 것은 아니고 당연히 텐서플로우를 포함한 다른 딥러닝 프레임워크도 사용할 수 있습니다. 새로운 인스턴스 타입에서 데스트니를 사용했을 때 성능상의 장점외에 다른 편리함을 줄 수 있다면 더욱 기대가 될 것 같습니다.

DSSTNE is Faster than TensorFlow

12pbkhxz60gfierig1slclg

아마존의 딥러닝 프레임워크 데스트니(DSSTNE)와 텐서플로우의 벤치마크 내용이 공개되었습니다. 이 벤치마크를 위한 코드는 데스트니 깃허브에서 확인하실 수 있습니다. 데스트니가 처음 공개되었을 때 온라인상에서 데스트니 프로젝트의 리더였었다며 여러 의견을 피력했었던 Scott Le Grand가 미디엄에 이번 벤치마킹과 관련된 을 올렸습니다.

AWS g2.8xlarge 인스턴스의 싱글 GPU에서 무비렌즈 20M 데이터셋을 이용하여 오토인코더를 위한 피드 포워드(Feed Forward) 뉴럴네트워크를 훈련시키는데 데스티가 텐서플로우보다 2배정도 빨랐다고 합니다. 위 그림에서 맨 왼쪽(TensorFlow Single GPU)과 왼쪽에서 두번째(DSSTNE Single GPU)의 노란색 막대 그래프입니다. 또한 두 패키지 모두 AWS에 있는 K520 GPU(2012년 출시) 보다 물리 서버에 장착한 M40 GPU(2015년 출시)에서 더 높은 성능을 내었지만 차이가 있었습니다. 텐서플로우는 M40을 사용해서 약 1.4배 정도 빨라 졌지만 데스트니는 3.4배 더 빨라 졌습니다.(푸른색 막대 그래프) 데스트니가 최신의 GPU의 성능을 더 잘 활용하고 있다고 볼 수 있습니다.

이런 성능의 차이가 나는 점은 텐서플로우가 GPU에 데이터를 로드시키는 데 더 많은 시간을 들이고 있기 때문이라고 합니다. 텐서플로우는 데이터를 numpy의 CSR 포맷과 유사한 형태로 관리하고 있고 데스트니는 파스칼 GPU가 제공하는 자동 메모리 관리 기능을 사용하고 있기 때문이라고 합니다. 데스트니의 또 하나의 장점은 모델 병렬화를 자동으로 해주는 것으로 여러개의 GPU에 연산을 자동으로 분배해 줍니다(데스트니 FAQ에서: DSSTNE can automatically distribute each computation across all available GPUs…). Quad GPU에서 데스트니는 Single GPU의 텐서플로우보다 무려 15배나 더 빠르다고 합니다. 텐서플로우에는 자동으로 모델을 병렬화해 주진 않기 때문에 이번 벤치마크에서는 직접 비교는 안되었지만 추후 텐서플로우 팀에서 이에 대응하는 실험을 할 수 있을 것 같습니다. 아마존이 데스트니를 공개한 것이 심심해서는 아니겠지만 생각보다 세게 나오네요.

Scott 는 Nvidia 출신으로 구글에 입사했으나 자기에게 GPU 코딩을 시키지 않아 금새 그만두고 아마존으로 이직했다고 합니다. 구글에 대한 시각이 그리 좋지는 않은 것 같습니다. TPU를 공개할 때 무어의 법칙의 3세대를 앞섰다고한 구글의 발언을 비꼬아 텐서플로우보다 데스트니를 사용하는게 3년은 더 무어의 법칙을 앞설 수 있을거라고 합니다 : )

Amazon의 딥러닝 라이브러리: DSSTNE

오늘 아마존에서 딥러닝 라이브러리 DSSTNE(Deep Scalable Sparse Tensor Network Engine)을 깃허브에 공개하였습니다. 아마존은 그동안 오픈소스는 잘 활용하지만 기여도 측면에서는 그닥 좋은 점수를 받지 않았는데요. 이번 공개는 의외로 놀라운 일인 것 같습니다. 아마도 구글의 텐서플로우의 영향 때문이라는게 지배적인 의견입니다.

일년전 아마존과 뉴욕타임즈와의 설전도 있었지만 진실여부를 가리는 것은 둘째로 하더라도 아마존의 내부 사정이 외부에 알려진 바가 적은 것은 사실인 것 같습니다. 하지만 이런 분위기가 조금 바뀐 걸까요?

실제 오랫동안 DSSTNE 프로젝트에 참여했던 전 아마존 직원이 해커뉴스에 간단하게 DSSTNE에 대한 소개를 했습니다. 이에 따르면 DSSTNE는 아직 CNN, RNN을 지원하지 않고 Fully Connected Layer만 가능합니다. CPU에서는 연산이 안되고 GPU에서만 가능합니다. 또 아직 맥이나 윈도우에서 설치하는 설명은 없습니다. 아마 현재는 Ubuntu나 비슷한 리눅스에서만 가능할 것 같습니다. 독특한 점은 뉴럴 네트워크 구성을 JSON 포맷으로 정의할 수 있는 것 입니다.

이 프로젝트는 약 2년전 부터 시작되었고 아마존의 제품 추천 시스템을 위한 것이라고 합니다. 즉 실제 사용하고 있는 소프트웨어를 공개한 것이죠. 특별히 듬성등성(Sparse)한 데이터를 위해 개발된 점이 다른 프레임워크와는 조금 차별화가 되는 것 같습니다. 실제 아마존 상품에 대한 고객의 평점 데이터는 듬성듬성하니까요. 소스는 C++로 개발되어 있고 아직 파이썬 인터페이스는 없습니다. 발음은 ‘destiny'(운명)으로 한다네요.

이러한 분위기라면 페이스북도 FBLearner Flow를 공개하지 않을까요? 내심 더 기대해 봅니다.