카테고리 보관물: News

‘파이썬 라이브러리를 활용한 머신러닝’ 출간

b6119391002_lscikit-learn의 코어 개발자이자 배포 관리자인 안드레아스 뮐러Andreas Mueller와 매쉬어블의 데이터 과학자인 세라 가이도Sarah Guido가 쓴 ‘Introduction to Machine Learning with Python‘를 번역한 ‘파이썬 라이브러리를 활용한 머신러닝‘을 출간하였습니다.

출간 직전에 원서가 새로 릴리즈되어서 한바탕 소동을 벌이기는 등 이런 저런 일들이 오랜 작업 기간동안 생겼던 것 같습니다. 추운 겨울에 시작한 일을 한 여름이 되어서야 내놓게 되었네요. 책은 출간이 새로운 시작인 것 같습니다. 에러타나 궁금한 점 등 어떤 이야기도 괜찮습니다. 도서 페이지에 있는 양식을 통해 자유롭게 보내 주세요.

그리고 혹, 서점에 가시면 잘 보이는 곳으로 옮겨놔 주세요! 🙂

(업데이트) 번역서의 1장, 2장 전체를 블로그에 공개할 예정입니다. 공개를 허락해 주신 한빛미디어에 깊이 감사드립니다. 원고를 정리해서 올릴려면 1주일 정도 걸릴 것 같습니다. 😀

TensorFlow 1.2.0 Release

텐서플로우 1.2.0 버전이 릴리즈되었습니다. 1.2.0 버전부터 윈도우즈에서 파이썬 3.6을 지원하고 conv3d_transpose API 가 추가되는 등 여러 변화가 있습니다. RNNCell과 관련된 변경사항은 이전 포스트를 참고해 주세요. 1.2.0 버전에 인텔의 MKL 라이브러리가 텐서플로우에 추가되었다는 소식입니다(일명 MKL-DNN). GPU 없이 CPU만으로 쓰는 경우 어느 정도 성능 향상이 될 것 같습니다. 1.2.0 버전 이후에는 cuDNN 6.0이 기본으로 채택됩니다.

그 외 자세한 내용은 텐서플로우의 릴리즈 노트를 참고해 주세요. 1.2.0 버전이 이미 PyPI에 등록되어 있기 때문에 pip 명령으로 간단하게 설치할 수 있습니다.

$ pip install --upgrade tensorflow

$ pip install --upgrade tensorflow-gpu
  • macOS: Python 2.7, 3.3, 3.4, 3.5, 3.6
  • Linux: Python 2.7, 3.3, 3.4, 3.5, 3.6
  • Windows: Python 3.5, 3.6

TensorFlow 1.2.0 RC2 Release

텐서플로우 1.2.0 RC2 버전이 릴리즈 되었습니다. RC2에서부터 윈도우즈 파이썬 3.6 버전을 지원합니다. 이제 윈도우에서 아나콘다를 설치하고 따로 파이썬 3.5 환경을 만들었던 번거로움이 사라졌습니다. 또 1.2 버전이 cuDNN 5.1을 사용하는 마지막 버전이 되었습니다. 1.3 버전부터는 cuDNN 6.0을 기준으로 wheel을 생성합니다. 하지만 텐서플로우 소스 코드는 cuDNN 5.1과의 호환성을 유지합니다. cuDNN5.1을 반드시 사용해야 하는 경우라면 직접 빌드를 해야할 것 같습니다.

이번 버전에서 바뀐 자세한 내용은 이전 포스트와 릴리즈 노트를 참고하세요. 1.2.0 RC2 버전이 이미 PyPI에 등록되어 있기 때문에 pip 명령에서 --pre 옵션으로 간단하게 설치할 수 있습니다.

$ pip install --upgrade --pre tensorflow

$ pip install --upgrade --pre tensorflow-gpu

Chainer 2.0 & CuPy

파이토치PyTorch와 같이 다이나믹 컴퓨테이션 그래프를 지원하는 체이너Chainer가 2.0 버전을 릴리즈했다는 소식입니다. 2.0 버전에서 깃허브 주소를 바꾸었으며 강화학습, 분산, 비전에 관한 패키지를 분리하였습니다. 자세한 내용은 체이너 문서와 깃허브 릴리즈 노트를 참고하세요.

$ pip install chainer

