티스토리 뷰
[Day 37] 모델 경량화 - 3
1. 강의 복습 내용
모델 경량화 - 3
1. Acceleration
1.1) 가속 (Acceleration)이란?

1.2) 머신러닝 모델에서의 가속이란?

- 머신러닝 모델 관점에서의 Acceleration 향상 요소
- Manycore designs (코어)
- low-precision arthmetic (연산)
- novel dataflow architectures (병목 현상 제거)
- in-memory computing capability (메모리 처리)
즉, 계산량이 많은 곳 -> 병목 현상 -> 처리 -> Acceleration (가속) 효과
1.3) 하드웨어 관점
: 하드웨어의 성능이란 대부분의 경우 가속(OR 속도)을 초점에 많이 둔다.

- CPU는 직렬연산, GPU는 병렬연산에 최적
즉, 어플리케이션의 연산집약적인 부분을 GPU로 넘기고 나머지 코드만을 CPU에서 처리하는 GPU 가속 컴퓨팅은 특히 딥러닝, 머신러닝 영역에서 강력한 성능을 제공한다.

- CPU, GPU 외에도 다양한 하드웨어 Chip들이 개발되고 있으며, AI 분야에 적절한 기능들을 제공하기 위하여 TPU, NPU, IPU 등 지속적으로 발전하며 제안되고 있다.
1.4) Compression : Acceleration

Compression, Acceleration은 같이 자주 등장하는 관계이다.
- High level (Software) -> Compression에 무게를 좀 더 두고
- Low level (Hardware) -> Acceleration에 무게를 좀 더 둔다.
왜냐하면 보통은 Input(입력)->Software(구현)->Compile(번역)->Hardware(실행)->Output(출력) 의 순서로 지시가 내려오기 때문.
2. 가지 치기 (Pruning)
- 머신러닝 모델에서의 Pruning이란, 보통 중요하지 않은 Weight들을 삭제(가지 치기)하는 것이다.

: 머신러닝 모델 관점에서의 Pruning은, 더 빠른 속도 그리고 일반화를 기대할 수 있겠지만 정보 손실과 Optimization 과정에서 Pruning된 Tensor를 오히려 까다롭게 받아들일 수 있다는 단점도 존재한다.
2.1) Pruning = Dropout ?
: 중요하지 않은 Weight를 삭제 하는 Pruning과 모델의 노드들을 학습 과정에서 키거나, 끄고의 차이이다.
즉 Pruning은 Inference 과정에서도 삭제한 Weight들을 절대 복구하지 않으며 경량화를 목적으로 하는 기법이고, Dropout은 학습 단계에서 노드들을 키고, 끄고 하는 동작으로 유사 Ensemble 효과를 통한 성능 향상을 기대하는 기법이다.

2.2) 다양한 Pruning 기법

*) Unstructured Pruning vs Structured Pruning

- 둘 중에 뭐가 더 좋다고 할 순 없지만, 중요하지 않은 Weight 각각을 삭제하는 방법과 Weight들을 포함하고 있는 Structure 안에서의 (Filter, Layer 등등) 요소를 삭제하는 방법이 있다.
*) One-shot Pruning vs Iterative Pruning

- One-shot Pruning은 한번의 Pruning으로 끝내는 기법이고, Iterative Pruning은 반복적으로 수행하는 기법이다.
- 하지만 Pruning에는 모델의 성능이 하락하는 Trade-off가 나타날 수 있으며 그것을 최대한 커버하며 Pruning을 점진적으로 진행하는 것이 Iterative Pruning 기법이다.
- 즉, Iterative Pruning은 Pruning 후 Retraining을 반드시 수행하며 반복한다.
2. 피어 세션
1. 강의 내용에 대한 토의
- Further Question
- 슬라이드 그래프의 의도 및 의미 분석 (레퍼런스 참조)
- Toy Code 토론
- Purning 기법 토론
2. 모더레이터 선정 주제 토의
- 경진대회 TASK 관련 토론
3. Conclusion
오늘은 강의 내용도 흥미로웠고, 관심이 많이 갔다. 또 토의해볼만한 내용도 많아서 다같이 고민하며, 슬라이드 하나 하나의 의미 파악하는 것도 재미있었다.
그리고 재미 삼아 진행중인 경진 대회에서 사소한 하나 때문에 결과가 나오지 않아 답답했었는데, 오늘 그 실마리를 찾아 해결을 하게 되어서 너무 기분이 좋다.
오늘 얻은 교훈은 '꾀부리지 않고 코딩하자.' -> Dataset의 경로로 Label 처리하는 것이 귀찮아 Train set : Image Folder / Test set : Custom class 로 따로 받았던 것이 문제였다. (이미지 파일의 경우, 학습과 테스트 데이터셋은 모두 같은 전처리를 통과해야만 한다.)
'부스트캠프 AI Tech > 학습정리' 카테고리의 다른 글
부스트캠프 AI Tech P-Stage 총 정리 (0) | 2021.07.06 |
---|---|
[Day 38] 모델 경량화 - 4 (0) | 2021.03.18 |
[Day 36] 모델 경량화 - 2 (0) | 2021.03.16 |
[Day 35] 모델 경량화 - 1 (0) | 2021.03.15 |
[Day 34] Computer Vision (CV) - 5 (0) | 2021.03.12 |
- Total
- Today
- Yesterday
- 그리디
- dfs
- Unet 구현
- pandas
- 브루트포스
- 부스트캠프 AI Tech
- 공공데이터
- 데이터핸들링
- Data Handling
- Vision AI 경진대회
- 이분탐색
- cnn
- AI 프로젝트
- 알고리즘
- NLP 구현
- python
- 백준
- C++
- DACON
- DeepLearning
- 네트워킹데이
- 데이터연습
- P-Stage
- 백트래킹
- 코딩테스트
- 동적계획법
- Unet
- 다이나믹프로그래밍
- 프로그래머스
- ResNet
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |