월간 보관물: 2016 10월

Keras.js: run dl model with GPU

keras-js

케라스(Keras)로 훈련된 모델을 브라우저에서 실행시킬 수 있는 자바스크립트 라이브러리 Keras.js 가 공개되었습니다. 케라스로 만든 모델을 json 으로 출력하고 훈련된 파라메타는 HDF5로 저장합니다. 그런 후에 Keras.js 에서 제공하는 인코더로 훈련된 파라메타를 자바스크립트가 읽을 수 있도록 직렬화하여 모델 json과 함께 브라우저로 로드하여 사용합니다. Keras.js 는 WebGL 자바스크립트 라이브러인 weblas 를 사용하고 있어서 브라우저에서 GPU 가속을 사용할 수 있습니다. 기본으로 제공되는 모델 파라메타는 MNIST, ResNet50, Inception V3 등이 있습니다.

콘볼루션 뉴럴 네트워크를 훈련시킬 수 있는 자바스크립트 라이브러리로는 OpenAI 안드레이 카패시(Andrej Karpathy)의 ConvNetJS 가 유명합니다. 하지만 Keras.js 는 콘볼루션 뿐만 아니라 LSTM 모델 등 다양한 모델을 지원한다는 게 장점인 것 같습니다. 이전에 소개했던 regl-cnn 보다도 훨씬 발전된 라이브러리로 보입니다. 다양한 레이어와 활성화 함수를 구현한 Keras.js 의 소스는 깃허브에 MIT 라이센스로 공개되어 있습니다.

(업데이트) Keras.js 를 사용하여 브라우저에서 웹캠으로 찍은 이미지를 분류하는 데모가 공개되었습니다. ResNet50을 사용하였고 로딩되는데 조금 시간이 걸리지만 크롬 브라우저에서 잘 작동이 됩니다. 왼쪽 화면이 웹캠 영상이고 오른쪽 이미지가 대략 5초마다 찍힌 스샷 이미지입니다. 스샷이 찍히면 자동으로 아래쪽에 어떤 물체인지 분류가 됩니다.

kerasjs-resnet50-demo

The Future of AI

미 백악관 과학기술정책실(OSTP) 산하 과학기술 위원회(NSTC)에서 작성한 인공지능의 기술과 미래에 대한 두개의 보고서 ‘Preparing for the future of artiticial intelligence‘ 와 ‘The national artificial intelligence research and development strategic plan‘ 을 공개했습니다. 이 리포트들은 과학기술정책실에서 여러차례 걸쳐 진행한 워크샵과 6월에 배포한 RFI의 응답을 기반으로 만들어진 것으로 보입니다. 다음 달에는 AI가 직업과 경제에 미칠 영향에 대해서 추가 리포트를 공개할 예정이라고 합니다.

DeepMind’s new paper: Memory Augmented Neural Network, DNC

dnc_figure1-width-1500

출처: 딥마인드 블로그

딥마인드에서 외부 메모리를 사용하는 뉴럴 네트워크 모델에 관한 새로운 페이퍼를 네이처를 통해 발표하였습니다. 뉴럴 네트워크가 입력값 외에 외부 저장 장치를 사용하여 좀 더 복잡한 데이터 구조에 대해 학습할 수 있도록 했다고 하는데요. 페이퍼 외에 딥마인드 블로그에 관련된 포스트를 통해 좀 더 자세히 설명하고 있습니다. 소스코드는 공개하긴 하는데 시간이 6개월 정도 걸린다고 합니다@.@ 아마도 텐서플로우 코드로 변경해서 공개하려는 것 아닐까 추측됩니다. 이전의 연구와 비교해서 보려면 두개의 페이퍼 ‘Neural Turing Machines‘ 과 ‘Memory Networks‘ 를 참고하면 좋을 것 같습니다.

네이처에 게재된 페이퍼는 여기에서 다운받을 수 있습니다. 페이퍼에 딸린 수학공식 부록은 여기에서 다운받을 수 있습니다. 페이퍼의 결과를 보여주는 동영상도 두개 같이 실렸습니다.

(업데이트) 페이퍼의 내용을 텐서플로우로 구현한 깃허브 레파지토리 DNC-tensorflow 가 공개되었습니다. 페이퍼의 내용을 모두 구현한 것은 아니지만 페이퍼의 내용을 이해하는 데 큰 도움이 될 것 같습니다.