또한 넘파이NumPy 스타일의 행렬 연산을 GPU를 사용하여 처리할 수 있는 CuPy를 체이너에서 분리하여 공개하였습니다(즉 체이너에서 GPU를 사용하려면 cupy를 설치해야 합니다). 넘파이를 쓰듯 CuPy를 써서 자기만의 연산을 만든다면 재미있을 것 같습니다. CuPy도 pip를 사용하여 쉽게 설치할 수 있습니다.

$ pip install cupy

파이토치도 더욱 많이 넘파이 스타일을 지원하려고 준비중이며 윈도우즈 지원도 곧 가능할 것 같습니다.

Microsoft CNTK 2.0 Release

마이크로소프트가 CNTK 2.0(Cognitive Toolkit) 버전이 정식 출시되었다고 블로그를 통해 알렸습니다. CNTK 2.0 버전은 파이썬과 C++, 자바 API를 지원하며 윈도우즈와 리눅스 설치 바이너리를 제공하고 있습니다. 2.0 버전에서는 케라스Keras를 지원하는 기능이 추가되었습니다. 아마도 텐서플로우나 파이토치 등을 따라 가려면 서드파티에 대해 더욱 적극적으로 대응할 것 같습니다. 자세한 내용은 깃허브문서를 참고해 주세요.

바이너리가 PyPI에 등록되어 있지는 않지만 pip 명령을 사용하여 간단히 설치할 수 있습니다. 파이썬 2.7, 3.4, 3.5, 3.6 버전을 지원합니다. 특이한 점은 마이크로소프트에서 만든 1bit-SGD 기능을 지원하는 바이너리가 별도로 빌드되어 있다는 점입니다.

$ pip install ~.whl
  • 리눅스
2.7 CPU-Only https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp27-cp27mu-linux_x86_64.whl
GPU https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp27-cp27mu-linux_x86_64.whl
GPU-1bit-SGD https://cntk.ai/PythonWheel/GPU-1bit-SGD/cntk-2.0-cp27-cp27mu-linux_x86_64.whl
3.4 CPU-Only https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp34-cp34m-linux_x86_64.whl
GPU https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp34-cp34m-linux_x86_64.whl
GPU-1bit-SGD https://cntk.ai/PythonWheel/GPU-1bit-SGD/cntk-2.0-cp34-cp34m-linux_x86_64.whl
3.5 CPU-Only https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp35-cp35m-linux_x86_64.whl
GPU https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp35-cp35m-linux_x86_64.whl
GPU-1bit-SGD https://cntk.ai/PythonWheel/GPU-1bit-SGD/cntk-2.0-cp35-cp35m-linux_x86_64.whl
3.6 CPU-Only https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp36-cp36m-linux_x86_64.whl
GPU https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp36-cp36m-linux_x86_64.whl
GPU-1bit-SGD https://cntk.ai/PythonWheel/GPU-1bit-SGD/cntk-2.0-cp36-cp36m-linux_x86_64.whl
  • 윈도우즈
2.7 CPU-Only https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp27-cp27m-win_amd64.whl
GPU https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp27-cp27m-win_amd64.whl
GPU-1bit-SGD https://cntk.ai/PythonWheel/GPU-1bit-SGD/cntk-2.0-cp27-cp27m-win_amd64.whl
3.4 CPU-Only https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp34-cp34m-win_amd64.whl
GPU https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp34-cp34m-win_amd64.whl
GPU-1bit-SGD https://cntk.ai/PythonWheel/GPU-1bit-SGD/cntk-2.0-cp34-cp34m-win_amd64.whl
3.5 CPU-Only https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp35-cp35m-win_amd64.whl
GPU https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp35-cp35m-win_amd64.whl
GPU-1bit-SGD https://cntk.ai/PythonWheel/GPU-1bit-SGD/cntk-2.0-cp35-cp35m-win_amd64.whl
3.6 CPU-Only https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp36-cp36m-win_amd64.whl
GPU https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp36-cp36m-win_amd64.whl
GPU-1bit-SGD https://cntk.ai/PythonWheel/GPU-1bit-SGD/cntk-2.0-cp36-cp36m-win_amd64.whl

Keras Cheat Sheet

keras-cheatsheet

일전에 데이터캠프(datacamp.com)에서 만든 치트 시트 시리즈를 소개했었습니다. scikit-learn, numpy, pandas, scipy, matplotlib에 이어 이제는 케라스(Keras)의 치트 시트도 나왔습니다! 🙂

