카테고리 보관물: News

PyTorch: New Cool DL Library

0120-sdt-github

널리 사용되는 딥러닝 라이브러리 중 하나는 페이스북에서 많이 사용하는 토치(torch)입니다. 하지만 루아 스크립트 인터페이스 때문에 처음 딥러닝을 시작하는 사람들에게 선택되기는 쉽지 않습니다. 그와중에 구글이 파이썬 인터페이스를 전면으로 내세운 텐서플로우로 딥러닝 프레임워크 시장의 선두로 올라섰습니다. 하지만 앞으로 이야기가 조금 달라질 수 있을것 같습니다. 바로 텐서플로우보다 더 파이써닉한 파이토치(PyTorch)가 공개되었기 때문입니다. 이름을 보아서는 토치에 파이썬 인터페이스를 추가한 것으로 오해할 수 있지만, 이 라이브러리는 넘파이(NumPy) 정도를 제외하고는 거의 의존성이 없으며 텐서 연산을 위한 C++ 코드를 제외하고는 거의 모두 파이썬 구현으로 만들어졌습니다. 이는 대부분의 코드가 C++ 로 구현되어 있고 인터페이스를 파이썬으로 가진 텐서플로우를 비롯한 다른 라이브러리들과는 큰 차이가 납니다. 웹사이트에서 주장하는 바 그대로 “Python First” 입니다.

파이토치의 주요 장점은 모든 텐서의 연산에 대해 자동으로 그래디언트를 계산해 주는 Autograd, NumPy/SciPy 등과의 뛰어난 호환성, 깔끔한 코드 등입니다. 하지만 가장 관심을 끄는 것 중 하나는 다이나믹하게 컴퓨테이션 그래프를 만들어 주는 기능입니다. 즉 텐서플로우를 비롯한 다른 라이브러리들처럼 그래프를 정의하고 실행하는 것이 아니고 코딩되는 대로 그래프가 점진적으로 만들어지는 것입니다. 이런 장점을 가진 라이브러리로는 일본에서 만든 체이너(Chainer)가 있고 최근 카네기멜론 대학의 Clab 에서 공개한 DyNet(말 그대로 다이나믹 넷이죠), 그리고 MXNet을 개발하는 DMLC 에서 최근에 공개한 MinPy 등이 있습니다. 실제로 파이토치의 일부 기능은 체이너의 포크에서 시작되었다고 합니다. 이 프로젝트는 페이스북의 서미스 친탈라(Soumith Chintala)와 아담 파스케(Adam Paszke)가 관리하고 있으며 혼돈될 수 있지만 휴 퍼킨스(Hugh Perkins)가 만든 토치 래퍼인 pytorch와는 다릅니다.

기존의 네트워크와 앞으로의 연구가 얼마나 파이토치로 포팅되어 나올지가 궁금합니다. 자세한 파이토치의 기능은 예제를 뜯어 보면서 정리해서 올리겠습니다. 파이토치는 아직 PyPI 에 올라가 있지는 않지만 비교적 쉽게 설치가 가능합니다. 다만 아직 윈도우 버전이 준비되어 있지 않고 맥에서는 GPU 지원이 되지 않습니다.

# conda (linux, osx)
$ conda install pytorch torchvision -c soumith

# pip : linux + python2.7 + cuda7.5
$ pip install https://s3.amazonaws.com/pytorch/whl/cu75/torch-0.1.6.post22-cp27-cp27mu-linux_x86_64.whl 
$ pip install torchvision

# pip : linux + python2.7 + cuda8.0
$ pip install https://s3.amazonaws.com/pytorch/whl/cu80/torch-0.1.6.post22-cp27-cp27mu-linux_x86_64.whl 
$ pip install torchvision

# pip : linux + python3.5 + cuda7.5
$ pip install https://s3.amazonaws.com/pytorch/whl/cu75/torch-0.1.6.post22-cp35-cp35m-linux_x86_64.whl
$ pip install torchvision

