태그 보관물: Torch

fairseq: New SOTA of NMT

18158912_821511514668337_8758096610476425216_n

페이스북의 FAIR팀에서 블로그를 통해 기계번역에 대한 새 모델 fairseq를 공개하였습니다. 기계번역 분야에서는 리커런트 뉴럴 네트워크Recurrent Neural Network가 정석처럼 사용되어 왔습니다만 최근에 콘볼루션 뉴럴 네트워크Convolution Neural Network를 시퀀스 처리에도 사용되고 있습니다. fairseq는 콘볼루션 뉴럴 네트워크와 어텐션 메카니즘을 사용해 기계 번역에서 최고 성능state-of-the-art을 갱신했다고 합니다. 블로그에서 콘볼루션이 단어 한개씩 처리하는 RNN 보다 훨씬 효율적으로 GPU를 사용할 수 있고 전체 문맥을 한꺼번에 조망하는 것이 사람이 번역하는 그것과 비슷하다고 주장합니다. 최근 구글의 NMT 결과와 비교했을 때 더 성능이 높으면서도 NVidia K40 GPU에서 무려 9.3배가 빠르고 GTX-1080ti 에서는 21배나 빠르다고 합니다.

fairseq의 토치 소스는 깃허브에 공개되어 있으며 영어-프랑스어, 영어-독일어, 영어-루마니아어에 대해서는 미리 학습시킨 모델을 제공합니다. 콘볼루션이 주류가 된다면 NLP 책들의 수정이 불가피 하겠네요. 🙂

OpenNMT: Open Source Neural Machine Translation

simple-attn

하버드 NLP 그룹과 하버드 PhD 학생인 Yoon Kim이 만든 오픈소스 신경망 기계번역 OpenNMT 가 공개되었습니다. OpenNMT 는 토치로 구현되어 깃허브에 공개되어 있으며 개발에 사용된 주요한 페이퍼들이 홈페이지에 자세히 나와 있습니다. 개인이 학습시키기에는 조금 무리가 있을 수 있으나 학습된 모델도 공개할 것이라 하니 기대를 해 봅니다. OpenNMT 개발에 번역 소프트웨어 회사인 SYSTRAN도 많은 참여를 했다고 합니다. OpenNMT의 데모를 SYSTRAN 데모 페이지에서 직접 확인해 볼 수 있습니다. 구글, 네이버 모두 신경망 기계번역을 도입했는데요. 오늘자 CNN 뉴스의 일부를 세 번역기에 모두 적용해 보았습니다. 네이버 번역기 글자수가 제한되어 있어 긴 문장을 적용하진 못했습니다. 결과는 OpenNMT 가 훨씬 자연스러운 번역을 만들어 주었습니다!

OpenNMT
opennmt

Google Translate
google_translate

Naver NMT
naverlabs_nmt

torch-twrl: RL for Torch

resultsvideo

트위터 Cortex 팀에서 토치(Torch)를 이용한 강화학습 프레임워크인 torch-twrl를 오픈소스로 공개한다고 발표하였습니다. torch-twrl은 OpenAI Gym과도 함께 쓸 수 있으며 소스는 깃허브에 공개되어 있습니다. 토치를 사용한 강화학습 프레임워크로는 rltorch가 이미 있지만 torch-twrl이 외부 라이브러리 의존성이 적다고 합니다. 토치와 관련된 뉴스가 페이스북이 아니고 트위터에서 들려왔네요. 어쨋든 토치 커뮤니티에는 반가운 소식입니다.

페이스북의 GPU 파트너쉽 추가

14106250_330551667287531_197901342_n

출처: 페이스북 리서치 블로그

페이스북이 오늘 리서치 블로그를 통해 GPU 파트너쉽에 유럽 9개국 15개 연구기관에 22개의 GPU 서버를 제공한다고 밝혔습니다. 올해 초에 발표한 것에 이어 두번째 입니다. 페이스북은 그동안 여러번 GPU 서버 ‘Big Sur’에 대한 소개를 했었고 미디어에게 데이터센터를 공개하기도 했었습니다. 어디에도 정확하게 나와 있지는 않지만 온라인 매체의 글들을 살펴 보았을 때 이 서버는 토치(Torch)로만 사용이 가능할 것으로 추측됩니다. 혹시 연구기관들이 토치 생태계 안에서 연구를 진행하게끔 하려고 GPU 서버를 제공하는 걸까요? 이건 너무 무리한 가정일까요?

Facebook Open Source Image Recognition Tools

14129665_289426244750193_980137424_n

출처: 페이스북 리서치 블로그

