카테고리 보관물: TensorFlow

TensorFlow 1.6.0 RC0 Release

텐서플로 1.6.0 RC0 버전이 릴리즈되었습니다. 1.5.0 버전이 나온지 채 한달도 되지 않았는데 잉크가 마르기전이라는 말이 실감이 나네요. 이번 버전에는 이전에 예고한 대로 CPU 사용자들을 위한 AVX 명령이 활성화되어 바이너리가 제공됩니다. CUDA 9.0에 대한 버그 안내도 있네요. 조금 더 자세한 내용은 릴리즈 노트를 참고해 주세요. 1.6.0 RC0 버전은 다음과 같이 pip 명령으로 설치할 수 있습니다.

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

(업데이트) 텐서플로 1.6.0 RC1 버전이 릴리즈되었습니다.

TensorFlow 1.5.0 Release

텐서플로 1.5.0 버전이 릴리즈되었습니다. RC 버전에서 소개되었던 것처럼 Eager execution과 TensorFlow Lite의 프리뷰 버전이 포함되어 있습니다. 구글 개발자 블로그에서 텐서플로 1.5에 추가된 기능에 대해 조금 더 자세히 소개하고 있습니다. 여기에는 Eager execution의 가이드 문서와 TensorFlow Lite의 코드랩 TFlite 튜토리얼이 소개되어 있습니다.

텐서플로 1.5.0 부터는 CUDA 9, cuDNN 7에서 컴파일된 PyPI 패키지가 제공됩니다. pip를 사용해 설치하려면 두 라이브러리를 업데이트해 주어야 합니다. 텐서플로 1.5.0의 설치 가이드는 다음 포스트도 참고하세요. 그리고 glibc 버전 2.23에서 컴파일 되기 때문에 현재 리눅스의 glibc 버전이 낮다면 업그레이드해 주어야 합니다.

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

(업데이트) cuBLAS 패치 버전(9.1)과 cuDNN 7.0.5에서도 1.5.0 버전을 설치할 수 있습니다.

(업데이트) 텐서플로 로드맵 페이지에서 앞으로의 개발 방향을 살짝 엿볼 수 있는데요. 눈에 띄이는 것들이 여러개 있는 것 같습니다. C++, Java 등의 언어지원, 고수준 API(케라스로 부족한 걸까요?), 자동 배치 알고리즘(!!!), OpenCL 지원(!!!!) 등이 입맛을 당기네요. 🙂

AWS 스팟 인스턴스 + Deep Learning AMI

AWS의 EC2 스팟spot 인스턴스와 함께 AWS 공식 Deep Learning AMI를 사용하는 법에 대해 간단히 따라가 보도록 하겠습니다. 이 글은 ‘홍대 머신러닝 스터디‘를 위해 작성되었습니다.

먼저 AWS 페이지에서 계정을 만들어야 합니다. 계정을 만들 때 향후 결재를 위해 신용카드 정보를 입력해야 하는 것외에는 특별한 것은 없습니다. 계정을 만들고 AWS 콘솔에 로그인해서 메뉴바에 서비스 드롭다운 메뉴를 펼쳐 EC2를 찾아 클릭합니다.

스팟 인스턴스는 왼쪽 메뉴 ‘스팟 요청’에서 할 수 있습니다. 그런데 웬일인지 이 메뉴를 통해 스팟 인스턴스를 요청할 때는 아마존의 Deep Learning AMI(서버 이미지)를 찾을 수가 없었습니다. 물론 직접 Nvidia 드라이버와 텐서플로를 설치해도 되지만 편리하게 제공해 주는 것을 마다할 이유는 없겠지요.

아마존의 Deep Learning AMI를 사용해서 스팟 인스턴스를 띄우려면 먼저 아래 그림과 같이 좌측의 ‘AMI’ 메뉴에서 가능합니다. 혹시 서울 리전이 아니더라도 크게 상관은 없습니다만 아래 화면과 다를 수 있습니다. 서울 리전은 오른쪽 위에서 이름 옆의 드롭다운에서 선택할 수 있습니다. 검색창의 드롭다운 메뉴를 ‘퍼블릭 이미지’로 바꾼 다음  ‘deep learning ami’를 찾습니다. 아마존 리눅스와 우분투가 있는데 여기서는 우분투 버전을 선택했습니다.

스크린샷 2018-01-17 오후 8.29.36

그 다음 ‘작업’ 버튼을 눌러 ‘스팟 요청’ 메뉴를 클릭합니다.

스크린샷 2018-01-17 오후 8.29.57

계속 읽기

TensorFlow 1.5.0 RC0 Release

텐서플로 1.5.0 RC0 버전이 릴리즈되었습니다. 정말 버전이 빠르게 올라가네요. 🙂 1.5.0 버전에서는 Eager ExecutionTensorFlow Lite 두 개의 굵직한 기능이 추가되었습니다(아직 프리뷰라고 합니다). 또 1.4.0 버전에서 예고한 대로 1.5.0 부터는 CUDA 9와 cuDNN 7을 사용하여 바이너리가 제공됩니다. 직접 컴파일하기 귀찮다면 CUDA, cuDNN을 업데이트해 주어야 합니다. 그리고 1.6.0 버전부터는 CPU의 AVX 명령을 지원하도록 바이너리가 제공될 예정입니다. CPU만 있는 경우에 조금 도움이 될 것 같습니다.

설치는 이전과 동일하게 pip로 설치 가능합니다.

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

(업데이트) 1.5.0 RC1 버전이 릴리즈 되었습니다.

[Review] Hands-On Machine Learning with Scikit-Learn & TensorFlow

lrg 이 책의 번역을 시작한지 벌써 6개월이 훌쩍 넘어가 버렸습니다. 개인적인 핑계가 없는 것은 아니지만, 그럼에도 불구하고 이렇게 오랜 시간이 걸린 것은 번역 작업이 어떤 병렬화도 불가능한 노동 집약적인 일이기 때문일 것입니다 🙂 작업이 거의 마무리되어 가는 시점에 원서 전체에 대한 리뷰와 작업에 대한 기록을 위해 글을 남깁니다.

이 책은 500페이지가 넘어 두툼한 편이고, Scikit-Learn 라이브러리를 사용한 머신러닝Machine Learning텐서플로TensorFlow를 사용한 딥러닝Deep Learning 파트 두 부분으로 크게 나누어 집니다(실제 최근 프랑스어 판은 두 권의 책으로 출판되었다고 합니다). 분량만으로 비교했을 때에도 약간 딥러닝 쪽에 더 무게를 두고 있습니다. 간간히 Scikit-Learn과 텐서플로를 함께 다루고 있는 책들이 있는데, 아마도 딥러닝만을 설명하기엔 머신러닝 개념이 꼭 필요하기 때문인 것 같습니다. 물론 텐서플로만 다루는 책이더라도 도입부에 회귀와 분류 모델을 간단히 텐서플로로 만들어 봄으로써 머신러닝에 대한 개념을 다루고 진행하는 것이 일반적입니다. 이 책은 두 라이브러리를 모두 다루고 있으며 유사한 책 중에서는 가장 포괄적이고 세세한 내용을 담고 있습니다. 또 이론서와 실용서의 중간 형태라고 볼 수 있습니다. 수식없이 코드만 있지 않고, 코드는 없고 이론만 늘어 놓지도 않습니다.

작업을 시작하고 나서 7월, 10월에 원서의 내용이 크게 개정되었습니다. 주로 딥러닝 파트였으며, 원서의 여러가지 오류 때문이기도 하지만 아마도 이 분야의 변화가 빠른 것도 한 몫 했을 것입니다. 바뀐 부분을 PDF로 받았는데 책으로 옮겨 적기에는 너무 양이 많아 출력해서 책에 오려 붙이고 작업을 진행했습니다. 그 외에도 괴장히 많은 에러타가 있고, 아직 컨펌되지 않은 에러타도 남아 있습니다(에러타가 많이 발견되었다는 것은 그 만큼 높은 인기를 반증합니다). 최근에는 에러타와 개정판에도 언급되지 않은 변경사항이 사파리온라인에서 발견되어 저의 멘탈을 붕괴 직전까지 몰고 가기도 했습니다. 😦

이 책이 다른 책과 구별되는 한 장을 고르라고 한다면 저는 2장을 선택할 것 같습니다. 2장은 회귀 모델을 사용해 머신러닝 프로젝트의 준비에서부터 런칭까지 모든 단계를 짚어가고 있습니다. 이 책에는 특성 공학feature engineering에 대한 장을 따로 할당하지 않았는데 2장에서 이런 부분이 다소 해소됩니다. 다른 책에서도 프로젝트 운영에 대한 가이드라인이 다소 포함되어 있기도 하지만, 여기에서처럼 실제 프로젝트를 진행하듯이 자세히 기술되어 있지는 않습니다. 이런 부분은 저자의 프로젝트 경험을 엿볼 수 있는 좋은 사례인 것 같습니다.

