데이터를 다루는 모든 사람들의 축제인 데이터야놀자(이하 데놀)를 다녀왔다. 다른 콘퍼런스와 다르게 데놀은 말그대로 놀기 위해 "데이터"를 핑계로 모이는 행사이다. 그간 많고 적은 세미나, 콘퍼런스를 다녀봤지만 이렇게 흥나게 노는 행사는 처음이다. 또한 이번에는 일반 참여자가 아닌, "자원봉사자"로 참석하게 됐는데 덕분인지 새로운 세계를 경험하고 뜻 깊은 시간을 보낼 수 있었다. 그럼 그날의 현장을 살펴보도록 하자. (참고로 데놀은 현재 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 에 대한 최소한의 지식이 필요하기 때문에..
주말에 있었던 Google I/O 2017 Extended in Seoul 를 다녀왔다. Mountain View, California 에서 진행된 Google I/O 키노트 내용의 일부를 한국에서 공유하는 자리였다고 볼 수 있는데 현지에서 참여하려면 2017년 기준으로 $1,150 의 입장료가 든다. 이번 행사는 google developer group (GDG korea) 에서 주최한 무료 행사이기 때문에 더욱 매력적이지 않나. 여튼 매우 관심있는 트랙이 몇 개 있었기 때문에 아침부터 서둘러 세종대로 향했다. 나름 두 번째 방문이라 어리버리 하지 않게 도착할 수 있었다.이른시간이라 아직 한적한 모습이다. 혼자 갔기 때문에 포토존은 그냥 관람용... 나중에는 사진 좀 부탁드려야겠다. 남는건 사진이라는데..
앞서 CloudML 개념에 대해서 살펴봤고, 이제 본격적으로 사용하는 방법에 대해서 기술하고자 한다. 우선 모든 예제는 우분투 16.04 에 Cloud SDK 를 설치한 환경에서 진행 되었다. CloudML 의 모든 것이 gcloud 명령어를 통해 진행되기 때문에 OS 의 환경에서 오는 차이는 없을 것이다. 이번 글에서는 CloudML 의 기본으로, 간단하게 Google Cloud Platform (GCP) 에 CloudML 서비스를 맛보는 것으로 마무리 하겠다. 사실 CloudML 자체가 너무 거대한 서비스이기 때문에 하나의 글에 모두 담는다면 처음 접하는 입장에서 스크롤이 상당한 압박으로 다가올 것으로 예상된다. 조금 더 우아하게 사용하는 방법이나 고급 스킬에 대한 부분은 별도의 포스팅으로 하는게 좋..
요즘은 콘퍼런스나 세미나에 다녀보면 머신러닝에 대해 언급하지 않는 곳이 없다. 하물며 비IT 쪽으로 가도 4차 산업혁명이라며 여전히 언급되는데, 그러다보니 다양한 분야의 사람들이 이 분야로 뛰어들고 있는 것이 현실이다. 하지만 그간 vim 만 돌아가면 되는 낮은 사양의 PC로도 문제 없었던 low 레벨 개발자들에게 이 분야는 잔인하기 그지없다. 머신러닝 분야에서 뭔가 해보려면 GPU 는 아니더라도 최소한 적당히 좋은 CPU 가 필요하기 때문인데, 내 경우가 그랬다. 구식 i3 cpu 로 할 수 있는 것이라고는 TensorFlow 에 첫 번째 예제로 등장하는 MNIST 가 전부였으니까. 다른 오픈소스를 돌려보기 위해 회사에서 몰컴(?)을 해보기도. 여튼 이런 환경에 단비 같은 소식이 있다. 바로 Googl..
로컬 PC 에 GCP SDK 를 설치하고 datalab 을 인스톨하면 쾌적한 환경에서 머신러닝 기술을 사용할 수 있는데 한가지 아쉬운 점이 있다. 기본적으로 datalab 의 연결은 localhost (127.0.0.1) 만 사용된다는 것. datalab connect 옵션으로 변경 가능한 부분은 상당히 제한적이고, 그나마 port 를 변경할 수 있는 정도이다. localhost 로의 연결은 일반적인 경우에는 문제 될 것이 없지만 내 경우에는 좀 특수한 케이스라 로컬 PC (1) 에 datalab 을 띄우고 로컬 PC (2) 에서 접근을 희망하는 케이스가 되겠다. (아마도 보안적인 요소 때문에 localhost 만 사용할 수 있도록 고정되어 있는 듯 하지만.)여튼, 다른 로컬 PC (2) 에서도 접근이 ..
Google Cloud Platform 은 기본적으로 web 에서 Cloud Shell 을 제공하지만 앞에서 살펴본 것 처럼 Cloud Shell 자체에 대한 사양이 높지가 않다. 또한 GCP 는 은근히 Cloud Shell 에 대한 의존도가 높기 때문에 Web에서 기본 제공되는 Cloud Shell 로 한계가 있겠다. 의존도가 높은 이유에 대해서 깊게 들어갈 필요가 없지만 가장 간단한 이유는 다양한 기능을 웹보다 터미널에서 빠르게 접근할 수 있다는 점이고 인터넷에 수많은 예제가 터미널 기준으로 설명되어 있기 때문이겠다.자, 이런 저런 이유로 GCP 는 사용자의 로컬 PC 에서 Google Cloud 의 모든 기능을 사용할 수 있도록 하기 위해 SDK 를 제공한다. 사실 이게 핵심이다. 이렇게 SDK 가..
Google Cloud Platform 의 매력을 뽑자면 빅쿼리, CloudML, 기계학습 등 여러가지가 있겠지만 그 중에서도 사용자가 가장 쉽게 접근할 수 있는 Vision API ( Google Cloud 기계학습 API ) 에 대해서 다뤄보도록 한다. 사실 Cloud Platform 을 사용하면서 아쉬운 점이 한글화 된 문서가 부족하다는 점이고 그것이 곧 사용장벽을 높게 만든다는 생각이 든다. 또한 어색한 번역 문서도 문제다. 여하튼, 이 글이 누군가에게 정말 쉬운 문서가 되었으면 하는 바람으로 최대한 쉽게 작성해본다. (그리고 대부분의 Vision API 를 설명하는 블로그가 node.js 기준으로 되어 있어서 내게는 쉽지 않았다.)우선 Vision API 를 사용하기 위해서 화면의 좌측 리스트 ..
어쩌면 가장 중요할 수도 있는 결제 메뉴에 대해서 살펴볼 시간이다. 많은 사람들이 Cloud 를 사용하면서 가장 걱정하는 부분이 사용자가 인지하지 못하는 사이에 사용량이 발생해서 청구되는 돈이겠다. 실수로 인스턴스를 종료하지 않았다던지, 버킷을 유지하고 있다던지 등등이 사유가 있겠다. 이런 부분에 대해서 Google Cloud 는 알림 기능으로 꽤 잘 대응하고 있으므로 걱정하지 말고 사용해도 되겠다. ( Amazon web service 도 마찬가지인 부분이다.)우선 결제 메뉴에 진입해서 화면을 살펴보도록 하자.개요에서는 현재 크레딧에 대한 상태와 결제 계정에 대한 정보를 한눈에 살펴볼 수 있겠다. Google Cloud 는 결제를 계정별로 하거나 프로젝트 별로 할 수 있다는 점을 숙지해놓으면 좋다. 우..
- Total
- Today
- Yesterday