최근에는 케라스에 MXNetCNTK를 백엔드로 지원하기 위한 작업이 진행되고 있습니다. 이렇게 되면 래퍼(wrapper) 라이브러리의 지존이 되겠군요. 케라스 책으로는 처음 팩트(packtpub)에서 ‘Deep Learning with Keras‘가 출간되었습니다. 이 책도 읽고 나서 간단히 리뷰해보도록 하겠습니다.

TensorFlow 1.2.0 RC1 Release

텐서플로우 1.2.0 RC1이 릴리즈되었습니다. 1.0 버전 이후에도 여전히 빠른 속도로 버전 업그레이드가 되고 있네요. 이번 버전에서 바뀐 자세한 내용은 이전 포스트와 릴리즈 노트를 참고하세요.

1.2.0 RC1 버전이 이미 PyPI에 등록되어 있기 때문에 pip 명령으로 간단하게 설치할 수 있습니다. 텐서플로우 바이너리는 64bit 용이며, 윈도우즈에서는 파이썬 3.5 버전만을 지원합니다.

$ pip install --upgrade tensorflow

$ pip install --upgrade tensorflow-gpu

TensorFlow 1.2.0 RC0 Release

텐서플로우 1.2.0 RC0 버전이 릴리즈되었습니다. 주의해야할 사항은 버전 1.1.0에서 변경된 RNNCell이 다시 변경된 점입니다.

1.1.0 버전에서는 이전처럼 MultiRNNCell([lstm] * 5) 쓰면 가중치를 공유하지 못한다고 에러가 발생했습니다. 그래서 1.1.0 버전에서 RNN 코드를 MultiRNNCell([LSTMCell(...) for _ in range(5)]) 와 같이 써야했습니다. 텐서플로 첫걸음의 RNN 코드도 이를 반영하여 변경되었습니다. 이번 1.2.0 버전에서는 두 가지 경우를 모두 허용합니다. 전자의 경우 동일한 가중치가 공용되고 후자의 경우 각각의 가중치를 가지게 됩니다. 따라서 텐서플로우 1.0.1 버전에서 바로 1.2.0 으로 업그레이드할 때 코드의 동작방식이 완전히 달라지므로 주의해야 합니다.

입력 파이프라인을 위한 tf.contrib.data API 가 추가되었고 텐서보드의 새 버전이 포함되었다고 합니다. 그외 이번 버전에서 바뀐 자세한 내용은 릴리즈 노트를 참고하세요.

1.2.0 RC0 버전이 이미 PyPI에 등록되어 있기 때문에 pip 명령으로 간단하게 설치할 수 있습니다. 텐서플로우 바이너리는 64bit 용이며, 윈도우즈에서는 파이썬 3.5 버전만을 지원합니다.

$ pip install --upgrade tensorflow

$ pip install --upgrade tensorflow-gpu

TPU2 for training and inference

5

작년에 이어 구글 IO 2017에서 새로운 TPU를 발표하였습니다. TPU2는 180 테라플롭teraflop의 성능을 가지고 있고 TPU1과는 달리 모델 훈련에도 사용할 수 있습니다. 이는 얼마전 발표됐던 NVIDIA의 볼타Volta의 최고 성능 테라플롭 120을 크게 앞서는 수치입니다. 기사에 따르면 위 이미지에서 볼 수 있듯이 45 테라플롭의 TPU코어 네개가 모여 180 테라플롭의 성능을 만들고 16비트 반정도half-precision 부동소수점을 사용하는 것으로 보입니다. 거기에 더불어 1,000개의 TPU2가 장착된 구글 클라우드(TensorFlow Research Cloud, TFRC)를 전 세계 연구자들에게 무료로 제공한다고 합니다. 누구나 온라인을 통해 신청할 수 있습니다. 신청 양식을 보면 상당히 간략하게만 쓰도록 되어 있어서 어떤 기준으로 선정이 될지 감을 잡기 힘드네요. TPU2에 TFRC 까지 구글이 페이스북과 NVIDIA와 벌이는 경쟁이 흥미롭고 또 놀랍습니다. TPU2의 페이퍼가 공개되지는 않았습니다만 이전 사례를 보았을 때 늦게라도 나올 가능성을 기대해 봅니다.

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