이 책은 구성상 독특한 점이 두 가지가 있습니다. 첫째는 다른 책들과는 달리 샘플 코드 전체를 싣지 않고 있는 것입니다. 비교적 많은 주제에 대해 상세히 논하고 있기 때문에 만약 코드를 모두 썼다면 이보다 훨씬 더 두꺼운 책이 되었을 것입니다. 설명을 위해 꼭 필요한 코드 부분만 실었으며 전체 코드는 깃허브github.com의 주피터 노트북Jupyter Notebook을 참고하도록 안내하고 있습니다. 둘째, 각 장의 끝에 연습문제를 포함하고 있습니다. 그렇다고 이 책이 대학 교재스러운 편집 구성을 가지는 것은 아닙니다. 일반 컴퓨터 과학 도서에서 연습문제를 가진 경우는 드물기 때문에 신선하기도 하고 저자의 노력을 느낄 수 있습니다. 연습문제는 크게 본문의 내용을 질문하는 것과 실습을 하는 것, 두 종류로 나누어 집니다. 내용에 대한 질문의 답은 책의 부록에 실려 있습니다. 실습 문제는 깃허브의 장별 주피터 노트북 말미에 포함되어 있습니다. 다만 아직 모든 연습문제의 답이 올려져 있지 않고 점진적으로 추가되고 있습니다. 번역서가 출간될 쯤에는 깃허브의 주피터 노트북의 내용도 모두 한글로 번역되어 제공됩니다. 추후 업데이트되는 연습문제도 함께 번역이 될 것입니다.

Scikit-Learn을 이용해서는 회귀, 분류에 대한 기본 내용으로 시작해서 서포트 벡터 머신Support Vector Machine, 결정 트리Decision Tree, 앙상블emsemble, 차원 축소Dimensionality Reduction까지 다룹니다. 아무래도 ‘파이썬 라이브러리를 활용한 머신러닝‘처럼 머신러닝 파이프라인의 모든 부분을 다루기엔 지면이 부족합니다. 하지만 다루는 모델의 이론(수식)을 충분히 설명하고 예제 코드를 병행하고 있습니다. 텐서플로를 사용해서는 기본 인공 신경망과 텐서플로에 대한 소개를 먼저 시작합니다. 그리고 심층 신경망을 학습하기 위해 당면한 문제들을 해결하는 여러가지 방법을 소개합니다. 모델 재사용, 여러가지 최적화 알고리즘, 초기화, 규제 등입니다. 보통 GPU나 분산처리 부분은 딥러닝 책의 말미에 나오는 경우가 많은데 이 책에서는 합성곱Convolution 신경망 보다도 먼저 나오고 비중이 비교적 큽니다. 그 다음 합성곱 신경망Convolution Neural Networks에서 합성곱, 패딩, 스트라이딩에 대한 설명 뿐만 아니라 LeNet-5, AlexNet, GooLeNet, ResNet 구조를 상세히 설명하고 있습니다. 순환 신경망Recurrent Neural Networks에서는 직접 간단한 RNN 연산을 만들어 보면서 순환 신경망에 대한 이해를 돕고 있으며, LSTM, GRU와 기본적인 기계번역 RNN 구조까지 설명하고 있습니다. 그 다음 오토인코더Autoencoder, 강화학습Reinforcement Learning을 다루는 장으로 이어집니다.

아래 장별 제목을 옮겨 놓았습니다. 책에 관련하여 궁금한 점이나 리뷰, 추천사에 의향이 있으시면 언제든지 댓글이나 메일 주세요. 앗 그리고 새해 복 많이 받으세요! 🙂

  1. 한눈에 보는 머신러닝
  2. 머신러닝 프로젝트 시작부터 끝까지
  3. 분류
  4. 모델 훈련
  5. 서포트 벡터 머신
  6. 결정 트리
  7. 앙상블 학습과 랜덤 포레스트
  8. 차원 축소
  9. 텐서플로 시작하기
  10. 인공 신경망 소개
  11. 심층 신경망 훈련
  12. 다중 머신과 장치를 위한 분산 텐서플로
  13. 합성곱 신경망
  14. 순환 신경망
  15. 오토인코더
  16. 강화학습
  • 연습문제 정답
  • 머신러닝 프로젝트 체크 리스트
  • SVM 쌍대 문제
  • 자동 미분
  • 인기 있는 다른 인공 신경망 구조

TensorFlow 1.4.0 Release

텐서플로 1.4.0 버전이 정식 릴리즈되었습니다. 이번 버전에서 tf.keras와 tf.data가 코어 API로 들어왔습니다. 이제 대기하고 있던 케라스 책들이 슬슬 나오기 시작할 것 같네요. 🙂

1.4.0 버전에 관한 좀 더 자세한 내용은 릴리즈 노트를 참고해 주세요. 텐서플로는 다음과 같이 pip 명령으로 간단히 설치할 수 있습니다.

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

TensorFlow Eager Execution

오늘 다이나믹 그래프를 지원하는 텐서플로의 Eager Execution 기능이 소개되었습니다. 올해 초에 명령형imperative 스타일의 기능이 텐서플로에 추가되었습니다(TensorFlow 1.1.0 RC2 and Imperative Style). 다음 버전인 1.5.0에서 이 기능이 빠지고 새롭게 Eager Execution으로 추가되는 것 같습니다.

