POPULAR POSTS
-
AVX (Advanced Vector Extensions)의 개념과 사용법
2008년 인텔은 AVX (Advanced Vector Extensions)라는 새로운 고성능 ISA를 발표한다. 이는 기존의 SSE (Streaming SIMD Extensions)에 포함된 많은 operation들을 지원함과 동시에 더 빠른 속도로 더 큰 덩어리(chunk)의 데이터를 처리할 수 있는 혁신적인 기술이었다. 이 글에서는 intrinsic functions라고 불리는 특별한 C 함수들을 통해서 어떻게 AVX, AVX2를 이용할 수 있는지에 대해서 다룰 것이다. AVX 명령은 mov, add와 같이 어셈블리 명령어에 해당한다. 예를 들어 vaddps라는 AVX 명령은 두 operand를 더해서 그 결과를 세번째 레지스터에 저장한다. 그렇다면 AVX 명령을 사용하기 위해선 어셈블리어로 코딩을..
-
[CV Study] Learning Deep Features for Discriminative Localization (CVPR '16)
Motivation 이미지 분류 문제를 풀면서 딥러닝 모델이 과연 어떤 정보에 기반하여 이러한 분류 결과를 냈을까라는 궁금증을 가질 수 있다. 아래의 그림은 "Visualizing and Understanding Convolution Networks"라는 논문에서 가져온 것으로, 완전히 학습된 모델에서 각 layer의 feature map을 시각화 한 것이다. 이와 같은 이전 연구들에서는 CNN 모델의 얕은 층에서는 대상의 edge와 같은 간단한 정보를 찾아내고 깊은 layer에서는 보다 고차원적인 feature를 추출한다는 것을 밝혀냈지만, 모델이 어떤 정보를 통해서 최종적인 분류 결과를 냈는지는 알 수가 없다. Classification 문제를 풀기 위해 모델을 학습하는 동시에 input 이미지의 중..
-
[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을 해주..
-
PyTorch를 ONNX로 export하기
ONNX란? ONNX(Open Neural Network Exchange)는 그 이름에서 살펴 볼 수 있듯이, Tensorflow, PyTorch와 같은 서로 다른 DNN 프레임워크 환경에서 만들어진 모델들을 서로 호환되게 사용할 수 있도록 만들어진 공유 플랫폼이다. Tensorflow에서 어떤 모델을 만들고 이를 ONNX 그래프로 export를 하면, 이후에 PyTorch와 같은 다른 프레임워크에서도 그 모델을 import 하여 사용할 수 있다. ONNX의 장점을 정리하자면 다음 두 가지를 뽑을 수 있다. 1. Framework Interoperability 위에서 언급했다시피 특정 환경에서 생성된 모델을 다른 환경으로 import하여 자유롭게 사용을 할 수 있다는 것은 ONNX의 최대 강점이다. 예컨..
RECENT POSTS
-
[EuroSys '19] Parallax: Sparsity-aware Data Parallel Training of Deep Neural Networks
Problems To Solve In the context of distributed training, DL frameworks provide good support for training models used in the image classification tasks, but it is less scalable for training NLP models due to the lack of consideration of the difference in the sparsity of model parameters. How to Solve To optimize the amount of data transfer with considering sparsity, Parallax adopts a hybrid appr..
2020.08.21 03:11 -
[ICLR 2019] ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware
Directly applying NAS to a large scale task (e.g. ImageNet) is computationally expensive or impossible. To solve this problem, Some works proposed to search for building blocks on proxy tasks, such as training for fewer epochs, starting with a smaller dataset (e.g. CIFAR-10), or learning with fewer blocks. $\to$ Cannot guarantee to be optimal on the target task. ProxylessNAS directly learns the ..
2020.07.28 02:41 -
[SOSP' 11] PTask: Operating System Abstractions To Manage GPUs as Compute Device
이 포스팅에서 리뷰할 논문은 2011년 SOSP에 나온 "PTask: Operating System Abstractions To Manage GPUs as Compute Devices"이다. 상당히 오래된 논문이지만 GPU 기반 이기종 시스템과 관련하여 중요하게 여겨지는 개념들과 아이디어들이 많기 때문에 구체적으로 리뷰를 하려고 한다. 염두에 두어야할 점은 이 연구에선 딥러닝의 맥락에서 GPU 스케줄링을 언급하고 있지 않으며 그 당시와 현재의 상황이 꽤 많이 달라졌다는 것이다. ABSTRACTION 이 논문에서는 GPU를 CPU와 같은 1순위 계산 자원으로 활용할 수 있도록 하기 위한 OS abstraction(OS API)인 PTask API를 소개한다. PTask API에서 OS가 관리하는 여러 객체..
2020.07.07 00:11 -
[CV Study] Accelerating the Super-Resolution Convolutional Neural Network
Paper Link: https://arxiv.org/pdf/1608.00367.pdf Image super-resolution(SR) 태스크에서 SRCNN이 좋은 성능을 거두었지만 real-time 서빙을 하기에는 연산 비용이 너무 크다는 문제가 있다. 이 논문에서는 모래시계 모양의(encoder-decoder 구조를 생각하면 된다.) CNN 구조를 활용하여 기존의 SRCNN을 경량화, 가속화하는 것에 중점을 두었다. 이를 위해서 다음과 같은 3가지 방법을 취하였다. DCGAN, pix2pix 등에서 사용하는 transposed convolution(deconv)을 네트워크의 후반부에 활용하여, 저해상도(LR)의 입력 이미지와 고해상도(HR)의 출력 이미지 간의 매핑이 E2E로 학습가능한 네트워크 구조..
2020.07.05 16:57 -
[Facebook 추천 시스템: DLRM] Deep Learning Recommendation Model for Personalization and Recommendation Systems
이번 포스팅에서는 2019년 페이스북에서 나온 추천 시스템 논문인 DLRM을 다룬다. Introduction 기존 personalization 및 recommendation 태스크에서 딥러닝이 활용된 연구들을 살펴보면 크게 두 부류로 구분할 수 있다. 1. 추천 시스템 가장 원시적인 추천 시스템에서는 몇몇 전문가들이 상품들을 몇 개의 카테고리로 묶은 뒤, 유저들이 기호에 따라 카테고리를 선택하도록 하는 방식을 사용하였다. 이것이 발전되어서 만들어진 것이 과거의 유저의 행동(상품을 장바구니에 넣는다든지, 구독을 한다든지, 좋아요를 누른다든지...)에 기반하여 추천을 하는 CF(collaborative filtering) 기법이다. 그 밖에도 유저와 연관성이 높은 상품을 함께 grouping하여 추천을 하는..
2020.06.30 02:04