분류 전체보기(48)
-
[ASPLOS 2020] SwapAdvisor: Push Deep Learning Beyond the GPU Memory Limit via Smart Swapping
뉴럴넷의 깊이(layer의 수)와 넓이(레이어 당 파라미터 수)가 커질 수록 더 좋은 accuracy를 얻을 수 있다는 건 여러 연구를 통해서 밝혀진 사실이다. 하지만 GPU 메모리의 한계로 인해서 마냥 큰 모델을 만들 수만은 없다. 이 논문에서는 GPU 메모리 한계를 극복하기 위한 한 가지 방법으로 dataflow graph가 주어졌을 때 operator scheduling, memory allocation, swap decision을 자동으로 생성한다. 1. Introduction 이전의 연구들은 GPU 메모리 사용량을 줄이기 위해서 더 적은 floating point precision을 사용하거나, quantization을 통해서 더 sparse한 모델 파라미터를 생성하는 compression 기법..
2020.03.01 -
ctypes를 통해 c++ array를 python list로 변환하기
float* makeArray(){ float *arr = malloc(2 * sizeof(double)); A[0] = 0.123; A[1] = 0.456; return arr; } 위와 같이 C 레벨에서 malloc을 통해서 메모리 공간에 할당 된 배열이 있을 때 이를 파이썬 리스트로 변환하려면 ctypes 라이브러리를 활용하면 된다. 파이썬 레벨로 올라가기 전에 C 레벨에서 미리 memory free를 위한 함수를 정의해준다. void freeptr(void *ptr) { free(ptr); } 만약에 위와 같은 함수들이 포함된 소스를 shared objective file로 컴파일 했다면 다음과 같이 사용할 수 있다. (만약 Cython을 사용하면 굳이 .so 파일을 만들 필요가 없다.) impo..
2020.03.01 -
[OSDI 2018] TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 논문 정리
TVM의 개념을 한 마디로 정리하자면, "주어진 하드웨어에 따라서 그 백엔드에 알맞게 high-level(graph level) 최적화와 low-level(operator level) 최적화를 동시에 제공하는 E2E 컴파일러"라고 할 수 있다. FPGA, ASIC 가속기들부터 여러 임베디드 edge device들까지 하드웨어 환경은 제각기 다르기 때문에, 각 환경의 특성에 알맞게 최적화를 하려면 서로 다른 방식으로 최적화 튜닝을 해주어야 한다. Tensorflow, PyTorch를 비롯한 여러 딥러닝 프레임워크들도 graph IR(Intermediate Representation)에 대해서만 최적화를 적용할 뿐, 하드웨어 특성에 따라 유동적으로 operator-level transformation을 해주..
2020.02.14 -
딥러닝에서 메모리를 효율적으로 관리하기 위한 기법들
1. Activation Compression 아주 적은 정도의 accuracy만을 희생하여 compressed representation을 만들어 사용하는 방법이다. "Faster Neural Networks Straight from JPEG"에서는 일부 디코딩된 JPEG 이미지에서 뽑아낸 discrete cosine transform code를 통해서 ImageNet 이미지를 분류하는 DNN 알고리즘을 고안하였다. 이를 통해서 inferencing 속도 향상과 memory 점유를 낮출 수 있었다. Faster Neural Networks Straight from JPEG The simple, elegant approach of training convolutional neural networks (C..
2020.02.13 -
PyTorch를 ONNX로 export하기
ONNX란? ONNX(Open Neural Network Exchange)는 그 이름에서 살펴 볼 수 있듯이, Tensorflow, PyTorch와 같은 서로 다른 DNN 프레임워크 환경에서 만들어진 모델들을 서로 호환되게 사용할 수 있도록 만들어진 공유 플랫폼이다. Tensorflow에서 어떤 모델을 만들고 이를 ONNX 그래프로 export를 하면, 이후에 PyTorch와 같은 다른 프레임워크에서도 그 모델을 import 하여 사용할 수 있다. ONNX의 장점을 정리하자면 다음 두 가지를 뽑을 수 있다. 1. Framework Interoperability 위에서 언급했다시피 특정 환경에서 생성된 모델을 다른 환경으로 import하여 자유롭게 사용을 할 수 있다는 것은 ONNX의 최대 강점이다. 예컨..
2020.02.08 -
[Linux/Mac] vim을 IDE처럼! zsh 설정부터 vim 플러그인 설정까지 총 정리
서버에 zsh 세팅과 vim 세팅을 하는 김에 쓰는 정리글이다. 아래의 스크린샷이 뒤에서 설명할 모든 설정을 완료하였을 때 보게될 최종적인 모습이다. tmux를 통해서 상하로 화면 분할을 한 상태이고 아래는 shell, 위는 vim 편집기를 보이고 있다. 이렇게 해놓고 작업하면 여타 IDE를 사용하는 것과 비슷한 느낌으로 작업이 가능하다. 전제조건 - 리눅스 / Mac - iTerm2 - zsh 1. Oh-My-Zsh (1) 설치 다음 둘 중 하나의 script 명령을 통해서 oh-my-zsh 다운로드를 받는다. $ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 혹은 ..
2020.02.07