# 들어가며
인공지능 연구가 거듭될수록 하드웨어가 중요해지고 있다. vLLM, CXL 메모리 같이 on-device AI를 위한 새로운 low-level 인공지능 하드웨어 관련 기술이 발전하고 있다. 1. 신경망이 무엇인지 알아보고 구현하기, 2. 코드/알고리즘을 사용한 가속화, 3. 간단한 NPU 설계를 다루도록 한다.
# Introduction to DNN
### 인공지능의 요즘 트렌드
1. 더 정확해지고 있다
2. 사이즈(가중치 행렬 등)이 커지고 있다
3. 급속하게 복잡하고 비용이 비싸지고 있다
4. 이에 따라서 다양한 칩이 개발되며 출시되고 있다
vLLM이라던지, 하드웨어 가속기라던지 요즘 서버나 반도체 시장의 규모가 커지는데에는 이유가 있다. 인공지능 없이 살수 없게 된 사람들은 같은 성능의 인공지능이라도 더 저렴하고 더 빠르고 더 가볍고 더 사용하기 좋은 인공지능을 원한다(당연한 이치이다).
### DNN을 최적화 하는 여러가지 방법
DNN을 최적화 하는 방법은 다양하다 흔히 생각하는 알고리즘 방법론을 바꿔서 최적화 하는 방식부터, 라이브러리를 최적화 하는 방법, Low-rank approximation과 pruning을 하드웨어 가속과 함께 쓰는 방법, 양자화와 하드웨어 가속을 함께 쓰는 방법, 그리고 하드웨어 가속기를 사용하는 방법 등등! 엄청 다양하다!
flops?
플롭스는 컴퓨터의 성능을 수치로 나타낼 때 주로 사용되는 단위이다. 초당 부동소수점 연산이라는 의미로 컴퓨터가 1초동안 수행할 수 있는 부동소수점 연산의 횟수를 기준으로 삼는다.
# Basic of Deep Learning
AI, Machine Learning, Deep Learning 사실 이제 와서 구분은 의미가 없지만 순서대로 더 작은 범주에 속한다.
### Machine Learning의 종류
머신러닝에는 굉장히 많은 카테고리가 존재한다. 다음은 대표적인 몇가지이다.
- Supervised Learning
지도학습이라고도 하며, 예측과 정답이 존재한다. 궁극적으로 예측을 정답에 가깝도록 만드는 방법이다. - Unsupervised Learning
비지도학습이라고도 하며, 정답(라벨)이 없는 데이터셋을 사용한다. 데이터 자체의 특성을 파악한다. 요즘 유행하는 방법이다. - Reinforcement Learning
강화학습이라고도 하며, 행동에 대한 보상이 주어진다. 보상을 극대화 하는 방향으로 학습한다. 요즘 유행하지만 아직 연구가 덜 됐다.
### Deep Learning의 종류
딥러닝은 굉장히 많은 종류가 있다. Classification, Object Detection, Segmentation, Translation 등등.. 구분은 무의미하다.
## Neural Networks
신경망이라고도 하며, 인간의 뇌에 존재하는 뉴런을 모방한 구조이다. 인공지능은 이 뉴런을 학습시켜서 데이터를 처리하도록 하는 방식이다. 신경망은 여러개의 층으로 이루어져있으며, 각 층은 여러개의 노드(뉴런)으로 이루어져있다. 신경망은 데이터의 특징을 표현하는(추출하는) 방법이라고 생각할 수 있다.
### Multi-layer Perceptron
신경망의 층을 용도와 형태에 따라서 입력층, 은닉층, 출력층으로 구분할 수 있다. 이렇게 구분한 모양을 Perceptron(퍼셉트론)이라고 한다. 어찌보면 현대 인공지능의 시조새 같은 형태라고 할 수 있다. 모든 연산은 행렬로 구성된다. 입력도 행렬, 가중치도 행렬, 결과물도 행렬이다.
Multi-layer Perceptron의 가장 큰 특징은 활성화 함수이다. 필자가 인공지능 강의를 할 때마다 가장 중요하게 강조하는 부분인데, 활성화 함수를 통해서 선형성의 늪을 벗어난다. 생각해보면 간단하다. 행렬은 선형적이다.
- 행렬끼리 곱하고 더하고 곱하고 더하는것을 100만번 반복한다고 생각해보자. 100만번 뒤의 행렬 연산 결과물로부터 첫번째 초기 행렬의 형태를 알아내는 것은 쉬울 것이다. 이말은 즉, 첫번째 행렬이 100만번 뒤의 행렬 연산 결과물에 강하게 영향을 미칠 것이다.
- 하지만 행렬을 한번 곱할 때마다 임의의 연산을 가한다. 연산의 결과물은 입력 행렬 값에 따라서 달라진다. 100만번 뒤의 행렬 연산 결과물로부터 첫번째 초기 행렬의 형태를 알아내는 것이 쉬울까? 연산이 비선형적으로 바뀐 것이다.
이러한 Deep Neural Network에는 다양한 종류가 있다고 했다. 그 중에서, Classic한 것이 CNN(Convolutonal NN), RNN(Recurrent NN)과 같은 것들이다. 이런것들은 기술이 발전하면서 더욱 복잡하고 정교해졌지만 근본적인 원리는 전혀 바뀌지 않았다.
# Basic of Convolutional Neural Network
CNN은 오랜시간 발전 해왔다. 굉장히 기본적인 알고리즘이다. 하지만 그만큼 강력하고 이해하기 쉽다. CNN의 기본은 Convolution Filter(Kernel)이다. 필터는 이미지의 특징을 뽑아낸다. 이러한 형태의 이산적인 필터는 CNN이 등장하기 전에 이미 고전적인 이미지 처리에서 폭넓게 사용되고 있었다.
컨볼루션 연산은 인공지능, 이미지에만 국한되는 것은 절대 아니다. 신호 처리에서도 컨볼루션 연산은 적용된다. 행렬 연산이라는 것은 수학적으로 어떠한 값의 체계를 다른 공간에 투영(Projection)시키는 과정이다. 컨볼루션 연산 자체가 가지는 의미는 굉장히 다양하다. 이를 이미지 처리 분야에 사용한 것 뿐이다.
다음은 기본적인 CNN의 구조이다. 저기에서 크게 바뀌는 것이 많이 없다. ViT와 같은 최신 기술이 들어오면서 고전적인 CNN을 그대로 답습하는 구조는 많이 사장되었지만, 여전히 Object Detection과 같은 빠른 처리가 필요한 알고리즘은 부분적으로 고전적인 CNN을 사용한다. 저 구조 안에서 Convolution 단계에 90%~99%의 시간 및 자원이 소모된다.
### 컨볼루션 연산
컨볼루션 연산은 인풋, 필터, 아웃풋 이미지들로 구성이 된다. 자세한 연산 과정은 굉장히 쉬우므로 다른 CNN 강의를 참고하자.
# Neural Network Training
인공지능 분야는 Training(학습), Inference(추론) 두가지가 가장 중요하다. 학습은 학습이다. 추론은 학습된 것을 바탕으로 데이터가 들어왔을 때 예측 결과물을 도출하는 것이다. 말그대로 추론이다. 명탐정 코난을 키운다고 생각해볼까?
자세한 내용은 인공지능 관련 내용 정리가 유튜브나 블로그에 굉장히 잘 많이 있다. 다른 강의들을 참고하자.
국민대학교 권은지 교수님의 인공지능 하드웨어 강의를 수강하며 정리한 내용입니다.
Slides Provided
임베디드 시스템 프로그래밍 - Eunhyeok Park
딥러닝 최적화 - Eunhyeok Park
'AI > AI Hardware' 카테고리의 다른 글
[인공지능 하드웨어] 6 - Deep Learning Optimization(Convolution Lowering, Systolic Array) (6) | 2024.10.11 |
---|---|
[인공지능 하드웨어] 5 - GPU Performance Optimization(Matrix Tiling, Tensor Core) (8) | 2024.10.09 |
[인공지능 하드웨어] 4 - GPU Architecture(2) (3) | 2024.10.07 |
[인공지능 하드웨어] 3 - GPU Architecture(1) (7) | 2024.10.04 |
[인공지능 하드웨어] 2 - DNN Computation (3) | 2024.09.23 |