안녕하세요. 


docker image를 이용해 windows PC에서 텐서플로우를 사용하는 방안 에 덧붙여 이번에는 클라우드 환경에서 텐서플로우 딥러닝 개발을 할 수 있는 방안을 검토해 본 결과를 공유합니다.

요약하면, 다음과 같습니다.

  • 아마존 웹 서비스 기반 
    • 장점: GPU를 활용한 컴퓨팅 파워로 방대한 데이터로 인해 학습 시간이 많이 소요될 경우 활용 가치가 높음
    • 단점: 시간 당 사용 비용 모델(성능에 따라 대략 시간 당 천원에서 4천원 꼴)로 모델링 검증 완료 후 효과적으로 활용 필요

  • 구글 클라우드 플랫폼 기반
    • 장점: 베타 버전이라 요금이 싸고 텐서플로우를 개발하는 주최가 구글이라 빠른 개선이 기대됨.
      60일 무료 기간을 이용해  온라인에서 놀이터(playground) 목적으로 모델링을 하거나 학습이 오래 걸리더라도 상관없는 경우에 활용할 가치가 많음
    • 단점: 지금까지는 GPU 기반 컴퓨팅을 활용할 수 없는 것으로 보이고 preview인 cloud machine learning 서비스가 오픈되면 재 검토 필요




다량의 컴퓨팅 능력을 요하는 텐서플로우의 특성 때문에 연구에 있어 컴퓨팅 기기의 수요가 많은데 클라우드 서비스를 통해 대여해서 사용할 수 있다는 점에 착안하여 다음 양대 클라우드 서비스를 필두로 조사를 시작했습니다.

  1. 아마존 웹서비스(AWS)
  2. 구글 클라우드 플랫폼 (GCP)

1. 아마존 웹 서비스로 텐서플로우 구축하기


전자의 경우, 인스턴스를 구축하고 직접 관련 서비스를 설치하는 IaaS 형태로 필요한 하드웨어를 직접 설정하거나 정해진 목적에 따라 marketplace를 통해 손쉽게 인스턴스를 구축할 수 있도록 제공합니다. 검색 결과 64 bit linux 기반에 GPU를 이용하는 아마존 머신 이미지 (AMI) 가 등록되어 있음을 찾을 수 있었습니다. 



현재 소프트웨어 사용료 없이 EC2 사용료만 부과되고 아마존은 지역(region)에 따라 사용료가 달라지는 특성 상 글을 작성하는 시점에서 가장 저렴한 지역 (미국 동부지역) 기준으로 시간당 0.65 달러 / 2.6달러이며 (한국 돈으로 환산하면 대략 천원 내외/ 4천원 내외 예상) 각각의 하드웨어 스펙은 다음과 같습니다.

가격 발생 부담 때문에 직접 사용해보고 평가하지는 못했는데 추후 각각의 성능을 검토해 볼 예정입니다.


2. 구글 클라우드 플랫폼으로 텐서플로우 구축하기

후자인 GCP는 AWS와 다르게 PaaS 나 SaaS 형태가 두드러지며 각각 Products 를 활용해 Solutions 을 구축하는 방법을 가이드 하는 형태로 제공합니다.


최근 소식에 따르면 구글에서 TensorFlow 를 활용한 클라우드 기계학습 플랫폼을 준비중인데 아직 limited preview 단계라 활용 사유를 적고 대기해서 선정되어야만 활용할 수 있어 아쉬웠습니다.


그렇다고 클라우드에서 텐서플로우를 사용할 수 없는 것만은 아닙니다. 아래 링크는 시계열 금융 데이터로 기계학습한 사례를 다루고 있는데 이때 GCP의 또다른 제품인 Cloud Datalab를 활용하고 있음을 알 수 있었습니다.

https://cloud.google.com/solutions/machine-learning-with-financial-time-series-data


이 서비스의 특징은 원 클릭으로 Google App Engine과 Google Compute Engine을 이용해 Google BigQuery, IPython 및 TensorFlow를 지원하는 jupyter server를 생성해 주는데 다음과 같이 VM 기본 설정이 그다지 좋지는 않습니다.

  • 머신유형: n1-standard-1 (CPU 1개에 4GB 의 메모리를 가진 Intel Haswell 플랫폼)
  • 100 GB 스토리지

AWS 에 비해 활용 측면과 가격 측면이 유리하다고 판단되는데 datalab의 경우 현재 베타 버전인 관계로 App Engine 가격 정책만 따른다고 명시되어 있어 부담없이 신규 인스턴스를 만들어 수행해 볼 수 있습니다. 자세한 사용법은 다음 링크를 참고하시면 됩니다.

https://cloud.google.com/datalab/docs/quickstart   