딥러닝북 스터디, Chapter 12: Applications

샌프란시스코의 딥러닝북 스터디 그룹(Deep Learning Textbook Study Group)의 다음 스터디 일정이 나왔습니다. 한국시간 11일 오전 10시 30분이고 챕터는 딥러닝북12장 어플리케이션입니다. 이번에도 유튜브에서 실시간 스트리밍 됩니다. 스트리밍이 시작되면 유튜브 주소를 추가하도록 하겠습니다. 이번에 발표할 사람은 UC 버클리의 Ph.D 학생인 조슈아 아키암(Joshua Achiam)으로 알려졌습니다.

발표 슬라이드는 이곳에서 다운로드 받을 수 있습니다.

TensorFlow for Windows

텐서플로우 0.11.0RC 릴리즈 포스트를 올리면서 잠깐 언급했던 텐서플로우의 윈도우즈 바이너리가 머지않아 지원될 것 같습니다. 아직은 공식 패키지로 지원되지 않아 직접 파이썬 pip를 만들어야 하지만 컴파일 할 수 있도록 마스터 브랜치에 cmake 파일이 머지되었습니다. 현재는 CPU 만 지원하지만 GPU 버전도 작업하고 있으니 곧 지원될 것으로 보입니다. 도커를 사용하지 않고 윈도우에 직접 설치할 수 있는 패키지를 만드려는 게 GPU 때문이라고 해도 과언이 아니니 GPU 버전이 빠질리가 없을 것 같습니다.

이렇게 되면 씨아노(Theano)에 뒤진 점 하나가 곧 해결될 것 같네요. 윈도우즈 10에서 컴파일하기 위한 권장 환경은 아래와 같습니다. 자세한 컴파일 도움말은 readme 파일을 참고하세요.

(업데이트) GPU를 지원하는 윈도우 버전을 위해 코드가 머지가 된 것 같습니다. 하지만 아직 에러가 좀 있는 듯 하네요. 깃허브 풀리퀘스트를 참고하세요.

Hinton’s Neural Networks Class Start

제프리 힌튼(Geoffrey Hinton) 교수의 코세라 강좌인 Neural Netwoks for Machine Learning 가 드디어 시작되었습니다. 다프니 콜러(Daphne Koller)의 Probabilistic Graphical Models 와 함께 놓칠 수 없는 강의입니다. 이번 기회에 꼭 완주해야겠습니다 🙂

TensorFlow v0.11.0 RC0

텐서플로우 0.11 RC 버전이 릴리즈 되었습니다. 0.10 버전이 정식 출시된지 채 한달도 되지 않았는데 정말 빠른 버전 업데이트인 것 같습니다. 이번 릴리즈에서는 cuDNN 5 와 HDFS 지원이 포함된 것이 눈에 띄입니다. 자세한 추가 기능과 개선 사항은 릴리즈 노트를 참고해 주세요.

