본문 바로가기

Development/for Machine Learning18

CTC Beam Search CTC 알고리즘 GT alignment가 없는 상황에서, 가장 그럴듯한 alignment를 학습하는 것 Forward Backward를 반복하면서, likelihood를 계산하고 maximize하는데, 이걸 계속해서 무한히 반복함으로써, 가장 그럴듯한 path들에 대한 확률을 높이는 것임 Full search하는 것에 대해서 계산량을 줄이기 위해서 dynamic programming을 한것 https://seunghyunseo.github.io/speech/2021/10/24/CTC/ CTC는 RNN이나 Transformer Decoder를 이용한 seq2seq이랑 전혀 다른 방식으로 생각을 해야한다. 모든 token에 대한 vocab probability를 BERT의 softmax(token featu.. 2022. 7. 18.
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.
딥러닝을 위한 장비 한성컴퓨터 TFG257XG http://prod.danawa.com/info/?pcode=11258712 1.9키로인데 RTX2070이 달려있어서 딥러닝 학습도 가능하고, 발열제어가 뛰어나서 학습중에도 75도가 넘지 않는선으로 유지된다.(노트북 뒷판을 들어주는 거치대 사용시) 현재시점(2020년 9월)에서 유일하게 RTX2070 데스크탑버전이 쌩으로 달려있는 노트북이다. V100 한대당 10000달러 정도 하는 것으로 보인다. RTX3080 학습 속도는 V100과 거의 비슷한데, 가격은 700달러이다. 단, GPU RAM이 10Gb으로 매우 작다. 2020. 9. 21.
라즈베리파이 모델 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.
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.
ML Python 프로젝트의 test code만들기(feat. Pytest) Test Code의 필요성ML뿐만 아니라, 거대한 규모의 프로그램을 개발할 때에는 반드시 테스트 코드가 필요하다. 물론 협업을 하고, 대규모 프로젝트를 오랜 기간 서비스하기 위해서도 테스트 코드는 반드시 필요하다. 머신러닝 코드는 특히나 numerical한 연산을 다루기 때문에 버그를 잡기가 쉽지 않고, 엄청나게 많은 configuration이 존재하고, 학습의 재현성이 필요하기 때문에 코드의 검증이 오래 걸린다. 또한 협업을 하다보면 누군가가 추가하면서 바꾼 기능 때문에 내가 예전에 쓰던 코드가 동작하지 않는 일이 너무나 빈번하다. 이러한 일을 막고 버그를 줄이는 방법은 테스트 코드를 작성하는 것이다. Test for ML project머신러닝 프로젝트에 대해서도 공동 개발을 할 경우에는 pytest를.. 2020. 3. 16.
딥러닝 프로젝트를 위한 클라우드 GPU 자원, Google Cloud Platform GPU Cloud 서비스무료 GPU 서버현재까지 알려진 가장 좋은 무료 GPU 서비스는 Google colab이 유일하다. 그러나 colab은 하루에 12시간까지밖에 GPU를 쓸 수 없는 제약이 있고, 데이터를 지속적으로 서버에 올려둘 수가 없어서 google drive에 데이터를 올리고 이를 mount해서 사용해야하는데 이게 매우 불편하다. 또한 command line interface를 제공하지 않아서, jupyter의 cell에 !을 입력해서 해야하는데, 이 또한 매우 불편하다. 그리고 jupyter notebook도 기존에 사용하던 jupyter와 단축키 및 기능이 조금씩 달라서 적응하는데 꽤 시간이 걸린다. 그럼에도 불구하고 한시간에 1000원정도 하는 T4 GPU를 무료로 쓸 수 있다는 것은 .. 2019. 12. 8.
Github Markdown 사용법 마크다운은 매우 편리하게 문서를 작성해 주는 도구이다. 특히 github 문서를 작성할 때 매우 용이하며 다음과 같은 기능을 제공한다. 참고로 underline은 존재하지 않는데, 그 이유는 아마도 hyperlink랑 구분하기 위해서로 추정된다. # 큰 제목## 그다음 큰 제목### 그다음 큰 제목....###### 제일 작은 제목 - 글머리기호1. 숫자 기호 하이퍼링크(단축키 컨트롤+k): [GitHub](http://github.com)엔터 2번: 문단나누기 (띄어쓰기를 넣으면 안됨)*기울기***굵게*****기울고 굵게***~~취소선~~ 다른 github issue 태깅하기 : # 하고 선택해서 태깅 space 3번( ): 문단 들여쓰기(Indentation) > : 이메일 스타일 문단 인용 *** .. 2017. 8. 21.
Jupyter Notebook # Jupyter와 IPython의 관계: 원래는 Jupyter와 IPython은 하나의 프로젝트 였음. 근데 notebook이 엄청 흥하면서 점차 프로젝트의 규모가 커졌음. 이에 Python이 아닌 다른 언어를 지원하기시작하고 더 잦은 업데이트가 필요한데 규모가 너무커서 힘들었음. 그래서 3.0버전까지는 하나의 통합된 IPython만 존재했는데, 이제부터는 쪼개서 jupyter라는 거대한 통합 플렛폼안에 소속된 프로젝트로 IPython이 들어가는 형식으로 쪼갰음.(즉 여러 언어중에 하나로 Python도 지원한다.) http://blog.jupyter.org/2015/04/15/the-big-split/ 현재 최신 jupyter notebook은 5.0 버전임. https://github.com/jupy.. 2017. 5. 23.
TensorFlow Extreme Performance Tuning 텐서플로우는 잘못사용하면 정말 정말 정말 느리다. 기본적으로 주어지는 공식 예제는 속도 최적화를 전혀 고려하지 않은 예제이기 때문에, 내가 아무리 비싸고 좋은 GPU를 사용하더라도, 저렴한 GPU에 비해 심각하게 느릴 수 있다. 이에 대한 여러가지 분석과 해결법을 정리해본다. 1. GPU Utilization 분석 먼저 내가 만든 TensorFlow 모델이 과연 얼마나 최고의 효율로 GPU를 사용해서 돌아가고 있는지 확인하자. 그래서 nvidia-smi 혹은 nvidia-smi -a 를 입력하여 Volatile GPU-util 이라는 항목을 볼 수 있는데 이것의 의미는 최근 1 초동안 busy 상태였던 core의 비율을 의미한다. http://stackoverflow.com/questions/508681.. 2017. 1. 20.
TensorFlow 프로그래밍 TensorFlow # flags 사용: https://stackoverflow.com/questions/33703624/how-does-tf-app-run-workflags로 지정된 변수들은, tf.app.run()을 이용해 실행할 경우 main.py 함수를 실행할 때 자동으로 커맨드 라인에 입력한 argument를 parsing하여 내부로 자동 전달해주는 역할을 한다. "Runs the program with an optional 'main' function and 'argv' list." The name 'conv_layer1/h_pool1' refers to an Operation, not a Tensor. Tensor names must be of the form ":". 아하.. 그냥 name.. 2016. 9. 13.
빅데이터 플랫폼 - CRM(Customer relationship management) : 빅데이터가 있기 전, 고객 정보를 분석하여 경영 상 의사결정에 도움을 주는 분석 기술http://ko.wikipedia.org/wiki/%EA%B3%A0%EA%B0%9D_%EA%B4%80%EA%B3%84_%EA%B4%80%EB%A6%AC - DW(Data Warehouse) : 마찬가지로 빅데이터가 있기 전, 데이터를 분석하여 경영 상 의사결정에 도움을 주는 분석 기술을 의미http://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0_%EC%9B%A8%EC%96%B4%ED%95%98%EC%9A%B0%EC%8A%A4 - Hadoop : 빅데이터를 처리하는 오픈소스 분산 파일 시스템. 아래 블.. 2015. 4. 13.
Practical Theano Tutorial theano는 아주 강력하고 편리한 병렬처리 딥러닝 연구 라이브러리이다. 파이썬 기반이며 gpu 병렬프로그래밍을 할 줄 몰라도 쓸 수 있으며, 심볼릭 연산기반으로 사용이 편리하다. 들으면서 소스코드 및 메모등을 정리하였다. 2015. 3. 11.
Theano 사용법 - Theano 에서 심볼릭 변수 print하기단, 반드시 최종 theano.function을 하는 computation graph에 해당 변수가 포함되어있어야 만 함.# this is the optimal solution for the checking the real shape outputs = Print(' outputs shape: ', attrs=['shape'])(outputs) http://deeplearning.net/software/theano/library/printing.html아래의 것들은 최적화가 아닌 여러 방법들.#print (outputs.get_value(borrow=True, return_internal_type=True).shape) # get_value is exist i.. 2015. 1. 20.
CUDA Programming CUDA 프로그래밍에서의 위험요소 https://drops.dagstuhl.de/opus/volltexte/2018/8984/pdf/LIPIcs-ECRTS-2018-20.pdf https://www.cs.unc.edu/~tamert/papers/rtss17.pdf https://github.com/yalue/cuda_scheduling_examiner_mirror 공식문서 https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#abstract 기본 튜토리얼 https://cuda-tutorial.readthedocs.io/en/latest/tutorials/tutorial01/ http://www.youtube.com/watch?v=m0nheP.. 2014. 11. 17.
CUDA / CuDNN / Theano / TensorFlow 설치하기 Ubuntu 14.04 LTS에서 GPU 컴퓨팅을 위한 기본적인 설치 방법이다. 만약 거의 아무것도 설치하지 않은 방금 깐 unbuntu 라면 바로 1, 2, 3번만 설치한 후 7번 항목으로가서 글을 읽기를 활용할 것을 추천한다.(이 방법은 모든 딥러닝 라이브러리를 한 번에 사용할 때 유용함)그렇지 않고 기존에 사용하던 서버에서 추가적인 설치가 필요한 경우나, 아니면 선택적으로 딥러닝 라이브러리를 사용할 경우 나머지 항목을 참조하기 바란다. - 본 글은 2017.3월 현재 최신 버전의 설치 방법을 정리하였다. 0) GPU device의 CUDA 지원 유무확인lspci | grep -i nvidia 또는 sudo lshw -C display 명령어로 내 GPU 장치를 확인하고, https://develop.. 2014. 7. 7.
Weka 웨카 3.7 버전대부터 Classifier - More Option - Store Predictions for visualization 옵션이 추가되었다. 또한 package 메니저도 3.7 버전대 부터 추가되었다.(매우 편리함) - percentage split 할 때, more option에서 preserve order를 켜주어야, 랜덤으로 섞어서 학습 하지않는다. - zeroR Classifier 제로 R 클래시파이어는 성능의 baseline을 알아내는 용도의 분류기이다. 이것은 매우 간단하기 training데이터에서 가장 빈도가 높은 class로 target에 있는 모든 데이터를 예측해버린다. 즉 한마디로 제일 빈번한 클래스 한군데로 올인을 하는 것이다. 그래서 속도가 매우빠름. arff 포멧은 .. 2014. 6. 23.
MATLAB 문법, API, 단축키, 환경설정 MATLAB 단축키함수 정의 보기 : 컨트롤 + D, 함수에 우측 클릭해서도 가능스크립트 전체 실행 : F5스크립트 구간별 실행 : 드래그해서 F9 (원하는 부분들만 드래그하여 F9로 실행)컨트롤 엔터 : 해당 섹션만 실행 (섹션은 %%로 구분함) Breakpoint : F12, 왼쪽 라인에 클릭해서도 가능. 그다음 F5로 실행하여 바로 변수값 바로 볼수있고(마우스 커서를 올림), 역시 F10,F11 등으로 스텝 실행 가능 주석 한번에 달기 : Control + R 주석 한번에 지우기 : Control + T자동완성 : TAB 키 MATLAB 환경설정 sig(x,w,b) 하면 계산이 바로 됨.중요한 점은 이렇게 생성한 http://kr.mathworks.com/help/matlab/matlab_prog/.. 2014. 6. 23.