코엑스 그랜드볼룸에서 진행된 Next'19 Recap 행사에 다녀왔다. 매년 샌프란시스코에서 연례행사로 진행되는 Cloud Next의 한국버전이라고 생각하면 쉬운데 구글 코리아에서 진행한 행사이다. 내 경우에는 일반적인 컨퍼런스 참여나 오거나이징 하는 것과는 다르게 이번 행사는 커뮤니티라운지를 운영하는 위치로 참여했다. 라운지 안에 모든것은 이미 클라우드팀에서 세팅해줘서 맘편히 놀기만 하면 됐던, 그런 행사가 되시겠다. 함께 운영하신 분들의 이름은 GDG :-) 커뮤니티 라운지의 출입이나 게임 랭크보드 관리, 팝콘, 음료 등 이용하시는 분들에게 필요한 대부분의 편의시설은 라운지 안에 흰색티셔츠를 입고 계신 스태프분들이 도와주셨다. 그럼 GDG는? 라운지를 이용하시는 분들의 네트워킹을 돕거나 기술에 대한 ..
쏟아지는 GPU 속에서 무엇을 선택해야 하는지 고민한 경험은 누구나 있을 듯 합니다. 가격도 만만치 않을 뿐더러 구입했을 때 원하는 목적대로 사용하지 못하면 낭패니까요. 저도 이런 경험이 있습니다. 이런 고민 해소를 위해 벤치마킹 자료까지는 아니더라도 그래픽 카드를 나열해두고 비교할 수 있는 자료가 있었으면 좋겠다고 생각한 적이 있습니다. 그래서 틈틈이 준비해봤죠. 우선 그래픽카드를 선택하는데 가장 큰 부분을 차지하는 CUDA 코어를 비교해봤습니다. (CUDA 코어로 명시한건 현재 NVIDIA 제품만 대상으로 했기 때문입니다) 그래픽카드가 쌍으로(per GPU) 탑재되거나, 세부 모델이 나뉘는 경우는 그래프에는 표기하지 않았습니다. 또한 현재는 NVIDIA제품만 비교했지만 시간 될 때 지속적으로 추가시킬..
본 게시물에서 사용된 대부분의 이미지는 아래 링크로부터 첨부되었으며 해당 자료를 통해 많은 영감을 얻었습니다. http://iscslp2018.org/images/T4_Towards%20end-to-end%20speech%20recognition.pdf 하루가 멀다하고 기계가 인간을 뛰어넘는 분야가 늘어나고 있습니다. 구글 딥마인드를 필두로 여러 분야가 정복되고 있는데 2017년 알파고는 절대 정복 할 수 없다고 평가되던 바둑 분야에서 이세돌 9단을 상대로 승리를 거뒀으며 알파스타의 등장으로까지 이어졌습니다. 알파스타는 세계 1위에 프로게이머를 상대로 거둔 승리는 아니었지만 게임 분야에서 충분한 가능성을 보여줬습니다. 아무튼, 여러분야에서 두각을 나타내고 있는 기계학습은 이미지 인식의 경우에는 2015년..
4월에 Next'19 Cloud Hero를 놓쳐서 아쉬워하던차에 5월에 진행된 I/O에도 Cloud Hero 게임이 오픈되었다. 뒤늦게 알아차려서 7일은 넘어갔지만 모든 날짜에 진행되는 게임 내용은 같다. 쉽게 이야기하자면 점수가 각 날자별로 다르게 측정된다고 생각하면 된다. 게임은 전세계에 있는 모든 사람들과 경쟁하는 시스템이고 퀵랩(Qwiklabs)에서 진행된다. 다만 일반적인 링크가 아닌 Cloud Hero 게임을 위한 링크가 제공되고 그 위에서 미션을 진행하는 시스템이 되겠다. 그 미션은 아래와 같다. 총 세 가지 미션이 주어지는데 모두 Google Cloud Platform 위에서 서비스를 만들어가는 것인데 기본적인 것은 GCS(Google Cloud Storage)를 생성하고, 생성한 stor..
GPU를 사용하는 머신러닝 환경을 구축하기 위해서는 virtualenv, anaconda 등 파이썬의 가상환경을 통한 다양한 방법이 제시되는데 이와 같은 환경에는 문제가 하나 있다. 바로 다양한 버전의 CUDA를 사용하는데 상당히 제한적이라는 것인데, 이게 왜 문제가 되는가 하면 여려가지 전제를 이야기 할 필요가 있다. 보통 다양한 버전의 CUDA를 필요로 하는 경우는 여러개의 프로젝트를 병행으로 개발하는 상태이고 한개의 워크스테이션(혹은 클라우드 인스턴스)에 여러명의 엔지니어가 접속해서 작업을 진행하게 된다. 이때 A라는 엔지니어가 잘못 건드린 글로벌한 CUDA 설정이 B 개발자에게까지 영향을 줄 수 있는 상황이 충분히 존재한다. 이건 혼자 사용하는 머신이라도 마찬가지다. 참담하게도 이런경우에는 시스템..
한글 자소분리를 처리하기 위해서는 Unicode에 대한 이해가 필요합니다. 우선 위키피디아에 정의되어 있는 한글 음절에 대해 살펴보도록 하시죠. https://ko.wikipedia.org/wiki/한글_음절 우선 여기서 잘 확인하고 넘어가야 하는 부분이 초성, 중성, 종성을 이루는 문자들과 그 개수입니다. 초성 : ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ (19개) 중성 : ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ (21개) 종성 : ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ (28개) 종성의 경우에는 종성이 없는 경우를 위해서 빈 문자도 포함해서 28로 취급합니다. 예를들면 "가", "우", "소" 등이 종성이 없는 경우가 있겠죠. 또한 위 링크에서 확인한 한글문자코드의 범위는 0xAC00(가) ~ ..
작년 Next'18 Extended에서 발표를 한게 엊그제 같은데 벌써 1년이 지났다. 매년 구글은 샌프란시스코에서 Google Cloud에 새로운 기술을 공식적으로 발표하고 announce하는데 그것이 세계 각지에서 Extended라는 이름의 행사로 다시 태어난다. 대개는 GDG, 혹은 사용자 그룹 커뮤니티에 의해서인데 이번 Next'19 직후 세계 Extended 현황을 보면 다음과 같다. 작년에는 발표자로 참석했었는데 올해는 GDG Cloud Korea의 organizer로 행사 준비와 발표를 동시에 진행하게 되었고, 그로인해서 여러가지 것들을 신경써야 했고 더 뜻 깊게 보낼 수 있었던 것 같다. 준비하는 과정에서 스트레스가 없었다면 그건 거짓말이지만 결과적으로 순조롭게 행사를 잘 마무리 할 수 있..
본 포스팅에서는 링크드인에 코세라 자격증을 추가하는 방법을 알아보도록 합니다. 우선 코세라에 본인 계정으로 로그인 후에 [나의 강좌]로 이동합니다. 그리고 아래 이미지처럼 "성취도"로 표시되어 있는 카테고리를 선택하도록 합니다. 해당 페이지에서는 그동안 본인이 이수했던 강좌 목록을 확인할 수 있습니다. 많이 보이시나요? 아니면 더 분발해야겠다는 생각이 드시나요? 일단 여기서는 제가 수료한 Launching into Machine Learning 강좌를 예로 들겠습니다. 이제 링크드인에 게시할 강좌에 "LinkedIn에 추가"를 선택합니다. 그럼 아래와 같이 링크드인에 자격정보 등록을 위해 필요한 입력 값들이 모두 출력됩니다. 이제 이 값들을 링크드인에 하나씩 복사해서 붙여넣기 해주시면 됩니다. 위에서 복..
구글 스터디잼 중에서 머신러닝 중급 과정을 통해 코세라 강의를 한달동안 무료로 수강할 수 있는 기회를 얻었습니다. 이번에 학습하게된 코스는 Launching into Machine Learning 으로 해당 과정에서는 머신러닝의 역사적인 이야기부터 모델, 하이퍼파리미터, GCP Datalab, 빅쿼리 등 폭 넓은 내용을 다루고 있습니다. 코스중에는 Tensorflow 홈페이지에서 제공되는 playground를 통해서 다양한 하이퍼파라미터와 hidden layers를 설정하면서 여러가지 현실적인 문제를 직접 경험할 수 있도록 유도하는 과정도 있습니다. 그 과정에서 자연스럽게 하이퍼파라미터 튜닝의 중요성을 깨우치게 될 것으로 기대됩니다. batch size에 따라서 loss가 어떻게 변화하는지 상세하게 다룹..
>>> import tensorflow as tf ModuleNotFoundError: No module named 'numpy.core._multiarray_umath' ImportError: numpy.core.multiarray failed to import The above exception was the direct cause of the following exception: Traceback (most recent call last): File "", line 968, in _find_and_load SystemError: returned a result with an error set ImportError: numpy.core._multiarray_umath failed to import I..
docker container 내부에서 pytorch 로 기계학습을 진행하는 도중에 아래와 같은 에러메시지가 발생되는 경우가 있습니다. RuntimeError: DataLoader worker (pid 13881) is killed by signal: Bus error. 위 에러는 도커로 컨테이너를 생성하게 되면 호스트와 컨테이너는 공유하는 메모리 공간이 생기게 되는데 이 공간에 여유가 없어서 발생되는 에러입니다. 리눅스의 경우에는 컨테이너 내부에서 아래와 같이 df 명령어로 확인이 가능합니다. (base) root@2a48ab5fd651:~/ml# df -h Filesystem Size Used Avail Use% Mounted on overlay 427G 59G 347G 15% / tmpfs 64M ..
[부제: 개발자가 알아야 하는 OS와 하드웨어 기초] 제목과 책 표지만 놓고 보면 초보들이나 읽는 그런 책으로 치부될 수 있겠다는 생각이 들었다. 이 책은 스마트폰에서 클라우드까지 우리 사회에 IT가 있는 곳이라면 상당히 많은 곳에 침투해있는 리눅스의 구조를 다루는 책이다. 그림과 C 언어 코드로 쉽게 설명하고 있지만 배경지식이 전혀 없는 이들에게는 다소 어려울 수도 있다. 리눅스를 접해본 사용자라면 다들 겪는 명쾌한 답이 없는 문제인데 free 영역은 사용자 관점에서 available 영역인지, OS 관점에서 available 에 대한 부분이 있겠다. 책에서는 이 문제에 대해 그림으로 가볍게 다뤄주고 있겠다. OS 레벨에서 free 는 buff / cached 를 포함하고 있지 않지만 필요하다면 언제든..
Colab의 사용권한을 신청하고 accept 되어야만 사용할 수 있었던 시절이 있었는데 이제는 너무나 보편화 되었고 K80 GPU는 물론 TPU까지 마음껏 굴려볼 수 있는 상태가 되었습니다. 참고글: Google Colaboratory를 아시나요? 하지만 막상 찾아보면 TPU 사용예제가 많이 안보이는데 TensorFlow 공식 예제가 너무 잘되어 있기 때문일까요? 아무튼 한글 자료는 턱없이 부족한데 도움이 될 누군가를 위해 메모로 남겨두도록 합니다. 이 글은 tf 1.13 버전을 기반으로 하고 있기 때문에 keras가 공식적으로 tensorflow 안에 모듈로 자리 잡고 있는 상태입니다. 다음은 TensorFlow 공식 홈페이지에 있는 MNIST 예제코드입니다. import tensorflow as tf..
오래전에 C/C++ 로 만든 모듈을 python 에서 가져다 사용할 수 있는 것을 보고 깜짝 놀랐던 기억이 있는데 이제는 웹에서도 그렇게 할 수 있다는 사실에 한번 더 깜짝 놀랐습니다. 사실 web assembly 기술은 새로울 것도 없지만 마침 사용할 일이 있어서 파내다 보니 이제서야 신세계를 맛보는중이겠습니다. 자 지금부터 web assembly의 첫 걸음을 떼고 hello world를 출력해봅시다. Emscripten 설치 C/C++ 로 작성한 모듈을 웹 어셈블리로 컴파일 하기 위해서는 여러가지 툴이 논의 될 수 있겠지만 여기서는 Emscripten을 소개하고 사용해보기로 합니다. 우선 Emscripten SDK (emsdk) 를 GitHub 에서 다운로드 받도록 합니다. git clone http..
이미 잘 구현되어 있는 소스코드와 데이터를 사용한 머신러닝의 경우에는 모델 내에 shuffle 자체가 구축되어 있는 반면에 데이터 수집과 정제, 모델 구축까지 밑바닥에서부터 쌓아 올리다보면 여러가지 난관에 봉착하게 된다. python 을 친숙하게 다루는 사람이라면 데이터를 다루는데 어려움이 없겠으나 수학적 지식이나 모델링쪽만 전문으로 했던 사람에게는 shuffle 자체도 쉬운게 아닐 것이다. random.shuffle 예제를 살펴보면 대부분 1차원 array 를 섞는것 뿐이라 우리의 (x, y) 데이터 쌍에서는 일반적인 방식으로는 사용할 수 없다. 여기서는 이런 상황에서 데이터셋을 shuffle 하는 방법 하나를 제시한다.예를들어 손글씨 인식을 할 때 사용하는 대표적인 MNIST 의 데이터를 우리가 직접..
>>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explic..
우리가 작업하는 다양한 소스코드는 때로는 서로 다른 버전의 cuda 를 사용하기도 합니다. 그리고 물리적으로 한 대의 머신을 공유해서 사용한다고 했을 때 여러 버전의 cuda 를 이용하는 것은 매우 당연한 일이겠습니다. 이번 글에서는 어떻게 그것이 가능한지에 대한 이야기를 짧게 공유합니다. 1. cuda 설치 ( https://developer.nvidia.com/cuda-downloads )링크에 접속해서 cuda 를 다운로드 받습니다. OS 부터 하나씩 선택해나가면 최종적으로 아래와 같은 화면을 볼 수 있습ㄴ다. 이 글이 작성된 시점 기준으로는 cuda 10.1 이 최신버전이라 위에 링크에 접속하면 다음 버전으로 가이드가 됩니다.다운로드 받은 cuda 는 위에 설명에 있는 것처럼 터미널에서 실행해주면..
아래와 같이 tensorflow-gpu 를 설치하였고, pip install tensorflow-gpu==1.9코드상에서 import 를 하려고하니 에러가 발생했습니다. (tensorflow_p36) $ python Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56) [GCC 7.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf Traceback (most recent call last): File "/home/caley/anaconda3/envs/tensorflow_p36/lib/python3..
지난주에 다녀온 AI with Google 행사의 한박자 늦은 후기를 적어본다. 아니, 후기라고 하기에는 거창하고 참석하지 못한 사람들을 위해 행사장 사진 공유를 통해 행사를 들여다보자. 행사는 3호선 동대입구역에 있는 신라호텔에서 진행되었는데 행사장에는 촬영 나온 미디어 기자들로 가득차 있었다. 아마도 오전 세션은 초대받은 사람들과 기자들만 출입이 가능한 느낌이었고 오후부터는 현장 등록까지 가능하게 여러 세션이 준비 된 느낌. 말하자면 오전은 미디어 홍보를 위한 자리라는 생각이 들었다. 본인은 운좋게 초대장을 구해서 오전부터 참석할 수 있었다.얼추 행사 시작인 10시에 맞춰서 도착했는데 이미 인산인해를 이루고 있었다. 데모 부스와 다과, 커피까지 다양한 먹거리가 준비되어 있었다. 일단 따뜻한 아메리카노..
http://kaldi-asr.org/ 이 글을 읽고 있다는 것은 sample 스크립트 학습을 끝냈다는 이야기인데 일단 축하드립니다. 이번 글에서는 학습시킨 데이터를 기반(은 이미 공개되어 있는 모델셋)으로 demo 를 해볼텐데 kaldi 에 있는 voxforge 에서는 두 가지 방식으로 데모를 지원합니다. 여기에는 1) microphone 의 입력에 따라 실시간으로 음성을 text 로 변환하는 live 모드와 2) 음성파일을 text로 변환하는 simulated 모드가 있습니다.일단 egs/voxforge 로 이동해서 보면 다음과 같이 세 개의 디렉터리가 존재합니다. $ tree -L 1 . ├── gst_demo ├── online_demo └── s5 3 directories, 0 files s5 ..
- Total
- Today
- Yesterday