[AI System] AI System Metrics & Bottlenecks

"AI System Metrics & Bottlenecks"

[DL Models Outgrow HW]

· DL Model이 HW보다 더 빠르게 성장 → 격차를 줄이기 위해 Model 압축, 효율적 학습 등의 기술이 필수

<Cloud AI(NVIDIA)>
· TOPs, Memory Bandwidth 등의 성능이 발전했지만, 전력 소비도 함께 증가

<Qualcomm Hexagon DSP>

<Apple Neural Engine>
· 저전력 고성능을 목표로 하는 Edge Device는 저전력에 맞춰 설계
→ 메모리, 계산량, Delay 문제↑

∴ HW의 성능이 향상되어도 대규모 Model의 학습/추론에는 여전히 엄청난 전력, 시간, 비용 소모

Q) Cloud Sever 또는 Edge Device에서 AI Model을 학습/추론 시 우리가 봐야 할 핵심 지표는 무엇일까?
A) 정확도 말고도, 메모리, 계산량, Delay, 저장 공간 같은 System 지표를 봐야 함

[Parameter Memory]

· Model Size & Optimizer의 영향을 받음

Ex. 학습 시 필요한 메모리 요소(Model 크기가 m인 경우)
① Model Parameter : Weight 자체 저장 (m)
② Gradient : Backpropagation을 위한 기울기 값 (m)
③ 최적화 알고리즘 추가 메모리
    · SGD : 추가 비용 X (∵ Prameter + Gradient)
    · Momentum SGD : Momentum 값 저장 (m)
    · Adam : 1차 및 2차 Momentum 저장 (2m)

∴ Model이 커질수록 학습에 필요한 메모리는 기하급수적으로 증가

▣ Linear Layer(Fully-Connected Layer)

· # of Parameters = ci(Input Channels) x co(Output Channels)
· 입력의 각 Node가 출력의 각 Node와 연결 → 모든 연결마다 1개의 Weight 필요

▣ Convolutional Layer
· # of Parameters = ci(Input Channels) x co(Output Channels) x kh(Kernel Height) x kw(Kernel Width)
· 합성곱은 입력 전체와 다 연결되지 않고 작은 Kernel을 공유해서 사용 → 같은 입력 크기에서도 Parameter 수 감소 가능

▣ Model Size
· Model Size = (# of Parameters) x (Bit Width)

Ex. AlexNet(61M Parameters)
· 32-bit : 61M x 4-Byte(32-bit) = 244MB
· 8-bit : 61M x 1Byte(8-bit) = 61MB
→ 같은 Model도 정밀도에 따라 저장 용량이 크게 달라짐
∴ Quantization을 통해 정확도를 조금 희생하더라도 저장 용량 감소 가능

▣ Model Size + Optimizer Memory
Ex. AlexNet(61M Parameters) + 8-bit
· SGD : 61M x 2 = 122MB
· SGD with Momentum / RMSProp : 61M x 3 = 183MB
· Adam : 61M x 4 = 244MB
→ 학습 메모리는 Model 파일 크기와 다름

[Activation Memory]

· Mini-Batch Size 또는 Dataset Size의 영향을 받음
· Model을 통과하며 각 Layer에서 출력되는 중간 결과물

▣ Linear Layer(Fully-Connected Layer)

· Activation : 해당 Layer를 통과하면서 만들어지는 중간 결과값
· 1 Sample이 아닌 Mini-Batch n개가 들어오면, Activation 수도 각 층마다 n배
  → Batch Size가 커질수록 Activation Memory는 선형적으로 증가

▣ Convolutional Layer
· # of Activations = n(Batch Size) x wo(Output Width) x ho(Output Height) x co(Output Channels)
→ 이미지 해상도가 크고 채널 수가 많으면 Activation Memory가 매우 커질 수 있음

> Forward Propagation
· Activation이 자연스럽게 순서대로 계산
· 만약 Backpropagation을 안 한다면, 새로운 Activation 계산 후 이전 Activation 값 폐기 가능 = 추론만 한다면 이전 값 폐기 가능
∴ Inference는 Training보다 메모리를 적게 사용

> Backpropagation
· Backpropagation에서 Gradient를 계산할 때 각 층의 Activation 필요 = Forward Propagation에서 생성한 Activation 필요
→ Forward Propagation에서 생성한 Activation 저장 + Bacpropagation에서 저장한 Activation을 사용하여 Gradient 계산
∴ Training은 Inference보다 메모리를 많이 사용

** Activation Size = din x n / Weight Size = dout x din
→ Batch Size가 커질수록 Activation Memory가 선형 증가

∴ 학습 메모리를 제대로 보려면 Model 뿐만 아니라 Batch Size와 Architecture도 같이 봐야 함

[Computation/Delay]

         <m x n>                                                                 <m x n x k>

▣ Forward Propagation for Linear Layer(Fully-Connected Layer)
· # of MAC Operations = n(Batch Size) x ci(Input Channels) x co(Output Channels)

▣ Forward Propagation for Convolutional Layer
· # of MAC Operations = n x ci x kh x kw x ho x wo x co

▣ FLOP(Floating Point Operations)
· Any Arithmetic Operation performed on Floating Point Numbers
→ 1 Multiplication = 1 FLOP
→ 1 Addition = 1 FLOP
→ 1 MAC = 2 FLOP (∵ 1 Mult & 1 Add)

※ FLOPS = FLOPs /Second : 초당 수행 가능한 FLOP 수

** 메모리와 비슷하게 계산량/Delay도 Model Size와 Batch Size, Dataset Size가 커질수록 증가
→ Model이 클수록 정확도↑, But, 속도↓

[Cloud Server vs Edge Device]

▣ Cloud Server
· 큰 Model 사용 가능 & 빠른 계산
· 통신 지연 & 개인정보 문제

▣ Edge Device
· 통신 불필요 & 개인정보 보호
· 작은 Model만 가능 & 느린 계산

∴ 성능 ↔ Privacy

[Reference]

· AI System Metrics and Bottlenecks (AI System : Week 2) - Dongjun Han

댓글

이 블로그의 인기 게시물

[Mini-NPU RTL] NN Reference Model

[Mini-NPU RTL] TPU (Study Paper)