본문 바로가기

전체보기233

가장 효율적인 ML 프로젝트 개발 환경 절대 규칙1. 무조건 editor가 아니라 IDE를 사용해야한다.pycharm을 쓸 때랑 sublimetext를 사용할 때의 생산성 차이는 압도적이다.(특히 refactor) 1. 무조건 local에서 바로 실행할 수 있어야한다.즉시 응답하는 빠른 run이 가능해야만 손쉽게 디버깅을 할 수 있다. local run은 단순히 pytorch cpu에서 실행해도 전혀 상관이 없다.서버에서 실행해야하는 경우도 가능하면 toy환경을 local로 가져오는 것이 좋고, 그마저도 힘들다면 sftp를 이용해서 remote의 코드를 pycharm으로 수정하도록 한다. 1. 내가 사용하는 환경을 docker로 한번 감싼다.그래야 다른 환경에 쉽게 옮길 수 있다. docker commit을 이용해서 현재 환경을 복사하면 되기.. 2020. 1. 17.
Z-shell ( zsh ) 사용하기 zsh ( z-shell ) zsh은 bash shell에서는 제공하지 않는 사소하지만 정말 편리하고 우아한 기능들을 제공하는 shell이다. zsh 설치과정1. sudo apt-get install zsh 2. oh-my-zsh 설치 sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 3. zsh-syntax-highlighting git clone echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc source ./zsh-syntax-hig.. 2020. 1. 17.
Numpy Optimization and Parallelization 1. 문제상황 [100000, 1000] 크기의 matrix를 10만차원 축으로 cumsum을 했더니 약 2.3초가 걸려서 이를 더 빠르게 하고싶음. 기본 실험: 해당 matrix에 대해서 np.sum과 np.cumsum 을 수행해봄. 3번과 4번 cell에서는 cumsum을 한번에 모든 dim에대해 한것과 하나씩 바꿔가면서 한 실험 결과임 cumsum의 경우 메모리에 writing하는 연산이 많아 sum보다 많이 느림. 그런데 3번과 4번에서 속도차이가 나는 것이 이상해서, inplace cumsum으로 바꾸니 속도가 동일해짐. 2. C로 최적화?여기서 더 빠르게 하기 위해, Numpy를 C로바꾸면 더 빨라질까? 결론은 Numpy가 C보다 더 빠르다,. Python VS C https://medium... 2020. 1. 17.
The Bitter Lesson 번역 The Introduction of Reinforcement Learning의 저자로 유명한 Richard Sutton의 2019년 5월 13일에 올라온 AI에 대한 글을 번역해보았다. (역자: 곽동현, 윤상웅) The Bitter Lesson 씁쓸한 교훈 70년간의 AI연구로부터 깨달을 수 있는 가장 큰 교훈은 바로 계산을 이용하는 일반적인 방법론이야말로 궁극적으로, 큰 격차를 두고도 가장 효율적이라는 것이다. 이에 대한 궁극적인 이유는 바로 무어의 법칙, 더 일반화해서는 유닛 당 계산 비용이 지수적으로, 꾸준히 감소하고 있기 때문이다. 대다수의 AI 연구는 agent가 사용가능한 계산자원이 일정하다는 조건에서 행해졌으나(이 경우 인간의 지식을 최대한 이용하는 것이 오직 유일한 성능 향상의 방법일 것이.. 2020. 1. 17.
Pytorch 문법 자주 발생하는 에러 해결AttributeError: cannot assign module before Module.__init__() call이 에러는 nn.Module을 상속받은 class가 __init__에서 먼저 super의 __init__을 호출하지 않아서 발생하는 문제이다.class BaseNetwork(nn.Module): def __init__(self): super().__init__()위와 같이 호출하면 된다. https://discuss.pytorch.org/t/attributeerror-cannot-assign-module-before-module---init---call/1446 2020. 1. 16.
블로그 글쓰기 규칙 Step 0. 기본 설정- 항상 문단 간격 없음으로 작성한다.- Markdown 보다는 tistory 기본 에디터를 적극 활용한다.- 그이외의 경우 Bold는 사용 가능하나, 글자크기는 따로 수정하지 않는다. Step 1. 제목 및 소제목을 적고, ctrl + 1,2,3 을 이용하여 꾸민다.#은 기본적으로 사용하지 않는다. Step 2. 대표 이미지 설정구글 이미지 검색 혹은 https://pixabay.com/ko/ 에서 사용 권한이 적절해보이는 dropbox/이미지에 다운받고, 첨부한다. 2020. 1. 9.
Python Concurrency Programming Concurrency Programming Python에서 asyncio를 이용한 concurrency에 대해 알아본다. 아래의 문서를 참고하여 내용을 작성하였다. Async IO in Python: A Complete Walkthrough - Real Python Parallelism은 concurrency의 하위 개념이다. 즉 동시성을 구현하는 방법 중 하나가 병렬화라고 얘기할 수 있을 것이다. 또는 threading이 concurrency에 보다 가까운 개념이다.Concurrency의 핵심은 single cpu에서 동작하는 것 처럼 보이는 코딩을 통해 동시성을 구현할 수 있다는 것이다. 즉 짜기가 쉽다. 그리고 여기에는 coroutine이라는 핵심 개념이 등장한다.이러한 concurrency를 설명.. 2020. 1. 9.
Python 프로젝트의 패키지화 개발한 python 프로젝트를 패키지화 하는 방법들1. pip install로 설치할 수 있게 한다.2. submodule로 사용할 수 있게 한다.3. git clone으로 사용할 수 있게 한다. setup.py 와 requirements.txt의 차이- setup.py : pip install로 사용하는 일반 사용자를 위한 최소 설치 요구사항- requirements.txt : 개발자를 위한 설치 요구사항 https://stackoverflow.com/questions/14399534/reference-requirements-txt-for-the-install-requires-kwarg-in-setuptools-setup-pyhttps://packaging.python.org/discussions/in.. 2020. 1. 9.
음성인식 이해하기 # 기본 개념 # Acoustic model 오디오 --> phoneme(혹은 grapheme 등)을 예측해주는 모델 # Phoneme Dictionary word -> phoneme가 기록된 정보 # G2P model 대규모 dictionary를 학습해서, 임의의 word에 대한 phoneme을 예측해주는 모델 (dictionary와의 차이점은, dictionary에 없는 word에 대한 phoneme 예측도 가능함) # Pitch: 음의 높낮이(진동수 Hz의 크고 작음과는 다르다) Pitch는 보다 추상적인 개념으로, 사람이 인지할 수 있는 Hz의 변화가 저주파일때 더 민감하고, 고주파로 갈수록 둔감해지는 just-noticeable differences에서 출발한 개념이다.즉 사람이 인지하는 음의 .. 2019. 12. 29.
Python coding convention: PEP 8 # PEP 8https://www.python.org/dev/peps/pep-0008/ ## 이름 짓기 - 클래스: ClassName- 예외 처리: WrongNameError- 상수: CONSTANT_VALUE- public 함수나 변수: lower_case- private 함수나 변수: _lower_case- 패키지나 모듈: lower_short - __이름: 은 특별한 python의 기능이 생긴다. 상속된 다른 class의 변수와 이름이 겹치지 않기위한 것으로, 다른이름으로 자동 변경된다. ## 이름 금지사항- mixedCase - Capitalized_Words_With_Underscores # Class와 Instance의 차이어떤 class를 정의한 다음, 해당 클래스를 initialize하면 .. 2019. 12. 17.
소리 합성 # 기본 개념 - Mono vs Stereo: 마이크 2개에서 녹음하고, 정확히 mono 2개의 정보를 저장하면 스테레오. - Sampling rate: data point의 x축 해상도. 즉 1초에 몇번이나 data point를 찍을지, - Bit depth: data point의 y축 해상도. 각 찍힌 점들이 구분될 수 있는 amplitude의 단계. 만약 2 bit rate이면 오직 4단계의 y축 해상도만 존재함. - Bit rate: Sampling rate * Bit depth, 위 두가지 measure를 동시에 고려하는것. 초당 bits전송량https://www.reddit.com/r/explainlikeimfive/comments/4d4krv/eli5_what_is_the_difference.. 2019. 12. 9.
소규모 프로젝트를 위한 GPU 자원, GCP # 무료 GPU 서버현재까지 알려진 가장 강력한 무료 GPU 서비스는 Google colab이 유일하다.그러나 colab은 하루에 12시간까지밖에 GPU를 쓸 수 없는 제약이 있고, 데이터를 지속적으로 서버에 올려둘 수가 없어서 google drive에 데이터를 올리고 이를 mount해서 사용해야하는데 이게 매우 불편하다. 또한 command line interface를 제공하지 않아서, jupyter의 cell에 !을 입력해서 해야하는데, 이 또한 매우 불편하다. 그리고 jupyter notebook도 기존에 사용하던 jupyter와 단축키 및 기능이 조금씩 달라서 적응하는데 꽤 시간이 걸린다. 그럼에도 불구하고 한시간에 1000원정도 하는 T4 GPU를 무료로 쓸 수 있다는 것은 분명 엄청난 메리트이.. 2019. 12. 8.
Google API로 GDrive랑 Gspread 사용하기 # 구글 접속 권한 얻기먼저 구글 접속을 위한 credential생성이 필요하다. * oauth2client는 deprecated되고, 이제google_auth_oauthlib을 사용해야한다.https://google-auth.readthedocs.io/en/latest/oauth2client-deprecation.html#replacement 1. 구글 계정 생성2. https://console.developers.google.com/apis/library? 에서 원하는 API선택3. 사용자 인증 정보 생성4. OAuth 동의에서 scope설정5. json credential 다운로드6. Flow를 이용해서 authorization_url얻기7. authorization_url에 접속 후 로그인하여 a.. 2019. 11. 22.
라즈베리파이 4 Model B 시작하기 # 작동을 위해 필요한 최소 주변기기 1. USB-C 전원 연결을 위한 충전기(라즈베리파이 공식 충전기 사용) 2. 8기가 이상의 microSD카드(라즈베리파이 공식 카드 사용) 및 리더기 3. 케이스(있는게 매우 좋음) 4. microHDMI 케이블 # 방열판 부착하기 은색, 검은색 칩에 붙여주면 된다. 그러나 실질적인 효과는 -1~2도라고 한다.... https://www.youtube.com/watch?v=E-4GaAz7XNM # 기본 시작 방법: 아래 링크를 천천히 따라합시다. https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up # 운영체제 설치하기 아래 링크에서 원하는 이미지를 다운받는다. https://www.raspber.. 2019. 11. 8.
AMD CPU 가상화 옵션키기 # AMD에서는 CPU가상화 옵션이 살짝 숨겨져있다. 1. 컴퓨터를 부팅하면서 del키를 연타하여 BIOS setup에 들어간다. 2. M.I.T 에서 Advanced Frequency Settings 3. Advanced CPU Core Settings 4. SVM Mode을 enable https://forum.level1techs.com/t/solved-no-virtualization-support-with-gigabyte-ga-ab350-gaming-3/114171 2019. 11. 8.