GCP는 현재 신규 가입 시 60일 간 무료 사용에 500달러를 추가 제공하고 있으니 이 기간동안 활용해 보면서 성능을 평가해보려고 합니다.

다음은 생성된 인스턴스로 동작하는 jupyter service 입니다.

기존 활용했던 docker image 기반의 설치형 jupyter와 가장 큰 차이점은 git 리포지토리와 연결 할 수 있도록 기본 제공한다는 점입니다. 클라우드 서비스의 특성 처럼 시간이 지날 수록 개선될 것으로 보입니다.

이후 이 서비스를 기반으로 학습 시간이 많이 소요되는 benchmark를 선정해 수행하고 수행시간을 비교해 보고자 합니다.

이상입니다.


P.S. 마지막으로 설치된 텐서플로우의 버전이 궁금해서 확인할 방법을 찾았으나 마땅히 검색되는 것이 없더군요. 흥미로운 점은 python 텐서플로우 모듈의 버전을 출력해 보면 0.8.0 기준으로 설치한 docker image와 Cloud Datalab 모두 0.7.1 로 출력됩니다.

갑자기 텐서플로우의 버전 관리 (versioning) 가 제대로 이뤄지고 있는지 의구심이 들었습니다. :-(

  


안녕하세요.


한동대 김인중 교수님이 인공지능 및 기계 학습 관련 동향을 정리한 보고서가 있어 공유 및 보관 차원에서 스크랩합니다.

기계학습의 발전 동향, 산업화 사례 및 활성화 정책 방향


아래는 기록 차원에서 윗 글의 요약을 발췌한 것입니다.
되도록 원문을 읽어 보시길 권합니다.


Executive Summary

■ 인공지능 기계학습의 산업적 중요성

– SW는 이제 국가 전체의 경쟁력 확보를 위한 필수 요소가 되었다. 해외 선진 기업들은 고도화된 SW기술을 기반으로 전통적인 IT 분야 뿐 아니라 자동차, 의료, 경제, 교육, 문화 등 거의 모든 분야에서 혁신을 주도하고 있다.
– 인공지능 기계학습의 발달은 지적 활동의 자동화에 대한 가능성을 열고 있다는 점에서 그 파급 효과가 매우 크고 광범위할 것으로 전망된다.
– 최근 딥러닝을 중심으로 급격히 발전한 기계학습 기술은 실용화를 위한 요구 수준과 실제 인공지능 기술간의 격차를 크게 좁히며 다양한 지능형 시스템의 출현을 예고하고 있다.
– 인공지능 기계학습은 많은 양의 데이터가 발생하는 빅데이터나 사물인터넷 시대에 필수적인 핵심 SW기술이다.
– 구글, 테슬라를 비롯한 선진 SW기업들은 기계학습 기술을 스마트카, 핀테크, 스마트 헬스케어 등 고부가 가치 융합분야에 적용하여 새로운 가치를 창출하고 있다.

■ 기계학습 및 딥러닝 기술 소개

– 현재 기계학습 기술은 딥러닝을 중심으로 매우 급격히 발전하고 있다.
– 딥러닝은 데이터로부터 고수준의 정보를 학습하는 기술로 주로 깊은 신경망에 기반한다.
– 딥러닝의 핵심 방법론으로는 사전학습(pre-training) 알고리즘, 컨볼루션 네트워크(CNN), 순환신경망(RNN) 등이 있다.
– 딥러닝은 다양한 분야에 적용되어 기존 방법을 압도하는 탁월한 성능을 보이며, 인공지능 시스템의 실용화에 대한 기대를 높이고 있다.

■ 기계학습 기술의 최근 발전 동향 및 산업화 사례

– 기계학습 분야에서 최근 이루어진 주요 발전 내용은 새로운 딥러닝 모델 및 계층의 개발, 새로운 학습 알고리즘 및 학습 결과의 이해 방법, 딥러닝과 기존 방법론을 결합한 새로운 응용의 발굴 등이 있다.
– 구글, 마이크로소프트, 페이스북, 지멘스, 캐스피다, 크리테오, 아마존, NVIDIA 등의 선진 기업들은 기계학습 기술을 인터넷 서비스, 생산공정, 우편자동화, 의료, 보안, 광고, 배송, 지능형자동차 등 다양한 분야에 적용하여 수익을 창출하고 있을 뿐 아니라 새로운 시장을 개척하면서 주도권을 확보하고 있다.

■ 해외에서의 기계학습 기술 발전 및 산업 활성화 성공 요인

– 기계학습의 학문적/산업적 성공의 배경에는 학계의 뛰어난 리더들, 풍부한 공개 데이터, 지속성 있는 기술 컨테스트에 의한 성능 중심의 기술경쟁, 오픈소스, 연구성과 공유를 위한 빠른 출판 미디어, 연구 성과의 언론 보도에 의한 대중적 이슈화 등이 있다.
– 반면 우리나라에서는 전문 인력의 양적/질적 부족, 학습/평가 데이터의 부족, 성능보다 SCI 논문 중심의 경직된 평가제도 등이 기술 발전과 산업화의 장애물이 되고 있다.
– 기계학습 기술 발전 및 산업 활성화를 위해서는 이 같은 장애물들을 극복하고 해외에서 성공적이었던 제도 및 문화를 도입하여 좋은 기반을 구축하는 것이 필요하다.

■ 기계학습 기술 발전 및 산업 활성화를 위한 정책적 방안

– 기계학습 기술에 의한 변화에 효과적으로 대응하지 못할 경우 산업 전반에 있어서 세계적 추세를 따라가지 못하고 경쟁력을 잃어버릴 가능성이 있다. 따라서 기계학습 기술 발전 및 산업화에 대한 정부 차원의 큰 그림과 체계적 추진 및 지원이 요구된다.
– 깊이 있는 기계학습 전문가를 육성하기 위해서는 오픈소스를 활용한 응용 연구 뿐 아니라 방법론 중심의 심도 있는 연구에 대한 지원이 필요하다.
– 기술 컨테스트를 지속적으로 개최하여 현실적 문제들을 제시하고, 참가팀들의 기술을 성능 중심으로 평가한 후, 그 결과를 공개한다면 해외의 사례와 같이 학계 및 산업계의 투명성을 높이고, 논문보다 성능 중심의 실질적 연구를 장려하는 효과를 거둘 수 있을 것이다.
– 기계학습에 필수적인 학습/평가 데이터와 컴퓨팅 인프라를 구축하고 기술 컨테스트와 연동하여 제공한다면 정부의 지원이 실질적인 핵심 기술의 개선으로 이어지도록 유도할 수 있을 것이다.

안녕하세요.

TensorFlow docker image 를 윈도우즈에 설치하기

지난 포스트에서  docker의 마법을 활용해 (심지어 윈도우즈에다TensorFlow를 한 방에 설치해서 바로 활용하는 법을 정리한 바 있습니다.

이번에는 생성한 컨테이너를 다시 실행하거나 업데이트 하는 방법을 소개하고자 합니다. 이번 내용은 다음 도커 가이드에서 발췌하여 적용한 사례에 관한 부분입니다.


Docker 기본 사용법


앞서 docker에 대한 개념은 이해할 필요가 있는데 상위 링크에 자세한 설명이 있으니 참고하시기 바랍니다.


1. 컨테이너 시작


가상 머신을 수행하는 기기가 종료되면 (당연히) 여기서 (몰래) 돌고 있던 jupyter with TensorFlow server 역시 종료되게 됩니다. 따라서 Docker Quickstart Terminal를 다시 수행해야 합니다.


이때 설치된 컨테이너를 확인하기 위해 다음 명령을 수행합니다.


$ docker ps -a


상기 명령의 결과로 출력된 컨테이너 리스트 중에서 STATUS 항목으로 현재 수행 여부를 NAMES 에서 지정된 이름을 알 수 있습니다. 컨테이너가 수행 중이지 않다면 아래 명령과 더불어 NAMES 에 지정된 이름으로 해당 컨테이너를 실행시킬 수 있습니다.


$ docker start {컨테이너 이름}


 

2. 컨테이너 업데이트 하기


기본 사용법에 따르면 docker attach {컨테이터 이름} 을 통해 컨테이너에 접속할 수 있으나 활용 중인 TensorFlow container는 접속 시 console 없이 jupyter log 메시지만 출력하고 있는 관계로 아무런 명령을 수행할 수 없습니다. 따라서, 다음과 같이 외부에서 컨테이너에 명령을 수행할 수 있는 인터페이스를 활용하고자합니다.


docker exec {컨테이너 이름} {명령어 ... }


명령어는 bash shell에서 동작하는 대부분이 전달되는 것으로 보입니다. 

확인 차원에서 jupyter 의 확장 기능인 IPython Clusters 를 설치해 보았습니다.

자세한 설치 방법은 ipyparallel github guide를 참조했습니다.


$ docker ps

CONTAINER ID        IMAGE                            COMMAND             CREATED
             STATUS              PORTS                              NAMES
8eb60a8f3211        b.gcr.io/tensorflow/tensorflow   "/run_jupyter.sh"   5 weeks
 ago         Up 29 minutes       6006/tcp, 0.0.0.0:8888->8888/tcp   focused_yonath
$ docker exec focused_yonath pip ipyparallel


이와 같은 방식으로 컨테이너 외부에서도 추가 모듈을 설치하거나 업데이트할 수 있습니다.

+ Recent posts