오늘 페이스북이 리서치 블로그를 통해 이미지에서 오브젝트를 구별하는 프레임워크인 딥마스크(DeepMask)와 샵마스크(SharpMask), 그리고 멀티패스넷(MultiPathNet)을 공개하였습니다. 페이스북에 얀 리쿤(Yann LeCun) 박사가 있는 것으로도 짐작할 수 있지만 콘볼루션을 사용하는 이미지 인식 부분에서는 많은 성과를 가지고 있습니다. 그동안 공개되었던 자료 중에 얀 리쿤 박사가 직접 시연한 이미지 인식에 대한 데모도 있었고 얼마전에는 시각장애자를 위해 이미지를 읽어주는 데모를 공개하기도 하였습니다. 오늘 발표는 그간 발표한 페이퍼와 데모들의 뒤에 있는 기술을 설명하고 토치(Torch)로 된 소스를 공개한 것입니다.

관련된 페이퍼를 읽어보진 못했지만 블로그의 내용을 바탕으로 정리했습니다. 한줄 요약하면 딥마스크와 샵마스크로 이미지 안의 오브젝트를 구분해 내고 멀티패스넷으로 오브젝트의 타입을 가려낸다고 합니다.

딥마스크는 피드 포워드(feed forward) 네트워크로 이미지를 스캔하면서(아마도 콘볼루션으로) 오브젝트가 담겨있는지 또 오브젝트가 스캔 영역의 중앙에 위치하는 지를 찾습니다. 콘볼루션의 특성상 딥마스크의 하위 레이어에서 상위 레이어로 갈 수록 오브젝트들의 세부적인 차이에는 둔감해 지지만 정확한 경계를 잡아내는 데는 어려움이 있습니다. 샵마스크는 딥마스크의 이런 단점을 보완하기 위해 딥마스크에서 만들어낸 하위 레이어의 특성맵을 다시 들여다 보는 과정을 가집니다. 하나의 네트워크에서 생성된 결과물을 재사용하므로 이런 방식은 효율적입니다.

물론 딥마스크나 샵마스크는 구분해 낸 이미지가 무엇인지 모릅니다. 이런 역할을 하는 것은 멀티패스넷으로 RCNN(Region-CNN)의 두번째 스텝에 해당하며 오브젝트의 스케일이나 차이를 구분해 내도록 개선하였습니다. RCNN의 첫번째 스텝, 즉 이미지를 찾아내는 것은 앞서 말한 딥마스크와 샵마스크가 담당하게 됩니다. 전체 세단계를 요약하면 딥마스크로 오브젝트를 찾아내고 샵마스크로 경계를 특정한 후 멀티패스넷으로 어떤 오브젝트인지 알아내게 됩니다.

14129678_1295994390440912_1435692944_n

출처: 페이스북 리서치 블로그

아직 이 기술은 완벽하지는 않습니다. 하지만 꽤 뛰어난 성능을 발휘하고 있으며 페이스북에서 시각장애자에게 친구들의 사진의 내용을 읽어주는 것을 구현시킬 수 있을 것입니다. 또한 가상현실을 포함한 다양한 어플리케이션에서 응용될 수 있습니다. 실제로 동영상에서 이미지를 구분해 내는 데모를 만들었습니다. 페이스북은 앞으로도 계속 기술을 발전시키고 커뮤니티에 공개하겠습니다!

딥마스크와 샵마스크의 토치 구현은 여기에서 확인하실 수 있으며 멀티패스넷의 토치 구현은 여기에서 보실 수 있습니다. 딥마스크의 페이퍼와 샵마스크의 페이퍼, 멀티패스넷의 페이퍼도 보실 수 있습니다.

fastText도 그렇지만 페이스북이 ML 커뮤니티를 위해 크게 손을 흔드는 것 같네요. 다양성이 존재하는 것은 언제든지 바람직합니다. 토치 버전이 공개되었으니 텐서플로우로 된 구현도 나오길 기대합니다.

(업데이트) 샵마스크의 데모가 공개되어 있습니다. 이 페이지에서 동그란 원들에 마우스를 호버하면 샵마스크가 이미지에서 찾은 오브젝트를 구분하여 확인할 수 있습니다.

hctorch is funded by AMD

페이스북이 많이 사용하는 토치(torch) 프레임워크는 CUDA를 지원하는 cutorch, cunn 와 서드파티로 OpenCL을 지원하는 cltorch, clnn 등이 있습니다. 여기에 AMD의 HCC 시스템을 지원하기 위한 버전인 hctorch, hcnn를 위해 AMD가 투자를 했다고 합니다. 공식 레파지토리는 멀티코어웨어(Multicoreware)의 비트버킷 레파지토리에 있고 AMD의 펀딩은 멀티코어웨어가 이 프로젝트를 진행시키는 데 사용된 것으로 추측됩니다.