# pip : linux + python3.5 + cuda8.0
$ pip install https://s3.amazonaws.com/pytorch/whl/cu80/torch-0.1.6.post22-cp35-cp35m-linux_x86_64.whl
$ pip install torchvision

# pip : osx + python2.7
$ pip install https://s3.amazonaws.com/pytorch/whl/torch-0.1.6.post22-cp27-cp27m-macosx_10_7_x86_64.whl 
$ pip install torchvision 

# pip : osx + python3.5
$ pip install https://s3.amazonaws.com/pytorch/whl/torch-0.1.6.post22-cp35-cp35m-macosx_10_6_x86_64.whl 
$ pip install torchvision

A Course in ML

cover메릴랜드 대학의 조교수인 할 다움 3세(Hal Daumé III)의 ‘A Course in Machine Learning’이 최근 0.99버전으로 업데이트 되었습니다. 이 책은 웹사이트에서 무료로 책 전체를 다운받을 수 있으며 챕터 별로 나누어서 받을 수도 있습니다. 0.99 버전이라 완성도가 매우 높다고 볼 수 있습니다. 아마 정식 책으로 출간되기 보다는 자가 출판 형태로 판매가 되지 않을까 생각됩니다. 이 책은 약 1년전 부터 쓰여지기 시작했으며 깃허브에 책의 내용과 소스 코드를 공개되어 있습니다.

  1. Front Matter
  2. Decision Trees
  3. Limits of Learning
  4. Geometry and Nearest Neighbors
  5. The Perceptron
  6. Practical Issues
  7. Beyond Binary Classification
  8. Linear Models
  9. Bias and Fairness
  10. Probabilistic Modeling
  11. Neural Networks
  12. Kernel Methods
  13. Learning Theory
  14. Ensemble Methods
  15. Efficient Learning
  16. Unsupervised Learning
  17. Expectation Maximization
  18. Structured Prediction
  19. Imitation Learning
  20. Back Matter

DeepCognition.ai

(업데이트) 세트렉아이의 전태균님이 이 플랫폼이 케라스(Keras)로 만들어졌다고 알려 주셨습니다. 모델을 만든 후 작성된 코드를 다운 받을 수 있는데요. 전태균님의 깃허브에서 직접 작성한 것deepcognition.ai 에서 만든 코드를 비교해 볼 수 있습니다.

Deep Cognition Labs에서 개발한 딥러닝 GUI 플랫폼인 DeepCognition.ai 베타 서비스가 릴리즈 되었습니다. 이 서비스는 웹 기반 어플리케이션으로 마우스 드래그앤 드롭으로 모델을 그리고, 훈련과 테스트를 클라우드 머신(AWS으로 추측됩니다)에서 수행합니다. 딥러닝 라이브러리는 텐서플로우를 사용한다고 합니다. 이와 비슷한 비즈니스 모델이 앞으로 계속 생길 듯하여 만드는 단계를 한번 따라가 보았습니다.

유료 서비스이지만 베타 중이어서인지 결재 정보를 넣지 않고도 간단한 모델을 만들 수 있었는데 임시적인 것인지 일시적인 오류인지는 모르겠습니다. 아직 친절한 설명은 충분하지 않지만 동영상 설명이 있어서 간단한 모델은 쉽게 따라할 수 있을 것 같습니다. 아래는 간단한 MNIST 예제를 만드는 과정입니다.

왼쪽에 간단한 메뉴가 구성되어 있는데 맨 위에 프로젝트를 생성하는 버튼이 있습니다. 프로젝트를 만들고 나서 최대화 아이콘을 누르면 워크 스페이스 같은 창으로 이동됩니다.

%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-01-18-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-11-11-23

계속 읽기

Scikit-learn & Pandas Cheat Sheet

데이터캠프(Datacamp) 블로그에서 파이썬 머신러닝 라이브러리인 사이킷런(scikit-learn)과 데이터 분석을 위한 라이브러리 판다스(pandas)의 치트 시트를 만들어 공개했습니다. 사이킷런과 판다스를 좋아한다면, 잘 정돈된 이 치트 시트를 프린트해서 책상에 붙이고 싶은 충동을 억제하기 힘들 것 같습니다. 🙂