텐서플로의 텐서는 연산 노드를 가리키는 핸들과 같았습니다(TF의 텐서와 상수, 변수, 플레이스홀더). Eager Execution에서 텐서는 데이터를 직접 포인팅합니다. 그래서 tf.Session을 시작하지 않고 직접 값을 얻을 수 있습니다.

>>> import tensorflow.contrib.eager as tfe
>>> tfe.enable_eager_execution()
>>> c = tf.constant(1)
>>> c
<tf.Tensor: id=0, shape=(), dtype=int32, numpy=1>

텐서 c를 확인해 보면 numpy 속성이 생긴 것을 알 수 있습니다.

>>> c.numpy()
1
>>> type(c)
EagerTensor
>>> type(c.numpy())
numpy.int32

Eager Execution은 NumPy와 호환성을 크게 높인 것 같습니다. 계산 그래프의 생성과 실행 단계가 구분되지 않으므로 파이썬의 조건문으로 계산 그래프를 동적으로 조직할 수 있습니다. 이외에도 그래디언트 계산과 동적 모델에 관한 기능들이 많이 추가되었습니다.

Eager Execution은 한번 설정하면 취소할 수 없어서 파이썬 세션을 새로 시작해야 합니다. 또 tf.data와 tf.layers 밑의 클래스를 사용해야 합니다. 아직 파이토치PyTorch 만큼은 자유도가 높아 보이지는 않지만 점점 다른 프레임워크의 장점을 흡수하는 모습은 기대가 됩니다. 텐서플로에 비하면 파이토치 사용자가 극히 적을 텐데도 상당히 의식하는 것 같습니다. 🙂

… we’re looking for feedback from the community to guide our direction.

텐서플로의 종전 API가 그랬듯이 Eager Execution도 향후에 상당히 변화가 많이 있을 것으로 예상됩니다. 좀 더 자세한 내용은 깃허브의 가이드 문서예제를 참고하세요.

Eager Execution을 사용해 보려면 다음 명령으로 텐서플로의 Nightly 빌드를 설치하면 됩니다.

$ pip install tf-nightly
$ pip install tf-nightly-gpu

TensorFlow 1.4.0 RC0 Release

텐서플로 1.4.0 RC0 버전이 릴리즈되었습니다. 1.4.0 버전에서 tf.contrib.data가 tf.data로 바뀌면서 텐서플로 코어로 들어왔습니다. 좀 자세한 내용은 릴리즈 노트를 참고해 주세요.

$ pip install --upgrade --pre tensorflow

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

또 이제부터는 nightly 빌드가 PyPI로 제공됩니다! 깃허브 소스를 직접 컴파일하지 않아도 최신 패치의 텐서플로를 사용해 볼 수 있습니다.

$ pip install --upgrade tf-nightly 
$ pip install --upgrade tf-nightly-gpu

TensorFlow 1.3.0 Release

텐서플로 1.3.0 버전이 릴리즈되었습니다. 1.3.0 버전에 대한 자세한 내용은 릴리즈 노트를 참고해 주세요. 1.4.0 버전부터는 cuDNN 7를 사용해 패키징될 예정입니다. 텐서플로 1.3.0 버전은 이미 PyPI에 등록되어 있어 pip 명령으로 간단하게 설치할 수 있습니다.(tensorflow-gpu에는 macOS 버전이 없습니다)

$ pip install --upgrade tensorflow

$ pip install --upgrade tensorflow-gpu

Andrew Ng launch New DL Courses!

바이두에서 나온 앤드류 응이 세가지 프로젝트를 진행한다고 합니다. 그 중에 먼저 첫 번째로 선을 보이는 것deeplearning.ai로 예고했던 코세라의 Deep Learning Specialization 코스입니다! 파이썬과 텐서플로를 사용하는 이 커리큘럼은 총 다섯개의 코스로 이루어져 있습니다.

  1. Neural Networks and Deep Learning
  2. Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
  3. Structuring Machine Learning Projects
  4. Convolutional Neural Networks
  5. Sequence Models

작년부터 시작한 코세라의 구독 모델이 적용되는 specialization으로 월 $49를 내고 빠른 속도(!)로 주파를 하면 Certificate를 받을 수 있습니다. 돈을 내지 않고 청강을 할 수도 있는데요. 각 코스의 링크로 직접 들어가서 Enroll을 하면 팝업 화면 아래 조그맣게 쓰인 Audit 링크를 누르시면 됩니다. 자세히는 아직 모르지만 전체 커리큘럼의 수준은 intermediate 정도로 보입니다.

deeplearningai

눈에 익은 책상과 모니터네요! 🙂