python에 librosa를 통해 오디오 파일을 numpy로 읽어오는 코드가 아래와 같이 작성되어 있습니다. import librosa wave_path = '/home/caley/test.wav' sr = 44100 try: wav_np = librosa.core.load(wave_path, sr=sr)[0] except FileNotFoundError as e: print(e) wave_path에 test.wav는 실제로 존재하는 파일이지만 웬일인지 librosa는 에러를 발생시킵니다. FileNotFoundError: [Errno 2] No such file or directory: 'avconv': 'avconv' 이유는 librosa가 내부적으로 사용..

Pytorch에서 학습 데이터를 읽어오는 용도로 사용되는 DataLoader는 torch 라이브러리를 import만 하면 쉽게 사용할 수 있어서 흔히 공식처럼 잘 쓰고 있습니다. 다음과 같이 같이 사용할 수 있겠네요. from torch.utils.data import DataLoader 상세한 설명이 기술되어 있는 공식 문서는 아래 링크에서 살펴볼 수 있습니다. https://pytorch.org/docs/stable/data.html#torch.utils.data.DataLoader 인자로 여러가지 파라미터를 넘길수 있는데 여기서 이야기하고자 하는 부분은 num_workers인데 공식문서의 설명은 다음과 같이 되어 있습니다. num_workers (int, optional) – how many sub..

ngrok을 설명하기 전에 이것이 필요한 상황에 대해서 이야기를 간단하게 하는게 이해에 도움이 될 듯 하다. 우리가 웹이나 API를 개발할 때 당장 public 망에서 테스트를 해야 하는 경우를 생각해보자. 예를들어 slack bot을 개발한다고 생각해보면 아래 슬랙 API 화면에 보이는것처럼 public IP를 갖고 있는 서버가 있어야 정상적인 테스트가 가능하다. ( Request URL에 들어가는 주소는 슬랙 API를 처리할 개인 서버쯤으로 생각하면 된다. ) 하지만 개발단계에서 우리는 아직 서버가 없을수도 있고 퍼블릭 IP를 할당받지 못했을 수도 있다. 기타 다른 여러가지 이유로 localhost로 테스트를 해야 하는 경우가 있는데 대부분의 웹 개발는 개발환경이나 프러덕트 환경에 deploy 하기 ..
(*) 우분투 16.0.4 환경에서의 글입니다. 버전이나 OS의 종류에 따라 내용이 적용되지 않을 수도 있습니다. docker를 처음 설치하고 보면 이미지나 컨터이너등 모든 정보가 쌓이는 공간이 /var/lib/docker 로 동작하는 것을 알 수 있습니다. 보통의 사용자 환경을 보면 root 디렉터리는 빠르고 비싼 SSD를 사용하기 때문에 용량이 충분하지 않은데 별 생각없이 이미지와 컨테이너를 생성하다보면 어느샌가 용량부족으로 어려움을 겪게 될 것으로 생각됩니다. 그렇기 때문에 처음 docker를 설치해줬을때부터 이런 데이터가 적재되는 곳을 충분히 여유있는 HDD로 잡아주는게 좋은데요. 이번글에서는 그 방법에 대해서 소개합니다. 우선 데이터 경로가 어디로 잡혀있는지 아래 명령어를 통해 확인해줍니다. $..
nvidia-docker를 사용하기 위해서는 우선 docker가 설치되어 있어야 한다. 우리는 대부분 커뮤니티 버전을 사용하게 될 것이므로 docker Community Edition(docker-ce) 버전으로 설치해주도록 하자. 아래 명령어를 실행하게 되면 get.docker.com에 등록되어 있는 스크립트가 바로 로컬에서 실행되게 되는데 이 스크립트는 기본적으로 docker-ce 레포지토리를 가르키고 있기 때문에 바로 실행시켜주면 되겠다. curl -fsSL https://get.docker.com/ | sudo sh 잠시후 docker 설치가 마무리 되면 nvidia-docker를 설치해주면 된다. 버전이 변경됨에 따라 내용이 달라질 수 있기 때문에 공식 홈페이지의 설치 방법도 함께 확인하면 좋다..

코엑스 그랜드볼룸에서 진행된 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 의 데이터를 우리가 직접..
- Total
- Today
- Yesterday