(업데이트) 넘파이(NumPy) 치트시트도 추가되었습니다.

(클릭하면 전체화면으로 볼 수 있습니다. pdf 버전은 여기-scikit-learn, pandas, numpy-에서 받을 수 있습니다.)

scikit_learn_cheat_sheet_python

pandaspythonfordatascience

numpy_python_cheat_sheet

TensorFlow XLA with JIT Compilation

tf-jit

텐서플로우 XLA(Accelerated Linear Algebra)의 초기 버전이 얼마전 마스터 브랜치에 추가 되었습니다. XLA 는 텐서플로우 백서의 끝부분에 향후 과제로 언급된 성능향상을 위한 JIT 컴파일러에 대한 첫 결과물로 보입니다.

We also have a number of concrete directions to improve the performance of TensorFlow. One such direction is our initial work on a just-in-time compiler that
can take a subgraph of a TensorFlow execution, perhaps with some runtime profiling information about the typical sizes and shapes of tensors, and can generate an optimized routine for this subgraph.

텐서플로우 그래프가 JIT 컴파일 된다면 성능 향상은 물론 다양한 기기, 특히 모바일 기기에 손쉽게 구겨 넣을 수 있을 것으로 보입니다. 그리고 XLA를 지원하는 CPU, GPU 들도 나름 생태계를 만들어 가지 않을까 생각되네요. 이미 예상한 로드맵이라고는 하지만 혀를 내두르지 않을 수 없네요. 지난 NIPS에서 발표한 Jeff Dean의 XLA 자료도 함께 참고하세요.

Synaptic: NN library for node.js

시냅틱(Synaptic)은 브라우저에서 뉴럴 네트워크를 구동시킬 수 있는 node.js 용 자바스크립트 라이브러리 입니다. 이전에 소개했던 keras.js 는 Keras 라이브러리에서 만든 모델을 브라우저에서 구동시키기 위한 자바스크립트 라이브러리 였지만 시냅틱은 의존성 없이 자체적인 뉴럴 네트워크를 꾸밀 수 있습니다. 제공되는 활성화 함수는 렐루, 하이퍼볼릭 탄젠트, 시그모이드 등을 포함하고 있고 주요 손실 함수는 크로스 엔트로피, 평균 제곱 오차가 있습니다. 또 기본 피드 포워드 뉴럴 넷 뿐만 아니라 리커런트 뉴럴 네트워크(LSTM)도 기본적으로 제공하고 있습니다. 하지만 필요에 따라 원하는 아키텍처를 만드는 것도 어렵지 않아 보입니다. 이 소스 코드는 깃허브에서 확인할 수 있으며 MIT 라이센스 입니다. 아직 완전한 라이브러리는 아니지만 빌드업할 수 있는 발판은 모두 갖춘 것 같습니다. 앞으로 얼마나 커뮤니티가 형성되고 라이브러리를 발전시킬지 기대가 됩니다.

NIPS 2016 GAN Tutorial Summary

nips_2016_gan_report

OpenAI 의 이안 굿펠로우(Ian Goodfellow)가 NIPS 2016의 GAN 튜토리얼을 요약한 리포트를 만들어서 Arxiv 에 등록하였습니다. 생성 모델(generative model)이 인기를 끄는 이유와 어떻게 작동하는지, GAN(Generative Adversarial Network)이 다른 모델과 다른 점과 GAN이 작동하는 상세 내용을 다룹니다. 또 최근 GAN 연구 동향과 최신 모델도 함께 다루고 있어 놓치기 아까운 리포트인 것 같습니다!

TensorFlow v0.12 Release

(업데이트) 지난 주에 0.12.1 버전이 릴리즈 되었습니다. 이 버전의 수정 내용은 프로토콜버퍼(protobuf)의 요구 버전이 3.1 에서 3.1 이상으로 변경된 것 이외에는 대부분 문서의 내용을 수정한 것입니다.

