태그 보관물: Facebook

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 책들의 수정이 불가피 하겠네요. 🙂

Caffe2: Mobile first DL Framework

스크린샷 2017-04-19 오후 4.57.55

페이스북이 딥러닝 프레임워크 카페(Caffe)의 새로운 포크인 카페2(Caffe2)를 오늘 공개하였습니다. 카페2는 페이스북과 NVidia를 비롯해 많은 회사들과 협력한 결과라고 합니다. 특별히 NVidia에서도 블로그를 통해 카페2 소식을 알렸습니다. 카페를 개발한 양칭 지아Yangqing Jia가 버클리를 나와서 구글 브레인으로 갔었는데 어느새 페이스북으로 옮겼군요. 이미 작년에 카페2의 개발 소식이 흘러나왔던 것 같습니다. 카페2는 파이토치와는 다르게 모바일과 대용량 스케일의 상용 제품을 위한 프레임워크로 촛점을 맞추고 있다고 합니다. 그렇다고 파이토치와 명확하게 선을 그을 수는 없지만, 파이토치 보다는 더 성능과 다양한 디바이스 포팅에 중점을 두고 있습니다. 파이토치는 연구자들이 다양한 네트워크를 실험할 수 있는 높은 자유도가 장점입니다. 하지만 카페2와 파이토치의 저수준 라이브러리들은 앞으로 계속 머지되거나 아이디어를 공유할 것 같습니다. 바이두가 텐서플로우의 패치를 보냈는데 구글이 이를 거부했다는 소식에서 부터 구글이 사용하는 텐서플로우와 오픈소스 텐서플로우에는 차이가 있다는 것이 카페2와 함께 레딧해커뉴스에서 회자되고 있습니다.

현재 카페2가 안정화된 상태는 아닙니다. 양칭에 의하면 페이스북이 먼저 개밥먹기를 하고 있답니다. 파이썬 바이너리 패키지가 준비되어 있지 않아 설치도 번거롭습니다. 하지만 카페의 Model zoo를 이용할 수 있다는 것과 모바일 퍼스트 정책은 많은 사람들의 관심을 끌것 같습니다. OpenCL와 iOS의 Metal을 지원하려고 준비 중에 있다고 합니다.

누가 Caffe가 죽었다고 했던가요? 🙂

(업데이트) 구글 브레인의 리더 Rajat Monga 가 바로 댓글로 의견을 냈네요. 구글이 텐서플로우에 대해 감추고 있는 것은 없답니다.

또 페이스북에서 F8 행상 이후에 몇몇 대학 교수를 초빙해서 카페2에 대한 워크샵을 열 예정이라고 밝혔습니다. 이미 많은 대학의 딥러닝 커리큘럼이 텐서플로우로 가고 있어서 더 늦기전에 변화가 필요하다고 생각했을 것 같습니다.

Visdom: Visualization for ML & DL

visidom2

페이스북에서 Torch, PyTorch, NumPy 를 위한 시각화 도구인 Visdom을 오픈소스로 공개했습니다. 자연스럽게 이는 텐서플로우의 텐서보드TensorBoard의 대항마일 것으로 여겨집니다. 비즈돔은 토치용 시각화 서버인 display에 영감을 받았다고 합니다. 비즈돔은 웹브라우저로 사용할 수 있으며 웹서버는 오래전 페이스북이 인수한 프렌드피드FriendFeed가 만든 토네이도Tornado를 사용하고 있고 실제적인 그래픽 처리는 plotly.js를 이용합니다. API 를 봐서는 계산 그래프를 시각화시키는 도구는 아닌 것으로 보입니다. 하지만 앞으로 어떤 기능이 추가될지 기대가 됩니다.

Big Basin: Facebook New AI Hardware

storagereview-facebook-big-basin_3

