(6강) 빠르게

💡
동일하거나 근사한 연산을 더 빠르게 수행하는 가속화에 대해 알아본다.

Acceleration

가속이란, 특정 연산을 수행하는데 걸리는 시간을 단축하는 것이다. 예를 들어, Python의 listnumpy.array는 동일한 연산이더라도 수행 속도에 큰 차이가 있다. 이런 관점에서 Numpy Module은 Software적인 가속을 했다고 생각할 수 있다. 실제로 Numpy는 C를 기반으로 한 Module이기에, 이러한 가속이 가능했다. 비교적 Low Level Language C가 비교적 High Level Language인 Python에 비해 속도가 빠르기 때문이다.

데이터나 물질이 이동하는데 있어서 매질의 특성에 따라 속도적으로 큰 차이를 보이는데, 어떤 매질에 의해 속도가 느려지면 전체적인 속도가 늦어진다. 이와 같은 현상을 병목현상이라고 한다.

매질과 병목현상의 예시

즉, 가속은 병목현상을 해결하는 것과 밀접한 관계를 갖는다.

Hardware (chip)

병목현상에 대한 처리는 Hardware의 개념에서 쉽게 접근할 수 있다. CPU와 GPU같은 Chip은 각각의 목적에 맞게 설계가 되어있다. 이외에도 많은 목적을 가진 Process Unit이 존재한다.

대중적으로 가장 잘 알려진 CPU와 GPU의 차이는 다음과 같다.

CPU와 GPU의 차이

Compression & acceleration

압축과 가속은 매우 밀접한 관계를 갖는다. 둘을 완전히 구분할 수는 없지만, 대체로 압축은 Software의 Level에서 이루어지고, 가속은 Hardware의 Level에서 이루어지는 경우가 많다.

Hardware는 Chip과 같은 연산기를 의미하며, 아래와 같은 이유로 가속과 큰 연관을 갖는다.

Chip과 Acceleration

가속을 목적으로 할 때는 대체로 Hardware의 설계와 번역의 단계에 관심을 갖는다.

Deep learning compiler

우리의 Code는 Compile을 통해 Computer가 이해할 수 있는 Low Level Language로 변환된다. 여러 회사에서 개발한 다양한 컴파일러가 있고, 우리는 이를 사용하고 있다. 각 컴파일러마다 특징을 갖고 있는데, 특히 지원하는 기능에도 차이가 있다. 각각의 컴파일러는 결국 Computer가 이해할 수 있는 언어로 변환하지만, 중간 단계에서의 방법도 제각각이다. DL Compiler도 다양한 방법으로 Code를 Lowering하는데, 이는 다음 사진과 같다.

DL Compiler의 동작 예시

토이 코드

Parallel Processing


(7강) 가지치기

💡
딥러닝 경량화 기술 중 Pruning에 대해 알아본다.

Weighted sum

Weighted Sum이란, 가중평균을 의미한다. Decision Tree와 같은 Model에서 각 Node가 어느정도의 중요도를 갖는지 판별하여, 가중합을 구하는데에 사용할 수있다. 이처럼, 중요도와 비례해서 정보를 취합하는 방식을 의미한다.

Weighted Sum의 설명

Pruning이란?

Pruning이란, 가지치기를 의미한다. 중요한 가지만을 남기고, 비교적 중요도가 떨어지는 가지를 잘라내는 것이다. 이를 통해서 속도를 높이거나, 정규화의 효과를 얻을 수 있다. 개념적으로 Pruning은 좋은 성능을 갖는 모델을 기반으로, 노드를 제거하는 방식을 사용한다.

중요도에 따라서 특정 노드를 제거하는 방법

Pruning은 Drop Out과 유사하게 생각될 수 있지만, 매우 다른 목적을 갖는다. Drop Out은 Model의 Architecture를 변경하지 않고, 강건한 Model을 만들고자 Node를 강화하려는 것이다. Pruning은 Model의 Architecture를 변경해가며, 실제로 Node를 제거하고 Model의 Size를 줄이는 것이다.

Pruning과 Drop Out의 차이

여러 Pruning들

Pruning에는다양한 방법이 존재한다.

다양한 Pruning의 예시

대체로 One-shot의 방식보다는 Iterative한 방법을 많이 사용한다. 이는 Pruning을 수행하고, 학습하여 확인하고, 다시 Pruning을 하는 등의 방법을 의미한다.

Iterative Pruning의 예시

Lottery ticket hypothesis

Lottery Ticket Hypothesis는 원래의 Model 안에, 동일한 성능을 내는 소형의 Sub-model이 있다는 것이다. 이 논문은 리서치 트렌드를 만들어서, 이 논문의 다양한 한계를 극복하려는 후속 논문이 등장하게 되었다.

Lottery Ticket Hypothesis의 예시
후속 논문인 IMP with Rewinding의 예시

토이 코드

Why is pruned model larger?

'네이버 부스트캠프 AI Tech' 카테고리의 다른 글

[U] Day 40 - Lightweight V  (0) 2021.03.28
[U] Day 39 - Lightweight IV  (0) 2021.03.28
[U] Day 37 - Lightweight II  (0) 2021.03.28
[U] Day 36 - Lightweight I  (0) 2021.03.28
[U] Day 35 - CV V  (0) 2021.03.26

+ Recent posts