텐서플로우 0.12 버전이 정식 릴리즈 되었습니다. 0.12 버전부터는 윈도우즈에 대한 지원(Windows 10, Windows 7, and Windows Server 2016 에서 테스트)과 Go 언어 지원, 텐서보드에서 임베딩 시각화 등이 추가되었습니다. 그리고 tf.train.Saver의 체크포인트 파일 포맷이 V2 로 업그레이드 되었습니다. 자세한 내용은 릴리즈 노트를 참고하세요.

텐서플로우 0.12RC1 버전 부터 리눅스, 맥, 윈도우에서 모두 pip 설치를 지원하고 있습니다.

맥, 리눅스, 윈도우즈(아나콘다 권장) CPU 버전

$ pip install tensorflow

맥, 리눅스, 윈도우즈(아나콘다 권장) GPU 버전

$ pip install tensorflow-gpu

다만 현재 0.12 버전은 아직 PyPI 에 등록되지 않았습니다(현재는 PyPI에 등록되어 있어 pip 로 설치할 수 있습니다). 아마 몇일 내로 등록될 것 같지만 당장 0.12 버전으로 업그레이드하시려면 wheel 패키지를 지정해서 설치해야 합니다.

# Ubuntu/Linux 64-bit, CPU only, Python 2.7
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0-cp27-none-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0-cp27-none-linux_x86_64.whl

# Mac OS X, CPU only, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0-py2-none-any.whl

# Mac OS X, GPU enabled, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-0.12.0-py2-none-any.whl

# Ubuntu/Linux 64-bit, CPU only, Python 3.4
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, CPU only, Python 3.5
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0-cp35-cp35m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.5
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0-cp35-cp35m-linux_x86_64.whl

# Mac OS X, CPU only, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0-py3-none-any.whl

# Mac OS X, GPU enabled, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-0.12.0-py3-none-any.whl

pip 명령은 아래와 같습니다.

$ sudo pip install --upgrade $TF_BINARY_URL

윈도우즈는 아래 명령을 참고하세요.

# CPU Only
C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-0.12.0-cp35-cp35m-win_amd64.whl

# GPU enabled
C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-0.12.0-cp35-cp35m-win_amd64.whl

인공지능 무료 공개 강좌

12월 26일(월)에 ‘인공지능시대 어떻게 준비할까?’ 를 주제로 공개 강좌가 열립니다. 인공지능의 소개부터 기술적인 내용까지 그리고 여러 어플리케이션에 대한 소개도 두루 다루고 있어 유익한 시간이 될 것 같습니다. 강좌 시간은 14:00~17:30 분까지 3 세션으로 이루어지며 강남역 근처 한국과학기술회관 대회의실에서 열립니다. 강좌는 무료이며 선착순 신청이므로 관심있으신 분들은 서두르시면 좋을 것 같습니다. 사전 등록 신청은 이메일 gpr at krivet.re.kr, yk281 at krivet.re.kr 로 소속과 이름을 보내면 됩니다. 자세한 강좌 내용은 아래 목차를 참고하세요.

계속 읽기

MS Ventures fund Element AI

마이크로소프트가 새로운 벤처 펀드를 운영한다고 발표하였습니다. 특히 이 펀드는 인공지능 분야에 집중될 것으로 알려졌습니다. 첫번째 펀드는 요수아 벤지오(Yoshua Bengio) 교수의 엘리먼트 AI(Element AI) 입니다. 정확한 금액을 알려지지 않았지만 지난달 구글이 엘리먼트 AI에 3백만 US달러 이상을 투자하기로 하였으므로 그에 버금가는 금액이 될 것으로 예상됩니다. 엘리먼트 AI는 수천만달러까지 펀딩을 계속 받을 예정이라고 합니다. 마이크로소프트가 OpenAI 와도 제휴하고 엘리먼트 AI에 투자까지 인공지능 분야에서 계속 잰걸음을 하는 것 같습니다. 마이크로소프트 벤처는 엘리먼트 AI 뿐만 아니라 계속 인공지능 벤처에 투자를 이어갈 예정이라고 합니다.