페이스북이 2015년 말에 발표한 딥러닝 서버 Big Sur의 업그레이드 버전 격인 Big Basin을 발표하였습니다. 엔비디아의 DGX-1 과 비슷하게 P100 GPU 가 8개가 들어간다고 합니다. ResNet-50으로 테스트했을 때 Big Sur 보다 처리량이 두배 늘었다고 합니다. 하드웨어 스펙에 관한 자세한 내용은 오픈 컴퓨트 프로젝트에 공개할 예정입니다. 일단 사진만 봐도 멋있네요. 엔비디아의 DGX-1 도 부럽지만 텐서플로우 도커의 버전업이 느리다는 소문이 있다는 건 함정입니다.

FAISS, Differentiable Tree, gcForest

페이스북에서 대용량 벡터의 유사도 검색을 위한 오픈소스 faiss를 깃허브에 공개했습니다. faiss 는 일종의 성분 분해 알고리즘인 Product Quantization(PQ) 알고리즘을 GPU를 대상으로 구현하였고 ‘Optimized Product Quantization for Approximate Nearest Neighbor Search‘ 페이퍼를 바탕으로 하고 있습니다. SIFT 데이터셋을 사용하여 데이터가 10만개일 때는 쿼리 속도가 20µs로 종전의 최고 성능과 유사하지만 데이터가 10억개일 때는 17.7µs로 종전 최고 성능보다 8배 정도 빠르다고 합니다. 이 프레임워크는 C++로 작성되었으며 파이썬 인터페이스를 가지고 있습니다. 벡터로 표현된 어떤 대상에 대해서도 GPU를 사용한 빠른 검색이 가능합니다. faiss 코드 구현을 자세히 설명한 페이퍼는 ‘Billion-scale similarity search with GPUs‘(1702.08734)입니다. 이러다 GPU를 사용하는 데이터베이스도 나올지 모르겠네요.

공교롭게도 이와 거의 동시에 딥마인드(DeepMind)팀에서 또 다른 k-NN 알고리즘에 대한 페이퍼 ‘Learning Deep Nearest Neighbor Representations Using Differentiable Boundary Trees‘(1702.08833) 공개했습니다. 최근에 발표된 boundary forest 알고리즘을 응용하여 트리 노드의 판단을 위해 뉴럴 네트워크를 이용합니다. 바운더리 트리 각 노드에서 데이터를 새로운 표현으로 변환하여 예측에 활용하는데 이 변환함수를 뉴럴 네트워크를 사용하여 학습시킵니다. MNIST 데이터로 1.85% 에러율을 얻었습니다.

그리고 난징 대학교에서 공개한 다른 페이퍼 ‘Deep Forest: Towards An Alternative to Deep Neural Networks‘(1702.08835)도 트리 모델에 관한 것으로 많은 관심을 받고 있습니다. 이 페이퍼에서는 gcForest 라는 새로운 앙상블 방법을 뉴럴 네트워크 대안으로 제시하고 있습니다. 아마도 이렇게 트리 관련 이슈가 동시에 나오는 것이 우연은 아닐거라고 생각됩니다. 트리모델은 분석하기도 좋고 비교적 직관적이므로 앞으로도 뉴럴 네트워크 등과 혼합된 형태가 많이 연구될 것 같습니다.

(업데이트) 난징 대학의 페이퍼에 대해 논란이 많네요. 실험결과가 의심스럽다, 코드가 공개되어 있지 않다, 그리고 뉴럴 네트워크와 트리모델 중 어떤게 더 나은지 실랑이도 생기네요. 레딧해커뉴스 포스트를 참고하세요.

Partnership on AI

partnership-on-ai

구글, 딥마인드, 페이스북, 마이크로소프트, 아마존, IBM 6개 회사가 ‘Partnership on AI‘란 단체를 발족시켰습니다. 각 회사에서 한명씩 대표(board)를 구성하게 되며 AI 연구와 윤리, 표준, 리포트, 컨퍼런스 등의 분야에 적극적인 역할을 것으로 보입니다. 공익단체라는 점에서 OpenAI를 의식하여 연합한 것인지는 모르겠습니다. 바이두(Baidu)는 끼일만도 한데 빠진 것과 딥마인드는 구글의 자회사이지만 공룡들과 어깨를 나란히 하고 있는 것이 눈에 띄입니다.

