이전 편까지 우리는 CloudML 이 무엇인지 살펴보고 모델을 클라우드에 던지고 결과를 받는 등 CloudML 전체 시나리오에 대한 이야기만 했다. 이번 글에서는 ML job 의 분산학습 아키텍처를 살펴보고 이해하도록 한다. 함께보면 좋은 글CloudML - 개념 CloudML - 기본 CloudML - 실전 심화Scale tierCloudML 은 training 을 돌릴 서버의 사양을 조정할 수 있는 Scale-tier 옵션을 제공하는데 그 안에는 BASIC, STANDARD_1, PREMIUM_1, BASIC_GPU 그리고 CUSTOM 까지 총 다섯가지 종류가 있다. CUSTOM 을 알아보기 전에 다른 네 가지 방식의 사양을 보자. Cloud ML Engine scale tier Compute Eng..
앞에서 CloudML 에 대한 이야기를 많이 했는데 사실 일반 VM instance (Compute Engine) 로 머신러닝을 이용하는 것에 비해 무엇이 좋은지 자세히 다루지 않았다. 이번 글을 통해 몇 가지 장점을 살펴보도록 하자. 비용아마도 가장 큰 장점이 되겠다. 다른 작업은 몰라도 머신러닝/딥러닝은 고사양 시스템을 필요로 하며 프로젝트에 따라 훈련시간이 굉장히 오래걸리기도 한다. GCE 는 사용하지 않을 때 중지하는 것이 비용을 절약할 수 있는 방법인데 딥러닝 training 이 언제 끝날지 알 수 없기 때문에 인스턴스를 무작정 켜놓을 수밖에 없다. 고사양 시스템으로 설정된 인스턴스를, 그것도 GPU 가 장착된 머신이라면 가격은 생각보다 끔찍할 수 있다. 반면 CloudML 은 인스턴스 없이 t..
한 해 동안의 GDG 생활을 마무리 하는 의미로 구글에서 송년회를 열었다. 참석자는 2017년도 동안 Google 행사에서 발표를 했거나 스탭 활동을 하신 분들, 그리고 GDG 운영진으로 구성되었다. 난 아마도 Google Cloud Platform Korea User Group 운영진 자격으로 초대받은 듯 하다. 나중에 들어보니 GCP 도 GDG 라고 (...) 구글 코리아 22층에 도착하니 이미 파티 준비가 끝나있고 명찰과 추첨 티켓을 부여 받았다. 추첨 티켓은 DevFest 재탕인 듯한. ㅎㅎ 내부는 이미 파티 분위기 물씬. 크리스마스 & 연말 분위기 물씬. 많은 음식과 맥주가 제공 되었는데 평소 구글 식당의 퀄리티에는 많이 못미친다는 평을 들었다. 식당 내부는 생각보다 규모가 작았다. 사실 ..
Google Cloud Platform (GCP) Users' United Conference 2017 행사가 지난 12월 22일 성황리에 마무리 되었다. IT 콘퍼런스 오거나이저로 참여한 것은 처음이었는데 정말 멋진 경험이 되서 내심 무척 기쁘고 뿌듯하다. 이 감동을 잊혀지기전에 기록으로 남겨두도록 한다. - 매우 짧은 시간동안 이것저것 나름 구색은 다 갖출 수 있었는데 그 이면에는 어떤 행사던지 마찬가지겠지만 각고의 노력을 해준 스탭이 있겠다. 이번 행사도 총 13명의 준비위원회와 3명의 자원봉사자분들이 함께했다. (++1 명의 전폭적인 지원. 마음껏 행사를 준비해보라는 준비위의 어머니) - 준비위 각자 맡은 역할이 있었는데 그 크기에 상관없이 묵묵히 수행하신 분들 정말 대단하다. 오프라..
앞서 CloudML 의 개념과 기본적인 사용 방법에 대해서 살펴보았고 이번에는 조금 더 실전에 가까운 글을 발행하도록 한다. 기본편에서 로컬 테스트와 클라우드 테스트를 진행했지만 코드의 내용이 단순히 TensorFlow 의 버전을 확인하는 수준이라서 실전에서 사용하려면 막막하거나 여러 장애 요소가 숨어있다. 이번 글에서는 TensorFlow 홈페이지에 있는 샘플 예제 실습을 통해 CloudML 의 울렁증을 극복할 수 있도록 한다. 예제코드 준비 우선 샘플 예제 사용을 위해 TensorFlow 소스코드를 다운로드 받도록 하자. 다운로드 방법은 무엇이든 상관없고 여기서는 GitHub 을 통해 받는 것으로 한다. 소스코드를 받았으면 이제 샘플 예제를 살펴보아야 하는데 예제에 대한 자세한 설명은 홈페이지를 참고..
Google 에서 또다시 엄청난 것을 일반에 공개했다. 바로 Colaboratory 라는 것인데, Jupyter Notebook 의 협업판 이라고 생각하면 되시겠다. 원래 구글 내부에서 직원들이 사용하던 것인데 이번에 신청만 하면 바로 사용이 가능하게 되었다. (기본 제공은 아직 아닌듯.) 신청하면 1시간 내에 accept 되니 일단 선신청하고 용도는 천천히 생각해보시라. 신청은 아래 URL 에서 진행하면 된다. 신청: https://colab.research.google.com/ 자, 그럼 도대체 Colaboratory 가 무엇인지 조금 더 살펴보도록 하자. Google 에서 기본적으로 제공되는 많은 문서가 있는데 이것들의 장점이라고 하면 로컬 PC 가 아닌 클라우드 환경에서 작업이 되기 때문에 공유가..
캐글(Kaggle)은 2010년 설립된 예측모델 및 분석 대회 플랫폼이다. 기업 및 단체에서 데이터와 해결과제를 등록하면, 데이터 과학자들이 이를 해결하는 모델을 개발하고 경쟁한다. 2017년 3월 구글에 인수되었다. (위키백과) 데이터 분석/엔지니어가 각광받고 머신러닝/딥러닝 기술이 발전함에 따라서 매우 빠른 속도로 성장하고 있는게 바로 캐글 플랫폼이다. 플랫폼 안에는 다양한 데이터가 존재하고 다른 사용자/팀의 코드(커널)와 설명을 확인할 수 있기 때문에 많은 것을 배울 수 있다. 말하자면 개발자가 코드로 이야기 하기 위해서 GitHub 을 사용 하듯이 데이터를 다루는 사람은 캐글로 이야기 한다. 그렇다면 이러한 캐글 플랫폼에는 어떤 것들이 있고 어떻게 사용할 수 있는지 천천히 살펴보도록 하자. htt..
*NIX 머신에 SSH (혹은 Telnet) 로 원격 접속을 하고 프로세스를 백그라운드로 실행하는 경우에 로그아웃(exit)시 실행 됐던 프로세스가 중지 되버리는 현상을 보게 된다. 이는 원격으로 접속한 Shell 이 SSH 연결을 끊는 경우 종료되면서 자식 프로세스에 모두 STOP 시그널을 전송하기 때문인데 이것을 회피하는 몇 가지 방법을 기술한다. 의존 관계 없이 백그라운드로 실행 prog.sh > /dev/null >2&1 & 모든 output 을 생략하고 백그라운드로 실행. 부모와 Shell 과 의존이 없기 때문에 SSH 연결이 종료 되어도 prog.sh 은 계속 실행 상태를 유지한다. nohup nohup prog.sh & 말 그대로 HUP 신호를 무시하는 명령어이다. 보다 자세한 설명은 위키를..
데이터를 다루는 모든 사람들의 축제인 데이터야놀자(이하 데놀)를 다녀왔다. 다른 콘퍼런스와 다르게 데놀은 말그대로 놀기 위해 "데이터"를 핑계로 모이는 행사이다. 그간 많고 적은 세미나, 콘퍼런스를 다녀봤지만 이렇게 흥나게 노는 행사는 처음이다. 또한 이번에는 일반 참여자가 아닌, "자원봉사자"로 참석하게 됐는데 덕분인지 새로운 세계를 경험하고 뜻 깊은 시간을 보낼 수 있었다. 그럼 그날의 현장을 살펴보도록 하자. (참고로 데놀은 현재 3년째 10월 두번째 주의 금요일에 진행되고 있고 매년 큰 행사로 발전하는 중이다) 시간표에서 볼 수 있듯이 매우 흥미로운 트랙들이 즐비해있다. 참여하는 우리는 흥만 챙겨서 즐기기만 하면 된다. 행사장은 홍대에 있는 한빛미디어 신사옥에서 진행됐다. 집에서 생각보다 너무 멀..
python 에는 다차원 배열을 다루는 numpy 라는 유용한 라이브러리가 있는데 여러 분야에서 강력하게 사용될 수 있으므로 사용법을 익혀두도록 한다. 특히 머신러닝의 연산과정을 이해하기 위해서는 필수라고 할 수 있겠다. 이번 포스팅은 실습코드가 많기 때문에 특별히 Jupyter notebook 을 통해 내용을 기록하도록 한다. numpy 모듈 사용¶우선 실습(혹은 사용)을 위해 numpy 를 import 하도록 한다. 설치되어 있지 않다면 주석처럼 설치하면 된다. In [1]: # pip install numpy import numpy as np numpy 모듈을 불러와서 앞으로 np 라는 이름으로 alias 하겠다는 의미 정도로 생각하면 좋다. numpy 배열의 생성과 이해¶ In [2]: arr =..
새로운 버전의 datalab 이 나오면 많은 것들이 변경이 된다. 이를테면 지원하는 python 버전이라던가, tensorflow 같은 모듈의 버전이라던가 말이다. 당연히 최신 버전이 안정성 측면에서도 좋고, 새로운 모듈을 사용할 수 있다는 점에서도 매력적이기 때문에 업그레이드를 하려고 하는데 방법을 알기 쉽지 않다. 우선 웹 콘솔에는 그러한 기능이 보이지 않는다. 사실 제일 먼저 떠오르는 아이디어는 datalab 인스턴스를 새로 만드는 것인데, 기존에 작성했던 notebook 에 마음이 쓰인다. 그간 작성한 notebook 이 몇 갠데 새로 인스턴스를 만들라니! 뭐 이것도 노가다(?)로 하나씩 옮기면 되긴 하겠지만 말이다. 그래서 여기 datalab 버전을 업그레이드 하는 조금 더 스마트 한 방법을 소..
python 이 매력적인 (많고 많은) 이유 중에 여기서 두 가지 뽑자면,◎ 하나의 머신에서 독립적인 가상환경 (여러가지 방법으로) 구축이 쉽다. ◎ 웹에서 강력한 인터프리터 IDE (jupyter notebook)를 사용할 수 있다.우선 첫 번째 언급 된것 처럼 우리는 하나의 머신(PC, 서버, 클라우드 등)에서 로컬 환경을 더럽히지 않고 독립된 가상공간을 만들어 python 프로젝트를 운영할 수 있다. 이 말의 뜻은, 흡사 virtualbox 처럼 hostOS 위에 가상의 VM 을 올려서 독립적으로 운영하는 것과 유사한 개념으로 볼 수 있다. hostOS 위에 올라간 VM 은 서로 간섭 없이 운영될 수 있다. 즉, 두 개의 VM 에 각각 설치된 모듈이나 라이브러리는 다른 VM 에 영향을 주지 않는다 ..
OpenSource 를 보거나 동적 메모리 관련 교육을 살펴보면 아래와 같은 코드를 종종 볼 수 있다. 아래 코드는 사용한 메모리를 해제하는 구문이다.free(pointer); pointer = NULL; 사실 free 만으로 메모리는 해제되지만 문제가 되는 부분은 해제된 메모리 영역이 우연찮게 다른 곳에서 사용되는 경우 프로그램의 오동작을 피하기 어렵다는 것. 또한 디버깅에도 쉽지 않다. 아래 코드를 통해 극단적인 예시를 살펴본다.#include #include #include int main(void) { char *str = NULL; int *addr = 0; str = (char *)malloc(10); strncpy(str, "test", strlen("test")); printf("str(%..
Google Cloud Platform (GCP) 가 막강한 이유중에 하나가 이미 잘 만들어진 API 를 기반으로 제2, 제3의 서비스를 손쉽게 만들 수 있기 때문이겠다. 많은 전문가들의 이야기처럼 지금 세상은 유용한 API 에 대해 실제 내부 동작을 몰라도 그 서비스를 wrapping 하는 모듈을 만들어 장사를 하는 세상이다. 이렇듯 누구나 쉽게 사용할 수 있도록 소프트웨어를 API 형태로 배포해서 서비스하는 것을 보통 SaaS (Software as a Service) 형태라고 칭하는데, 이번에는 GCP 에서 제공하는 대표적인 SaaS 중 하나인 speech api 에 대해 살펴보고 사용해보도록 하겠다. - 앞서 이야기한 SaaS 에 대해 설명하는 재미있는 링크를 여기 첨부하도록 한다. 개념을 잡는데..
Container Engine 사용을 멈출 필요가 있을 때가 있다. 대부분이 테스트를 위해 사용하다가 바쁜 일정 등으로 잠시 서비스를 꺼둘 때 일 텐데 Google Cloud Platform (GCP) 콘솔에서는 어떤 이유에서인지 관련된 기능을 찾아보기 힘들다. 더 솔직히 이야기하면 설정은 있지만 설정을 할 수가 없다 (?) 이런 말장난을 하는 이유는 Container Engine 은 애초에 종료 ( Terminate 혹은 Stop ) 의 개념이 없기 때문이다. 단순하게 노드 풀의 사이즈를 주지 않으면 그게 곧 종료를 나타내는데 콘솔에서는 이 설정이 불가능하다. "크기는 양의 정수여야 합니다." - 구글님, 0 도 포함시켜 주시죠..?하지만 걱정할 필요 없다. 왜냐하면 GCP 는 이미 터미널 기반으로 모..
국내 최대 규모의 파이썬 콘퍼런스 (파이콘) 에 참여. 주말 양일간 진행되었는데 개인적인 사정으로 토요일은 건너가고 일요일에 나왔다. 일요일은 9시 50분 부터 등록인데 다소 빨리왔는지 한적한 광장의 모습. 하루에 약 천여명의 사람들이 다녀갈만큼 금방 혼잡해진다. 이번 파이콘은 back to the basic 이라는 컨셉으로 진행되었는데 그에 걸맞게 참여한 사람들의 이름으로 namewall 을 만들었다. 글자 하나하나에 이름이 빼곡히 적혀있다. 힘들게 내 이름도 찾음. S 를 담당하고 있다. 이름 찾기 놀이는 뒤로 하고 여러가지 재미있는 트랙이 많이 있었는데, 시대적인 흐름에 맞게 머신러닝에 대한 이야기가 특히 많았고 게으른 개발자를 위한 크롤링도 재미있게 들었다. 다소 비싼 등록비..
지난주 금요일 부터 난해한 문제가 있었는데 charset 관련 된 내용이었다. 요약하면 윈도우에서 만들어진 Zip 파일을 리눅스 서버에서 압축 풀었을 때 이름이 utf8 형식이 아닌 다른 언어셋으로 되어있는 경우에 문자가 깨지는 문제인데, 예를 들면 윈도우에서 만들어진 한글 파일명이 그러했다. 깨지는 이유는 Zip 에는 그 안에 들어있는 파일명에 대한 charset 정보가 없기 때문. 이 문제를 해결하기 위해 세 가지 방법을 생각했다.1. 서버가 redhat 기반의 리눅스인데 redhat 에서 기본 제공되는 unzip binary 가 아닌 debian 에서 제공되는 unzip bianry 를 가져다 쓴다. 이유는 간단하다. debian 에는 압축을 풀 때 언어셋을 지정하는 옵션이 있다. (버전이 레드햇,..
Google Cloud Platform (GCP) 에서 제공해주는 notebook 인 datalab 은 정말 편한 개발 도구라고 할 수 있다. 어디서든 개발이 가능한 환경을 제공해 줄 뿐만 아니라 Markdown 을 지원함으로써 주석보다 훨씬 더 나은 효과를 기대할 수 있게 해주는데 딱 한 가지 아쉬운 점이 있다. 그것은 바로 활용성이다. 노트북 자체가 교육 용도나 소규모 프로젝트에 많이 사용되다보니 콘솔에서 실행을 해야 하는 다른 것들과 호환이 어렵다는 점이다. 예를 들어, datalab 에서 개발되는 스크립트가 crontab 에서 주기적으로 돌아야 하는 Python 스크립트이거나, CloudML 을 통해 기계학습을 수행해야 하는 코드 등이 있겠다. 사실 이런 문제는 비단 datalab 뿐만 아니라 J..
Container Engine 의 기본 개념에 대해서 살펴보았고 이번에는 Google Cloud Platform (GCP) 에서 Container Engine 을 사용하기 위한 준비단계에 대해서 다뤄보도록 한다. 과정중에 Kubernetes 의 내부를 간단한 다이어그램을 통해 살펴볼 것이다. 우선 Cluster 라는 것을 생성하기 위해 다음 화면과 같이 좌측 메뉴에서 [Container Engine] 카테고리를 선택하도록 하자. [컨테이너 클러스터 만들기] 메뉴를 통해 클러스터를 생성하도록 한다. (여러 개의 Container 를 묶어서 하나의 시스템처럼 동작하도록 하는 개념을 Container cluster 라고 부른다. cluster 라는 단어는 범용적으로 사용되기 때문에 이해하는게 어렵지 않다.) ..
Google 의 Container 기술 구글은 10년 이상 전부터 리눅스 컨테이너 기술을 관리해 오면서 3개의 Container management systems 을 구축 했는데, 통합 Container Cluster Manager Borg 로 시작해서 차세대 Container Cluster Manager Omega, 그리고 이제부터 살펴볼 Kubernetes (보통 쿠버네티스 라고 읽음)가 있겠다. Kubernetes 는 오픈소스 프로젝트 이기 때문에 GitHub 에 소스가 공개되어 있고 필요하다면 contribute 하거나 Apache License 2.0 에 맞게 사용하면 된다. 사실 Kubernetes 를 사용하기 위해서는 가상화 기술이나 Container 에 대한 최소한의 지식이 필요하기 때문에..
- Total
- Today
- Yesterday