재미있는 점은  이 프로젝트는 원래 토치의 C++ AMP 지원하기 위한 것이 목표였는데 작년 11월 30일에 AMD HCC를 지원하는 것으로 README 파일이 변경되었습니다. 구글이 텐서플로우를 발표한 날이 11월 9일이었는데 이런 변화가 우연이었는지 모르겠습니다.

Torchnet: dl framework wrapper

오늘 페이스북이 ICML 2016에 맞추어 토치(Torch)를 기반으로 한 딥러닝 프레임워크의 래퍼(wrapper)인 토치넷(Torchnet)을 깃허브 레파지토리페이퍼와 함께 공개했습니다. 토치넷은 루아로 작성되었으며 좀 더 쉽고 빠르게 뉴럴 네트워크를 구축하기 위해 머신러닝을 위한 코드와 로직을 재사용할 수 있도록 만들어 줍니다. 토치넷의 역할은 씨아노(Theano)의 블럭(blocks)이나 퓨얼(fuel)과 유사하다고 합니다. 재미있는 점은 토치넷의 깃허브 레파지토리가 ‘github.com/torch/’ 에 있지 않고 ‘github.com/torchnet/’ 에 위치한다는 점 입니다. 페이스북은 토치넷이 토치를 넘어서 자체적인 생태계를 구축하길 원하는 것 같습니다. 페이퍼에도 토치넷은 토치 뿐만 아니라 텐서플로우(TensorFlow)나 카페(Caffe)도 지원할 수 있다고 언급하고 있습니다.

딥러닝 패키지 비교

comparison_of_deep_learning_package

위키피디아에 딥러닝 패키지를 비교하는 페이지가 있어 소개해 드립니다. 현재 비교하고 있는 소프트웨어는 Caffe, CNTK, Deeplearning4j, MXNet, Neural Designer, OpenNN, SINGA, SystemML, TensorFlow, Theano, Torch 입니다. 이외에도 더 많은 패키지들이 있지만 점차 추가되지 않을까 합니다. 대표적인 툴들을 한 눈에 볼수 있어 참고자료로 사용하시면 좋을 것 같습니다.

Deep Q Learning with Gym and TensorFlow

model

텐서플로우와 OpenAI에서 공개한 강화학습 도구인 Gym을 이용한 Q Learning 구현물이 깃허브에 공개되었습니다. 이 코드는 2015년 네이처지에 실린 구글 딥마인드(DeepMind) 팀의 ‘Human-Level Control through Deep Reinforcement Learning‘ 논문을 텐서플로우와 Gym으로 구현한 것입니다. 결과 화면은 흥미롭습니다.

best

원 논문은 구현은 토치로 개발되었습니다. 원 논문의 소스는 여기서 다운받을 수 있습니다.

(추가) 이 코드는 쿠키런 게임을 개발한 데브시스터즈에서 만들었습니다. 강화학습 분야는 역시 게임회사에서 관심이 많은 것 같습니다.

DeepMind moves to TensorFlow

오늘 구글은 블로그를 통해 딥마인드(Deepmind.com)가 토치(Torch)에서 텐서플로우(TensorFlow)로 연구, 개발 프레임워크를 교체한다고 발표하였습니니다.

토치는 그동안 딥마인드와 페이스북이 사용하면서 코드 기여도 상당했었지만 딥마인드가 토치를 더이상 사용하지 않게 됨으로써 토치 진영에는 페이스북과 트위터가 남게 되었습니다. 어찌보면 예상된 수순이었을지 모르겠습니다. 이세돌과 알파고가 바둑대전을 할 때 제프딘이 언급한 것 처럼 이미 알파고에 텐서플로우가 일정 부분 사용되고 있었기 때문입니다.

며칠 전 선다 피차이(Sundar Pichai) 구글 CEO가 보낸 창업자의 편지(Founder’s letter)에서 앞으로 세상은 모바일 퍼스트(mobile first)에서 AI 퍼스트(AI first)로 변할 것이라고 말하고 있습니다.

“We will move from mobile first to an AI first world.”

이런 비전의 첫 교두보인 텐서플로우가 무엇보다도 널리 쓰이길 바라는 것이 구글에서는 당연할 것입니다. 딥마인드는 지난 몇 달간 기존의 연구를 텐서플로우로 변경하면서 테스트를 해왔고 이제 앞으로 딥마인드에서 수행하는 모든 연구는 텐서플로우를 이용할 것이라고 합니다.

물론 텐서플로우를 PR 하는 것이라고 비아냥 거리는 냉소도 인터넷에 돌아다니긴 합니다.