(업데이트) Partnership on AI에 대한 관심이 뜨겁습니다. 사람들은 바이두외에 애플, 트위터, 인텔 등도 빠져 있는 것을 궁금해 하고 있는 것 같습니다. 특히 OpenAI가 빠져있어서 이를 두고 미묘한 대립 기류가 있는 것은 아닌지 다양한 해석이 있습니다. OpenAI는 아마 초기 멤버로 초청받지 못한 아쉬움이 있는 듯 트위터를 통해 향후 참여를 희망한다고 이야기 했고 딥마인드측 대표인 무스타파 설리만(Mustafa Suleyman)이 이에 화답했습니다. Partnership on AI의 발표 자료를 보면 OpenAI 같은 비영리 기관도 곧 참여가 이루어 질 것으로 보입니다. 이들이 데이터 공유를 위해 뭉쳤는지 인류를 위해 뭉쳤는지는 모르겠지만 만약 OpenAI가 없었다면 기대하기 어려운 일이었지 않을까요?

(2017-01-30) Partnership on AI에 애플과 OpenAI가 합류했다는 소식입니다. 애플은 창립 멤버로 OpenAI는 이사회 구성원으로 합류했습니다. 바이두같은 회사가 합류할 가능성은 높아 보이지는 않습니다만 미국안의 파트너쉽이 되어 버린 것 같습니다.

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

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

fastText: Facebook’s library for fast text representation and classification

페이스북이 텍스트의 벡터 표현과 분류를 위한 라이브러리 fastText를 깃허브에 공개했습니다. 이 라이브러리는 페이스북의 시스템들과 연관되어 있지 않아 독립적으로 다운받아 사용할 수 있습니다. C++11 표준으로 개발되어 있어서 비교적 최신의 C 컴파일러가 있어야 빌드할 수 있습니다. 자세한 문서는 없지만 깃허브 README 파일에 프로그램 옵션에 대한 설명과 모델을 만들어 파일로 저장하고 이를 재 사용하여 분류를 할 수 있는 간단한 예가 나와 있습니다. 다만 소스코드에 주석이 하나도 없네요. 아마도 오픈소스로 공개하면서 문제가 될 만한 주석이 있기에 제거하고 올린 것으로 추측됩니다.

이 라이브러리에 관련된 페이퍼는 벡터 표현과 분류에 대해 지난 달에 각각 공개되었습니다.

(업데이트) fastText 의 파이썬 래퍼 fastText.py 가 개발되고 있습니다. 아직은 워드 벡터 표현만 제공되지만 텍스트 분류는 작업 중이라 이도 곧 사용할 수 있을 것 같습니다. 아무래도 C++ 코드를 직접 컴파일해서 사용하는 것 보다는 파이썬 모듈이 사용하기 편리할 것 같네요.

DarkForest, the Facebook Go engine

figure

처: 페이스북 다크포레스트 깃허브

페이스북이 ICLR 2016에서 발표한 인공지능 바둑 엔진인 다크포레스트(DarkForest)를 깃허브에 공개하였습니다. 다크포레스트는 토치로 개발되었으며 알파고와 유사하게 딥 콘볼루션 뉴럴 네트워크와 몬테 카를로 트리 검색 방식을 함께 사용합니다. 다크포레스트는 올해 초에 네이처지를 통해 발표한 것으로 강화학습을 사용한 구글의 알파고보다는 크게 뒤지는 것으로 보입니다. 얀 리쿤(Yann LeCun) 교수의 페이스북 글을 참고하면 다크포레스트는 대략 아마 5단의 실력을 가지고 있어서 프로 5단 정도의 실력으로 평가되는 알파고와는 차이가 많이 난다고 합니다. 얼마전 이세돌과의 대국을 봐서는 알파고의 수준은 프로 5단 이상으로 보입니다.

다크포레스트의 페이퍼는 여기서 받으실 수 있으며 ICLR에 올려진 포스터는 여기서 보실 수 있습니다.