POPULAR POSTS
-
OpenCL에서 효율적인 행렬곱(matrix multiplication) 수행
행렬 A: M x K 행렬 B: K x N 행렬 C: M x N 이 글에서는 OpenCL에서 $C = A \times B$를 효율적으로 계산하는 방법에 대한 내용을 다룬다. 총 4가지 버전의 구현이 있으며 설명 순서대로 incrementally 성능이 개선된다. 이 글은 https://cnugteren.github.io/tutorial/pages/page1.html의 많은 내용을 참고해서 작성 되었다. (이 글에서 사용한 행렬곱을 시각화한 그림은 모두 위의 링크에서 가져왔다.) OpenCL 없는 구현 1. naive version 가장 일반적으로 생각 해낼 수 있는 행렬곱 구현이다. for (int i=0; i
-
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 명령을 사용하기 위해선 어셈블리어로 코딩을..
-
PyTorch를 ONNX로 export하기
ONNX란? ONNX(Open Neural Network Exchange)는 그 이름에서 살펴 볼 수 있듯이, Tensorflow, PyTorch와 같은 서로 다른 DNN 프레임워크 환경에서 만들어진 모델들을 서로 호환되게 사용할 수 있도록 만들어진 공유 플랫폼이다. Tensorflow에서 어떤 모델을 만들고 이를 ONNX 그래프로 export를 하면, 이후에 PyTorch와 같은 다른 프레임워크에서도 그 모델을 import 하여 사용할 수 있다. ONNX의 장점을 정리하자면 다음 두 가지를 뽑을 수 있다. 1. Framework Interoperability 위에서 언급했다시피 특정 환경에서 생성된 모델을 다른 환경으로 import하여 자유롭게 사용을 할 수 있다는 것은 ONNX의 최대 강점이다. 예컨..
-
[Facebook 추천 시스템: DLRM] Deep Learning Recommendation Model for Personalization and Recommendation Systems
이번 포스팅에서는 2019년 페이스북에서 나온 추천 시스템 논문인 DLRM을 다룬다. Introduction 기존 personalization 및 recommendation 태스크에서 딥러닝이 활용된 연구들을 살펴보면 크게 두 부류로 구분할 수 있다. 1. 추천 시스템 가장 원시적인 추천 시스템에서는 몇몇 전문가들이 상품들을 몇 개의 카테고리로 묶은 뒤, 유저들이 기호에 따라 카테고리를 선택하도록 하는 방식을 사용하였다. 이것이 발전되어서 만들어진 것이 과거의 유저의 행동(상품을 장바구니에 넣는다든지, 구독을 한다든지, 좋아요를 누른다든지...)에 기반하여 추천을 하는 CF(collaborative filtering) 기법이다. 그 밖에도 유저와 연관성이 높은 상품을 함께 grouping하여 추천을 하는..
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