[AI System] AI System Metrics & Bottlenecks
"AI System Metrics & Bottlenecks"
[DL Models Outgrow HW]
<Qualcomm Hexagon DSP>
· 저전력 고성능을 목표로 하는 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배
· 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가 매우 커질 수 있음
→ 이미지 해상도가 크고 채널 수가 많으면 Activation Memory가 매우 커질 수 있음
> Forward Propagation
· Activation이 자연스럽게 순서대로 계산
· 만약 Backpropagation을 안 한다면, 새로운 Activation 계산 후 이전 Activation 값 폐기 가능 = 추론만 한다면 이전 값 폐기 가능
· 만약 Backpropagation을 안 한다면, 새로운 Activation 계산 후 이전 Activation 값 폐기 가능 = 추론만 한다면 이전 값 폐기 가능
∴ Inference는 Training보다 메모리를 적게 사용
> Backpropagation
→ 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>
· # of MAC Operations = n(Batch Size) x ci(Input Channels) x co(Output Channels)
▣ Forward Propagation for Convolutional Layer
▣ 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
댓글
댓글 쓰기