본문 바로가기

2020/018

가장 효율적인 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.