또 텐서플로우 윈도우 버전에 대한 개발이 진행되고 있습니다(issue #17). 윈도우 버전이 제공된다면 더이상 도커를 사용할 필요가 없어 조금 더 퍼포먼스가 높아지고 GPU 를 사용하는 데도 유리할 것 같습니다.

(업데이트) v0.11.0 RC1 이 릴리즈 되었습니다. 주요 변경 사항으로는 CUDA 8.0 지원이 추가되었습니다.

Linux CPU-only: Python 2 / Python 3.4 / Python 3.5
Linux GPU: Python 2 / Python 3.4 / Python 3.5
Mac CPU-only: Python 2 / Python 3
Mac GPU: Python 2 / Python 3
Android

Open Images Dataset

open2bimages

출처: 구글 리서치 블로그

구글이 동영상 데이터셋인 YouTube-8M Datasets에 이어 이미지 데이터셋 Open Images Dataset을 공개하였습니다. 오픈 이미지 데이터셋은 총 3개의 파일로 이루어져 있습니다.

이미지 데이터(images)는 훈련(training) 데이터 9,011,220개와 밸리데이션(validation) 데이터 167,057개로 이루어져 있습니다. 각 이미지에 대한 고유한 아이디와 이미지를 다운받을 수 있는 주소, 저작자 등의 정보로 이루어져 있습니다.

Chichen Itza Mexico

ImageID,OriginalURL,OriginalLandingURL,License,AuthorProfileURL,Author,Title
000026e7ee790996,https://c2.staticflickr.com/6/5769/21094803716_da3cea21b8_o.jpg,https://www.flickr.com/photos/132646954@N02/21094803716,https://creativecommons.org/licenses/by/2.0/,https://www.flickr.com/people/132646954@N02/,"dronepicr","Chichen Itza Mexico"

주석 데이터(machine_ann)는 구글 클라우드 비전(Google Cloud Vision)과 유사한 모델을 사용하여 이미지마다 한개 이상의 키워드를 등록해 놓은 파일입니다. 이 키워드 전체 목록은 깃허브에서 확인하실 수 있습니다. 각 키워드는 0에서 1까지의 확률(confidence)로 이미지와의 매칭 정도를 설명하고 있습니다.

ImageID,Confidence:Labels...
000026e7ee790996,1.0:/m/03d1rd,0.9:/m/07yr8h,0.9:/m/012ww9,0.9:/m/0d7v_,0.8:/m/0djmp,0.8:/m/0cgh4,0.8:/m/09qqq,0.8:/m/01cbzq,0.7:/m/01czv3,0.6:/m/0d5gx,0.6:/m/01_m7,0.6:/m/08g_yr,0.6:/m/0cfkj,0.6:/m/0bysjw,0.5:/m/01v4jb,0.5:/m/03g3w,0.5:/m/056wv

이 샘플 이미지의 키워드는 ‘ruins’, ‘historic site’, ‘archaeological site’, ‘maya civilization’ 등 입니다.

사람이 만든 주석 데이터(human_ann)은 밸리데이션 데이터만 제공됩니다. 사람이 주석을 달았으므로 이 정보에 대한 확신은 1.0 입니다. 즉 사람이 만든 밸리데이션 데이터는 잘못된 정보(false positive)를 정정한 것으로 누락된 정보(false negative)를 추가한 것은 아닙니다.

ImageID,Confidence:Labels...
000026e7ee790996,1.0:/m/01cbzq,1.0:/m/03g3w,1.0:/m/056wv,1.0:/m/0djmp,0.0:/m/01_m7,0.0:/m/01czv3,0.0:/m/01v4jb,0.0:/m/03d1rd,0.0:/m/08g_yr,0.0:/m/09qqq,0.0:/m/0bysjw,0.0:/m/0cfkj,0.0:/m/0cgh4,0.0:/m/0d5gx,0.0:/m/0d7v_

YouTube-8M Datasets에 이어 이미지 데이터셋까지 구글의 데이터 공개는 놀라울 뿐입니다. 그러나 이런 데이터셋을 사용하여 학습시킨 뉴럴 네트워크 모델은 설날 세배하는 사람이나 연을 날리고 팽이를 돌리는 아이들, 수능 시험을 치르는 학생들, 편의점에서 아르바이트하는 청년들, 남대문이나 고궁, 민속촌의 초가집, 홍대에서 버스킹하는 아티스트들은 잘 묘사할 수 없을 것 같습니다. 이런 데이터셋은 누가 만들어야 할까요?

Amazon EC2 p2.16xlarge

ec2-p2

아마존의 EC2 인스턴스 모델 중 GPU를 지원하는 새로운 타입을 추가하였다고 발표하였습니다. 새로 추가된 인스턴스 타입은 8개와 16개의 GPU를 장착하였습니다. 새로운 인스턴스 타입이 발표될 것이라는 루머가 나온지는 몇달이 되었습니다. 8개까지만 장착될 것으로 보았는데 16개까지 인스턴스 타입이 출시되었습니다. 대체적으로 새로운 GPU 인스턴스 타입에 대해 반기는 분위기 입니다. OpenAI는 GPU 지원이 부족한 아마존 인스턴스를 쓰지 않고 시라스케일(Cirrascale)을 사용하는 것으로 알려져 있습니다. 새로운 인스턴스 타입이 연구자들의 마음을 돌릴 수 있을지 모르겠습니다.