본문 바로가기

Development113

Real Time C Programming 자료링크https://www.youtube.com/watch?v=N3XkQqhE6sY 2021. 1. 28.
Pytorch를 TensorRT로 변환해서 사용하기 TensorRT 설치과정TensoRT(trt)는 GPU inference 상황에서 최적의 optimization을 제공한다. 경우에 따라서는 거의 10배 이상 inference속도가 향상된다. 이 TensorRT를 사용하려면 조금 번거로운 설치과정을 해야한다. 그러나 설치만 잘 하면 변환 과정자체는 매우 쉽다. 1. CUDA 설치하기cuda 버전 10.2 ~ 11.1 까지 지원된다. 여기서는 CUDA 11.0 버전을 사용한다. 2. PyCUDA 설치하기pip install pycuda==2020.1 만약, CUDA를 새로 설치하거나 업데이트하면 pycuda역시 다시 재설치 or 업데이트가 필요하고 한다. 3. Pytorch 설치하기pytorch는 1.5.0부터 테스트되었으나, 그전 버전에서도 동작할 수 .. 2020. 11. 25.
Python Profiling Line Profilerhttps://lothiraldan.github.io/2018-02-18-python-line-profiler-without-magic/python script를 한줄 단위로 profiling해줌 아래의 code snippets으로 쉽게 decorator로 구현 가능https://gist.github.com/kylegibson/6583590 cProfileimport cProfile, pstats, io from pstats import SortKey pr = cProfile.Profile() pr.enable() self.train_run() pr.disable() s = io.StringIO() sortby = SortKey.CUMULATIVE ps = pstats.Stats(.. 2020. 10. 21.
딥러닝을 위한 장비 한성컴퓨터 TFG257XGhttp://prod.danawa.com/info/?pcode=11258712 1.9키로인데 RTX2070이 달려있어서 딥러닝 학습도 가능하고, 발열제어가 뛰어나서 학습중에도 75도가 넘지 않는선으로 유지된다.(노트북 뒷판을 들어주는 거치대 사용시) 현재시점(2020년 9월)에서 유일하게 RTX2070 데스크탑버전이 쌩으로 달려있는 노트북이다. V100한대당 10000달러 정도 하는 것으로 보인다. RTX3080성능은 V100과 거의 비슷한데, 가격은 700달러이다. 단, GPU RAM이 10Gb으로 매우 작다. 2020. 9. 21.
AWS Jupyter setting You need to DNS server registration with 8.8.8.8꼭 필요하진 않지만, 기본적으로 pip install등을 할 때 DNS를 못찾는 에러가 자주 발생하므로 구글 DNS서버를 등록해주자. sudo vim /etc/resolv.conf 를 하고, 아래 line을 추가해준다.nameserver 8.8.8.8 public jupyter notebook serverssl key를 만들고, 그것을 입력해서 jupyter 서버를 띄워야한다. https://docs.aws.amazon.com/dlami/latest/devguide/setup-jupyter-config.htmlhttps://docs.aws.amazon.com/dlami/latest/devguide/setup-jupyte.. 2020. 9. 6.
Python Callback Callback Method Callback Method에 변수 전달 방법callback method에는 오직 global variable만이 전달될 수 있다. 만약 이것이 문제가 될 것 같다면 global variable만 가지고 있는 global class를 만들어서 이를 전달하는 방법이 좋다.https://stackoverflow.com/questions/51959978/how-to-pass-a-value-to-callback-for-anonymization-without-global-variables Callback 함수에 전역 변수를 전달하는 가장 효과적인 방법Singleton을 사용한다. 싱글톤은 전역변수이기 때문에 쉽게 callback에 전달 가능하고, 디자인도 깔끔해진다. https://n.. 2020. 8. 13.
Python Subprocess Subprocess VS Multi-processSubprocess는 python으로 다른 프로그램을 실행하기 위한 기능이다. 즉 단순히 system command를 실행하기 위함이라고 이해할 수 있다. 따라서 subprocess로 실행된 프로그램과는 오직 stdin/stdout만으로 통신 할 수 밖에 없다.반대로 multiprocess는 python 내에서 task를 쪼개 여러 cpu에서 실행하며, 좀 더 communication이 용이하다. Subprocess로 System Command 실행하기python에서 command line으로 명령을 내리는 방법은 os.system()을 이용하는 방법과, subprocess를 이용하는 방법 두가지가 있다. 그러나 여러가지 이유로 os.system()보다는 .. 2020. 8. 13.
Ubuntu Process의 Priority와 Niceness 설정하기 PR(Priority) : 값의 범위 = [-100, 39]PR값은 실제로 process가 OS에 의해 동작하게 될 priority를 의미한다. 이 값은 사용자가 바로 지정 할수는 없다.PR값의 범위는 [-100, -2]까지는 realtime process를 의미하고, [0, 39]는 상대적으로 우선순위가 낮은 normal process를 의미한다. PR이 -100에 가까울수록 우선순위가 높아지고, 39에 가까울수록 우선순위가 낮아진다. NI(Nicevalue or Niceness) : 값의 범위 = [-20, 19]NI값은 유저가 지정하는 값으로, normal process의 PR을 지정하는 데 사용된다. 이때 아래와 같은 공식으로 PR값이 결정된다. PR = NI + 20 (Normal Process.. 2020. 7. 18.
Ubuntu 처음 시작하기, 여러가지 설정 Apt와 apt-get의 차이apt는 좀더 편한 엔드유저용, apt-get은 로우레벨용https://askubuntu.com/questions/829864/is-apt-get-deprecated Apt remove/auto-remove/purge의 차이-> man apt를 입력하면 나온다고한다. remove는 반면 해당 패키지가 차지하는 최소한의 항목만 삭제하기 때문에 dependency가 그대로 남아있게 된다.purge는 remove 행동과 더불어 해당 패키지의 configuration file까지 삭제한다. (여전히 dependency가 그대로 남아있다. remove --purge와 동일하다.)auto-remove는 해당 패키지에서 사용하는 모든 dependency를 다지워버린다. 이 과정에서 자칫 .. 2020. 6. 24.
라즈베리파이 모델 4에 pytorch 설치하기 라즈베리파이에 pytorch 설치하기Dependency install하기sudo apt install libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptoolssudo apt-get install libavutil-dev libavcodec-dev libavformat-dev libswscale-dev whl파일 다운받기. 아래에서 적절한 버전을 고른다.(whl파일은 설치시 이름도 매우 중요하다. 반드시 운영체제 이름이랑 동일해야함.) * Nvidia에서 jetson nano용으로 제공하는 이미지인데, 64bit 운영체제에만 설치가능하다.(공식 라즈비안 OS는 32bit라서 설치불가_https://forum.. 2020. 6. 22.
라즈베리파이 OS 포멧/초기화/업데이트 라즈베리파이 OS 초기화하기라즈베리파이에서 특별한 초기화 기능을 제공하지는 않는다. 검색해보면 shift키를 누른 상태로 재부팅을 하라고 하는데, 암만해도 안된다.결국 OS초기화를 위한 방법은 간단하다. 라즈베리파이에서 Micro SD 카드를 뽑고, 컴퓨터에 연결한다음 SD카드를 포멧시키고 다시 운영체제 설치부터 시작하는 것이다. https://newsight.tistory.com/287https://kocoafab.cc/tutorial/view/299 Python 3.7.3 버전으로 되돌리기라즈베리파이 최신 이미지는 처음부터 python 3.7.3버전이 설치되어있다.그래서 berryconda를 사용중이라면, berryconda를 삭제해버리면 된다. python3 --version 을 입력해보자. Ras.. 2020. 6. 21.
SSH로 접속하기 및 Putty 사용법 Server 세팅sudo apt-get updatesudo apt install openssh-server sudo systemctl enable ssh : 시스템 시작시 ssh 서버 자동 실행하기sudo systemctl status ssh : ssh 서버 상태확인sudo systemctl start ssh : ssh 서버 열기sudo systemctl stop ssh : ssh 서버 닫기 sudo vim /etc/ssh/sshd_config : ssh 서버 설정sudo service ssh --full-restart : 옛날 방식 서버 열기 https://linuxize.com/post/how-to-enable-ssh-on-ubuntu-18-04/https://askubuntu.com/question.. 2020. 6. 21.
Raspberry Pi Realtime Audio Processing RtAudio완전히 C++기반으로 구현된 오디오 라이브러리. 설치방법 on Raspberry Pisudo apt-get install autoconf libtool automakesudo apt install libasound2 libasound2-devgit clone https://github.com/thestk/rtaudio.git./autogen.shmake 설치확인(* 라즈베리파이의 jack에 스피커를 연결하고, USB mic를 연결한다.)cd rtaudio/tests./audioprobe --> input device id와 output device id확인./testall./duplex 1 44100 [input device id] [output device id] Extreme Latenc.. 2020. 6. 14.
Synergy로 윈도우와 Linux를 하나의 키보드, 마우스로 다루기 Synergy하나의 키보드와 마우스를 이용해 동일한 네트워크에 연결한 여러가지 device를 컨트롤 할 수 있게 해주는 프로그램이다.현재 유료로 전환되었지만, 구버전을 설치할 경우 아직도 무료로 사용할 수 있다고 한다.유료인 경우 현재 29달러를 내면 basic을 구매할 수 있고, 개인은 한 번 구매시 평생 이용가능하다. Windows(Server)Download 페이지에서 Windows 64-bit 설치 후 synergy프로그램을 실행한다.(* 만약 오직 window OS간의 마우스/키보드를 공유하고 싶다면, 무료 프로그램인 Microsoft Garage Mouse without Borders를 사용해도 좋다.) Configure Server를 클릭하고 우측위의 모니터 아이콘을 드래그해서 적절한 스크린.. 2020. 6. 14.
Windows 10에서 PDF에 펜으로 필기하기 PDF에 디지타이저를 이용해서 필기하기 Inkodo무료이다. 펜압을 인지하는 펜을 사용하려거든, marker로 변경해주어야한다.사용해보니 매우 불편하다.... Drawboard PDF무료버전으로도 충분히 기본적인 필기는 가능프로버젼은 한달에 7 달러로 유료인 대신 가장 기능이 우수함 드로우보드 상세팁: https://www.clien.net/service/board/lecture/13297353 참고자료https://gigglehd.com/gg/soft/4403534 2020. 6. 8.
Windows 10 절전모드 문제 해결 자동 절전 모드가 제대로 동작하지 않을 때관리자모드로 명령프롬프트를 실행하고, powercfg -requests 을 입력해보면 어떤 device로인해 절전모드가 안들어가지는지 알 수 있다.그러나 이것으로 모든 문제를 다 확인할 수는 없다. powercfg관리자권한으로 cmd를 실행한다음, powercfg /energy 위 명령어를 입력하면 컴퓨터에서 cpu를 많이 사용하는 process와 절전모드 관련 문제를 보고해준다. 해결 방법* 기본 절전모드 세팅https://www.technipages.com/windows-10-wont-sleep#:~:text=Select%20%E2%80%9CChange%20advanced%20power%20settings,%E2%80%9CPrevent%20idling%20to.. 2020. 6. 8.
Windows10 심볼릭 링크 생성 심볼릭 링크가 필요한 상황Dropbox 등의 동기화 폴더 위치가 컴퓨터마다 경로가 똑같지 않은 경우, 여러가지 환경설정 등이 깨질 수 있다. 이럴 때 각 컴퓨터에 동일한 위치로 심볼릭 링크를 만들어두면 드랍박스 폴더를 옮기지 않고도 쉽게 문제를 해결할 수 있다. 방법1. 명령프롬프트 실행2. mklink /d "심볼릭링크의 경로" "원본의 경로"ex) mklink /d "D:\Dropbox" "C:\Users\User\Dropbox" https://zetawiki.com/wiki/%EC%9C%88%EB%8F%84%EC%9A%B0_%EC%8B%AC%EB%B3%BC%EB%A6%AD_%EB%A7%81%ED%81%AC_%EC%83%9D%EC%84%B1 2020. 5. 28.
Python Audio Processing Realtime Fast Audio Library: sounddevice소리를 녹음하거나 재생하려면 sounddevice라는 라이브러리를 사용하는 것이 가장 빠르다. Sounddevice는 PortAudio라는 library의 python wrapper에 해당하며 Audio stream을 numpy로도 다룰 수 있게 해준다.단, Windows 10의 WSL 1을 사용하는 경우 사운드에 대한 device접근이 불가능해서 동작이 안된다. 이러한 경우 WSL 2(?)가 해당 기능을 제공하거나, 혹은 anaconda를 사용해야한다. https://www.reddit.com/r/learnpython/comments/9cpkql/fastest_possible_implementation_for_recording/ht.. 2020. 5. 2.
Deep Learning Model Fast Serving Fast Model Inference TensorFlow Lite빠른 inference를 위한 tensorflow버전. 학습에 필요한 operation이 전부 삭제되어 있다.- TFLite is for mobile devices, works on CPU and a few mobile GPUs, Plus TPUs. Including the Edge TPUs. Pytorch MobilePytorch에서도 TF Lite와 동일한 목적의 프로젝트로 Pytorch Mobile을 만들고 있다.https://pytorch.org/mobile/home/ TensorRTTensorRT는 cuda의 wrapper로써 Nvidia GPU에서만 동작하는 방식이다. TensorFlow에서도 TensorRT를 backend로 지.. 2020. 4. 28.
한글을 Sub-character level로 파싱하기(python으로 유니코드 파싱) # -*- coding: utf-8 -*- cho = "ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ" # len = 19 jung = "ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ" # len = 21 jong = "ㄱ/ㄲ/ㄱㅅ/ㄴ/ㄴㅈ/ㄴㅎ/ㄷ/ㄹ/ㄹㄱ/ㄹㅁ/ㄹㅂ/ㄹㅅ/ㄹㅌ/ㄹㅍ/ㄹㅎ/ㅁ/ㅂ/ㅂㅅ/ㅅ/ㅆ/ㅇ/ㅈ/ㅊ/ㅋ/ㅌ/ㅍ/ㅎ".split('/') # len = 27 test = cho + jung + ''.join(jong) hangul_length = len(cho) + len(jung) + len(jong) # 67 def is_valid_decomposition_atom(x): return x in test def decompose(x): in_char = x if x < ord('가') or x > ord.. 2020. 4. 16.