본문 바로가기

분류 전체보기

(71)
MNIST Classification (PyTorch) 0. Overview 본 포스팅에서는 0~9 숫자의 손글씨 이미지를 분류하는 'MNIST Classification'을 PyTorch를 이용해 구현한다. Jupyter Notebook을 이용해 .ipynb 파일에서 코딩을 하였고, 전체 코드는 필자의 github repository를 참고하면 된다. 포스팅에서는 설명을 할 만한 주요 코드 위주로 다루고자 한다. github repository: https://github.com/soohyuncha/MNIST_Classification GitHub - soohyuncha/MNIST_Classification Contribute to soohyuncha/MNIST_Classification development by creating an account on ..
[HPCA '21] (1/2) H. Wang, SpAtten: Efficient Sparse Attention Architecture with Cascade Token and Head Pruning 1. Introduction Attension-based NLP 모델과 비효율성 Attention mechanism에 기반한 NLP 모델 (예를 들어 Transformer, BERT, GPT-2)들은 기존의 CNN, RNN에 비해 우수한 성능을 보인다. 그러나 attention은 GPU, CPU와 같은 general-purpose HW 환경에서 느리게 동작한다. 예를 들어, GPT-2 모델을 통해 30-token 길이의 문장을 생성하는 데에 GPU는 약 370ms 가 걸린다. 이것은 이미지 분류를 수행하는 MobileNet-V2의 6ms에 비하면 매우 큰 latency 이다. 연산 자원이 제한적인 모바일 환경의 경우 이런 모델을 이용해 interactive dialog를 수행하는 것이 거의 불가능에 가깝..
[Ch 5] CPU Scheduling, Dispatcher, Criteria, Algorithms 5.1 Basic Concepts Single core 시스템에서 어떤 시점에 실행될 수 있는 프로세스의 수는 최대 1개이다. 여기서 multiprogramming의 목표는 항상 어떤 프로세스가 CPU에서 실행되도록 함으로써, CPU utilization을 최대화하는 것이다. Multiprogramming이란 실행이 완료되지 않은 프로세스 2개 이상이 메모리에 올라와있는 것을 말한다. 하나의 프로세스는 I/O request와 같이 wait 해야 하는 상황이 되기 전까지 실행될텐데, wait 해야 하는 상황을 만나면 CPU가 idle 상태에 놓이게 된다. 이 때, OS가 해당 프로세스로부터 CPU 제어권을 가져와서 다른 프로세스에게 할당해주고, 이런 방식이 반복되며 여러 프로세스들이 번갈아 실행되는 것이다..
[Ch 4] Thread: Benefits of Multithreading, <pthread> library 4.1 Overview Thread는 CPU utilization의 기본 단위이다. Thread는 thread ID, PC, register, stack으로 구성되며, 같은 프로세스에 속한 다른 thread들끼리 코드, 데이터(global data), 파일과 같은 다른 OS resource들을 공유한다. Traditional process는 하나의 thread를 가졌지만, multiple thread를 가지면 동시에 여러 개의 task를 수행할 수 있다. 4.1.2 Benefits 1) Responsiveness: User와의 interaction에 대한 responsiveness를 향상시킬 수 있다. User의 클릭을 받는 것과 time-consuming task를 서로 다른 thread로 만들어두면,..
Introduction to Transformer Neural Network Transformer neural network의 구조를 공부하는 데에 아래의 3개 유튜브 영상과 NIPS 17년 논문을 참고하였다. 본 포스팅에서는 이들의 내용을 정리한다. Youtube 영상 링크 Episode 1: Position Embeddings https://www.youtube.com/watch?v=dichIcUZfOw Episode 2: Multi-Head & Self-Attention https://www.youtube.com/watch?v=mMa2PmYJlCo Episode 3: Decoder's Masked Attention https://www.youtube.com/watch?v=gJ9kaJsE78k Paper A. Vaswani, Attention is all you need, N..
[ISCA '22] C. Schwedock, tako: A polymorphic Cache Hierarchy for General-Purpose Optimization of Data Movement Abstract 컴퓨터 시스템의 데이터 이동은 load/store interface로 추상화가 되어 있는데, 이렇듯 소프트웨어가 데이터 이동을 직접 확인할 수 없는 것은 데이터 이동에 의한 실행 시간이나 에너지 비효율성 문제의 근원이 된다. 이에 대해 기존 연구들은 custom 하드웨어를 추가하곤 했는데, 본 논문에서는 HW-SW interface를 변화시킴으로써 이를 해결한다. 논문의 솔루션(tako)은 소프트웨어가 데이터 이동을 직접 확인하고 중재하는 것을 가능하게 하는데, cache miss, eviction, writeback가 발생할 때 소프트웨어 callback을 발생시키도록 한다. 이 때 software callback은 캐시와 물리적으로 근처에 있는 reconfigurable dataflo..
[Ch 3-2] Process creation, termination 3.3 Operations on Processes 3.3.1 Process Creation 실행 중인 프로세스는 새로운 프로세스를 만들 수 있는데, 이 때 프로세스를 만드는 입장을 parent process, 이에 의해 새롭게 생긴 것을 child process라고 한다. Child process는 또 새로운 child process를 만들 수 있을 것이므로, 이런 식으로 프로세스들이 트리 구조를 이루게 된다. 각 프로세스는 고유한 번호인 process identifier (이하 pid)를 가지며, kernel은 이 번호를 인덱스로 사용하여 각 프로세스의 속성에 접근하게 된다. 아래 그림은 Linux OS에서 프로세스들이 트리 구조를 이루고 있는 것을 나타낸다. 시스템이 부팅되자마자 systemd라는 프..
[Ch 3-1] Process: Concepts, Process Control Block, Context Switch 3.1 Process Concepts 3.1.1 The Process Process의 정의는 a program in execution 이다. 프로그램은 디스크에 저장되어 있는 코드(=list of instruction)로서 passive entity이며, process는 PC 레지스터가 다음 명령어를 가리키고 있고 여러 자원을 할당받는 active entity이다. 프로그램의 아이콘을 더블 클릭하거나 (file_name).out 명령어를 command 창에 입력하면, 프로그램이 메모리에 load 되면서 비로소 process가 된다. Process가 현재 수행하고 있는 activity를 나타내는 status로는 우선 program counter와 CPU의 각종 register들이 있다. 다음으로는 메모리인..