우리가 작업하는 다양한 소스코드는 때로는 서로 다른 버전의 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 ..
# TL;DR git remote add upstream ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git git fetch upstream git merge upstream/master # 들어가며GitHub 에서 좋은 프로젝트를 발견했고 유용하게 사용을 하다보면 Contribution 하고 싶은 상황이 생깁니다. 개발자라면 보통 그래요. 이제 Contribution 을 마음먹었으니 프로젝트를 fork 하고 열심히 수정을 합니다. 그리고 Pull Request 를 날리겠죠. 며칠 후에 기분 좋은 메일이 왔습니다. Merged 되었다는 내용이죠 :-)여기까지는 좋습니다. 그리고 시간이 흘러 같은 프로젝트에 또 Contribution 하고 싶은게 생기게 됩니다. 여기서 문제가 생기게 되..
https://conda.io/en/master/ python 을 가상환경으로 사용할 수 있도록 지원하는 프로젝트중 하나인 conda 를 실무에서 빠르게 사용 할 수 있도록 살펴보도록 합니다. ( 또 다른 가상환경 프로젝트인 virtualenv 는 이쪽을 참고하세요 ) 우선 우리가 사용하는 OS 에 맞게 다음 링크에서 아나콘다를 다운로드 받도록 합니다 https://www.anaconda.com/download/ 설치가 끝나면 터미널에서 conda 명령어를 통해서 모든 조작이 가능한데 필수적인 옵션을 하나씩 살펴보도록 합시다. ( 실행 화면 등이 포함되어 있기 때문에 PC 버전에서 최적화 되어 있습니다 ) # 버전 확인 : 사용하고 있는 conda 패키지의 버전을 확인한다.$ conda --version..
http://kaldi-asr.org/ 이번 글에는 Kaldi 에서 제공하는 샘플 스크립트를 통해 기본적인 테스트를 진행하는 과정을 살펴봅니다. 테스트를 진행하기 전에 잠깐 Kaldi 의 디렉터리 구조를 살펴볼 필요가 있는데요, 소스코드를 내려받고 살펴보면 아래와 같은 구조를 확인할 수 있습니다. $ tree -L 1 . ├── COPYING ├── INSTALL ├── README.md ├── egs/ ├── misc/ ├── scripts/ ├── src/ ├── tools/ └── windows/ 6 directories, 3 files 6개의 디렉터리와 3개의 파일로 구성되어 있군요. 파일은 설치 과정이 메모되어 있는 INSTALL 과 프로젝트 소개가 있는 README.md, 그리고 카피라이트인 ..
http://kaldi-asr.org/Kaldi Speech Recognition Toolkit 의 동작에 대한 기본 테스트를 MacOS 에서 진행한 경험을 기록 합니다. 보통의 오픈소스를 살펴보면 READMD.md 와 같은 파일을 두고 그 안에서 설치 가이드를 제공하고 있는데 Kaldi 는 README 에서 그런 언급을 하지 않고 대신 INSTALL ( plain-text ) 파일을 제공합니다. 그럼 이제 INSTALL 파일을 확인하고 설치를 진행해보도록 합니다.우선 GitHub 을 통해 공개되어 있는 Kaldi 소스코드를 내려 받습니다. git clone https://github.com/kaldi-asr/kaldi.git 소스 디렉터리 홈에 있는 INSTALL 파일을 열어보면 다음과 같은 내용이 쓰..
2019년 1월 21일부터 티스토리에 HTTPS 가 일괄 강제적용 된다는 소식을 들었는데 뒤늦게 관리하는 블로그의 설정을 바꾸게 됐다. ( 관련공지 : 더 안전한 티스토리를 위해 - SSL 적용 완료 ) 그리고 블로그에 별로 신경을 못쓰고 있었는데 어느날 예전글을 검색해야 할 일이 있어서 카테고리 버튼을 누르는순간 해당 메뉴가 먹통이라는 것을 깨달았다. 그 외에 관리자 페이지도 먹통. 혹시나해서 개발자 도구를 열어보니 아래와 같은 에러가 잔뜩 확인되었다.해당 내용은 블로그 도메인은 HTTPS 를 사용하고 있는데 내부적으로 HTTP 를 사용하는 곳이 있고, 보안상 취약하여 해당 메뉴가 블럭되고 있다는 것. 해결 방법은 어렵지 않다. 스킨의 HTML 에서 사용하는 HTTP -> HTTPS 로만 변경해주면 된..
slack 에는 다양한 투표 기능이 있는데 대표적으로 simple-poll, polly 등이 있다. 하지만 이런 투표기능이 있는 명령어가 무조건적으로 무료는 아니다. polly 같은 경우에는 한달간 베타 버전처럼 사용할 수 있고 그 이후에는 비용을 지불해야 하며, simple-poll 은 일정 횟수 이상을 초과해서 사용하게 되면 비지니스로 업그레이드 해서 사용할 것을 권고한다.아래는 simple-poll 로부터 발생되는 비지니스 업그레이드 권고 메시지.warning: Remember to upgrade to Simple Poll Business before December 11thAs one of Simple Poll's most active workspaces, we were delighted to g..
개인 프로젝트를 고민하다가 예전부터 미루어 왔던 AI 스피커 만들기를 시작합니다. 프로젝트의 요구사항은 간단합니다. 사용자의 음성을 인식하고 의도를 파악한 후에 상황에 맞는 답변을 스피커로 출력합니다. 가벼운 요구사항이지만 내부적으로는 아래와 같은 기술을 필요로 합니다.- 사용자의 음성을 인식 ( Speech to Text ) - 변환된 Text 를 구문 분석 ( Natural Language Processing ) - 분석된 내용을 토대로 답변을 음성 출력 ( Text to Speech )일단 당장은 머신러닝에 대한 배경지식이 부족하기 때문에 세 가지 모두 쉬운 과제는 아닙니다. 그래서 고민끝에 우선 Speech to Text( STT), Text to Speech( TTS) 는 Google Cloud..
리액트와 함께 인기를 더해가는 vue.js 사용을 위한 기본 설치 과정을 설명하도록 한다. 우선 기본이 되는 vue 설치를 위해서는 아래와 같이 npm 명령어를 사용하도록 한다. $ npm install vue npm WARN saveError ENOENT: no such file or directory, open '/Users/caley/package.json' npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN enoent ENOENT: no such file or directory, open '/Users/caley/package.json' npm WARN caley No descriptio..
남들 다 사용하는 CI/CD 대세 jenkins 를 docker 버전으로 설치해보자. docker 버전으로 설치하는 것에 별 다른건 없다. 서버에서 docker 를 사용할 수 있다는 가정하에 아래 명령어 두 줄이면 끝이다. $ docker pull jenkins/jenkins $ docker run -p 8080:8080 jenkins/jenkins:ltsjenkins 가 최초에 올라오면서 여러가지를 초기화 하고 아래처럼 초기 비밀번호를 콘솔에 출력해준다. 이 비밀번호를 복사하고 GUI 를 실행하도록 하자. ( localhost:8080 ) 아래와 같은 화면에서 비밀번호를 입력할 수 있다. 혹시 콘솔로그를 확인하지 못했다면 /var/jenkins_home/secrets/initialAdminPasswor..
logrotate 는 특정 파일을 일정 시점, 크기 등 지정된 조건에 따라서 백업해주는 명령어이다. 주로 시간이 지남에 따라 한 없이 커질 수 있는 로그파일을 logrotate 를 통해 주기적으로 백업하는데 이용된다. 예를들어 system.log 라는 파일이 매일 1 GB 씩 내용이 누적된다고 하면 한달이면 벌써 30 GB 가 되버리고 그 파일 자체를 핸들링하는게 매우 어렵게 된다 ( 파일 안에서 특정 단어를 검색한다던지 ). 이럴 때 logrotate 를 통해 매일 지정된 시간에 system.log.1.gz, system.log.2.gz, system.log.3.gz... 으로 자동 백업하거나 파일 크기가 일정 사이즈 이상 되었을 때 분할 할 수 있다.우선 logrotate 는 심플한 소개가 달려있다...
쿼리를 날리고 설정된 타임아웃에 의해 Lost connection to MySQL server during query 에러가 출력되는 경우 워크벤치에 아래 설정을 통해 쉽게 해결 할 수 있다. Edit → Preferences → SQL Editor → DBMS connection read time out (in seconds): 600 괜히 DB 타임아웃 설정 값을 바꾸려고 애쓰지 말자. 사실 어차피 내부적으로는 로컬 타임아웃을 건드리고 있겠지만. :-)
vim 에서 개발을 하다보면 여러줄에 걸쳐 동일한 메시지를 입력해야 하는 경우가 한번씩 있다. 그게 주석처리 문자( // )일 수도 있고, 혹은 메시지 추가일 수도 있는에 아래에서 그 방법을 살펴보도록 하자.우선 기본적으로 블럭 지정을 할 수 있어야 한다. 멀티라인에 커맨드를 날리기 위해서는 Ctrl + v 로 멀티라인 커맨드를 적용할 블럭을 지정하고, Shift + i 로 vim 을 편집모드로 만든다. 그리고 수정 하려는 문구를 추가하고 ESC 를 두 번 눌러주시면 된다. 필요하면 아래 영상도 참고해보도록 하자. 참 쉽다. :-) 멀티라인에 탭 같은 공백을 넣을 때는 아래 방법이 더 편하다.- { ... } 블록 시작이나 끝에서 >% - 숫자 + '>>'
지난번 글( 서버리스 Cloud Functions 사용하기 ) 에서 Cloud Functions 의 전반적인 내용에 대해서 훑어보았다. 작은 모듈 단위의 프로그램을 서버 구동 없이( 엄밀하게는 사용자가 신경 쓸 필요 없는 / 신경 쓸 수 없는 ) 사용할 수 있는 서버리스의 장점에 대해서 이야기를 했었는데 이번에는 그 한계에 대해 잠시 살펴보고 비판해보도록 하자. 이렇게 비판하는 정보를 공유하는 이유는 한계를 모르는 상태로 Serverless 서비스를 운영하는 것은 매우 위험하다고 생각하고 있기 때문이다.Google Cloud Functions 은 Serverless 의 역할을 충실히 수행하며 작은 모듈 단위를 클라우드 위에서 동작 시키는데, 타사의 FaaS 대비해서 무엇이 좀 많이 부족하다. 그렇기 때문..
이번에는 Cloud Functions 에 대해서 살펴보는 시간을 갖도록 한다. 기능은 단어 그대로 클라우드 위에 함수를 등록하고 트리거 ( Trigger )를 걸고 사용하는 개념이 되겠다. 쉽게 이야기해서 이벤트가 발생되면 등록해놓은 함수가 동작하는 방식이겠다. 이제 더 이상 작은 모듈을 위해 GCE 를 운영할 필요가 없겠다. Cloud Functions 은 서버리스로 동작하니까. AWS 에서는 Lambda 가 같은 개념이 되겠다. 아무튼, 서비스목록에서 Cloud Functions 를 선택해서 기능을 직접 사용해보도록 하자. 한국어로 봤을 때는 "Cloud 기능" 을 확인하면 된다. ( 근데 왜 아직도 베타인지? 는 아래쪽에서 추측해보도록 하자. )Cloud Functions 메뉴에 최초 진입시에는 A..
개인적인 업무 자동화를 위해 GCE 위에 python crawler 를 하나 개발하고 있는데 이게 영 잘 안되는거다. 처음에는 selenium 을 잘못 사용했나 싶기도하고 HTML 을 잘못 파싱했나 싶은 의심도 들었지만 해당 코드가 Local PC 에서는 정상적으로 동작 하는 것이 확인되었다. 무엇이 문제였을까? 문제를 확인하기 위해 에러 포인트 위치에서 아래와 같이 selenium 의 스냅샷 함수를 이용해서 페이지의 실제 화면을 확인해보았다.browser.get_screenshot_as_file('error.png') 확인결과 놀랍게도 아래와 같은 내용이 확인되었다. 왜 계정이 이렇게 되었는지는 알 수 없다. 아니면 Gmail 자체적으로 클라우드에서의 접근을 막고 있는지도 모른다. 일단 로컬에서 htt..
람다, 서버리스의 첫걸음을 통해 AWS 의 Lambda 서비스에 대해 간략하게 소개를 했다. 이번에는 조금은 더 심도 있는 이야기를 할 텐데 람다의 구조와 원리를 파악하고 자연스럽게 그 한계를 깨우치도록 하자. 내부 로직을 어느정도 이해하고 있어야 어떤 상황에 서버리스( Serverless ) 람다가 독이 되는지 알 수 있게된다. 어설프게 이해하고 사용 하다가는 독이 된다는 사실로 시작해보자.서버리스는 없다람다는 AWS 에서 서버리스를 대표하는 서비스 중 하나다. 앞선 글에서도 그렇게 밝혔고. 근데 이제와서 서버리스는 없다니 이게 무슨 소리지? 이건 클라우드로 넘어오면서 생긴 개념인데 EC2 와 같은 IaaS 는 이미 사용자에게 서버를 클라우드 상에서 제공하며 IDC 상황에서 겪었어야 했던 수 많은 작업..
- Total
- Today
- Yesterday