AI 에너지 소모를 줄이는 방법

daewoo kim
7 min readFeb 26, 2022

--

최근 large-scale model 학습이 중요해지면서 데이터센터의 에너지 소모가 크리티컬한 이슈가 되고 있어 AI에 사용되는 에너지 소모를 줄이는 방법을 찾아보았다. 이 글은 “11 Ways To Reduce AI Energy Consumption” 기사를 요약하였다.

AI 산업의 발전은 단지 문제를 푸는 것에서 문제를 “더 잘” 푸는 방향으로 변환하고 있다. “더 잘” 푸는 것이란 보통 AI의 accuracy 와 speed를 의미하지만, AI의 에너지 소모가 급격하게 늘면서 데이터 센터의 예산을 절감하기 위해 저전력을 요구하고 있다.

전력은 에너지 소모의 비율이다. 만일 열이 제한이라면 전력이 가장 중요하며, 배터리 수명이 제한이라면 전력이 아니라 에너지 소모가 중요하다.

더 적은 컴퓨팅과 더 적은 데이터 이동은 에너지 소모를 줄인다. 다음은 에너지 소모를 줄이는 11가지 방법이다.

#1. 더 적은 모델

더 적은 모델은 더 적은 컴퓨팅과 더 적은 메모리를 요구한다. 더 적은 컴퓨팅 요구사항을 위해 최적화된 graph는 때때로 accuracy를 낮추지 않는다. 하지만 최근 동향은 모델 사이즈를 증가시켜 모델 성능을 높이는 경향이 대세이다. 따라서 학습된 모델을 Knowledge Distillation, Pruning, Quantization 등과 같은 Model Compression 방법을 이용하여 추론에 필요한 모델 사이즈를 줄인다.

#2. 더 적은 데이터 이동

이전 접근 방식은 데이터를 축소하는 것이었지만, 현재는 데이터를 줄이는 것보다 데이터를 더 짧은 거리만 이동시키는 것이 더 중요하다. 최근에는 DRAM으로 부터 데이터 로드를 최대한 줄이기 위해 전체 모델을 포함할 수 있을 수 만큼 큰 SRAM을 chip에 내장한다. (e.g., Cerebras WSE)

또 다른 방법은 가능한 데이터 소스에 근접한 곳에서 컴퓨팅을 처리하는 것이다. (e.g., Processing In Memory) 나머지 일반적인 방법은 컴파일러가 캐시, FIFO, DMA 작업을 신중하게 사용하여 데이터 이동을 최적화하는 것이다.

#3. 가능한 더 적은 컴퓨팅

Conv 연산에 연산량을 줄이기 위해 사용되는 Winograd 연산은 주어진 모델에 대해서 연산량을 크게 줄여 가속기의 전력 소모를 크게 줄일 수 있다. Conv의 matrix multiplication 연산량은 O(n³) 수준이지만 winograd 연산을 사용하면 연산량을 O(n²)로 줄일 수 있다. (Winograd는 상대적으로 연산량이 적은 “additions 연산”을 더 추가하는 반면, 연산량이 많은 “multiplications 연산”을 줄인다.) 활성화 함수의 선택 또한 중요하다. tanh를 활성화 함수로 사용하는 작은 모델은 ReLU를 사용하는 좀더 큰 모델보다 비효율적일 수 있다.

#4. 가능한 경우, 배치 처리는 도움이 됨

정적 이미지 또는 프레임의 컬렉션을 처리하는 일부 애플리케이션은 배치 사이즈를 증가시켜 효율을 더 높일 수 있다. 이는 일반적으로 대규모의 샘플을 처리하는 대규모 데이터센터에 적용된다.

엣지 애플리케이션은 보통 한번에 하나의 데이터 패킷을 받기 때문에 다음 데이터 패킷을 처리하기 전까지 처리를 마쳐야 한다. 따라서 배터리로 구동되는 엣지 장치에는 잘 적용되지 않는다. 배치 처리는 정확도에 영향을 주지 않는데 대규모 데이터 배치를 처리한 결과는 한번에 하나의 샘플을 처리할 때와 그 결과가 다르지않아야한다.

#5. 데이터 포맷이 중요함

부동 소수점 회로는 정수 회로보다 더 많은 에너지를 사용하고 더 많은 bit로 표현된 정수는 더 적은 bit를 갖는 정수보다 더 많은 에너지를 사용한다. 이를 위해 quantization이 일반적으로 사용되는데 연구자들은 8bit부터 심지어 1bit를 사용하는 것을 연구하고 있다. 즉 연산시 낮은 bit의 사용은 더 적은 데이터 이동을 의미한다.

그 한계는 BNN(Binary NN)와 같은 single bit 구현이다. Linley Spring 2021 conf.에서 Linley Group의 사장이자 수석 분석가인 Linely Gwennap은 BNN을 사용하면 컴퓨팅 양과 메모리 양 뿐만이 아니라 실제로 곱셈 회로를 완전히 제거할 수 있다고 이야기했다. 그 이유는 1bit과 1bit를 곱하는 것은 XNOR 논리 게이트로 가능하기 때문이다. 이는 컴퓨팅과 전력을 크게 절감할 수 있음을 의미한다.

하지만 모든 것에 꽁짜는 없듯 quantization은 정확도 저하를 초래하기 때문에 QAT(Quantization-Aware Training)과 같은 방법을 사용하여 정확도 하락을 어느정도 방지할 수 있지만 학습에 더 많은 시간이 걸리는 문제가 있다. 데이터 포맷이 작을수록 accuracy를 유지하기 위해 뉴럴네트워크의 크기가 증가하므로 애플리케이션에 따라 sweet spot이 존재한다.

#6. Sparsity를 활용

뉴럴 네트워크는 벡터와 행렬 수학과 관련이 있고 벡터 또는 행렬이 ‘0’ 값을 많이 갖을수록 실제 계산량이 줄어든다. 일반적으로 행렬이나 벡터는 실제로 sparse하기 보다는 매우 작은 숫자의 entry를 갖는데 이러한 항목은 전체 결과에 미미한 영향만을 미치기 때문에 매우 작은 숫자를 ‘0’으로 변환하여 sparsity를 높일 수 있다.

이를 위해 모델 개발 시, 매우 작은 파라미터를 ‘0’으로 만들거나 활성화 함수에 따라 sparse 모델을 생성할 수 있다. 하지만 sparsity를 이용하기 위해 많은 수의 파라미터를 제거한다면 오류가 누적되면서 정확도가 떨어질 수 있다.

#7. 압축을 활용

주어진 sparsity 수준에서 압축은 이동하는 데이터의 양을 줄이는데 도움이 된다. 런타임에 입력 또는 activation은 압축 및 압축 해제 하드웨어로 압축할 수 있다. 다행스럽게 압축 해제에 필요한 에너지 비용은 추가 bit를 가져오는데 소비하는 비용보다 훨씬 적다. 이때 사용되는 압축은 무손실이어야 하며 정확도에 영향을 미치지 않아야 한다.

#8. 이벤트에 집중하기

현재 비디오 프레임을 처리하는 방식은 프레임마다 다시 처리하기 때문에 많은 중복 처리가 발생한다. 그 대안으로 스트림에서 변경되는 부분만 컴퓨팅을 집중하면 전체 프레임을 모두 처리하는 것보다 처리해야 하는 픽셀수가 훨씬 줄어들기 때문에 컴퓨팅과 메모리를 줄일 수 있다.

이러한 변경되는 부분은 “이벤트”로 분류하며 이러한 종류의 아키텍처는 “이벤트 기반” 접근 방식이다. 이 아이디어는 SNN(Spiking NN)으로 구현할 수 있는데 SNN은 기존 뉴럴네트워크와 동일한 구조를 갖지 않는다. 아직까지 이벤트기반 접근 방식이 정확도에 영향을 미치는지는 아직 확실하지 않다.

#9. 아날로그 회로 사용

아날로그는 디지털 버전보다 에너지를 훨씬 더 적게 소모한다. 아날로그를 디지털로 변환하는 것은 많은 에너지를 사용하므로 가급적 디지털로 변환하기 전, 아날로그 영역에서 계산을 수행할 때 에너지를 절약할 수 있다.

In Memory Computing이 아날로그를 사용하면 1) 메모리에서 데이터를 가져올 필요가 없고 2) 컴퓨팅의 병렬성(곱셈-덧셈 연산을 옴의 법칙으로 변환하여 연산할 수 있기 때문)을 크게 향상시킨다. 하지만 아날로그 기술은 구현이 더 복잡하다.

#10. 전자 대신 광자를 이용

소수의 회사는 컴퓨팅 자체에 에너지를 소비하지 않는 silicon photonics에 관심을 가지고 있다. 광자 계산에 사용되는 모든 에너지는 레이저에서 나온다.

#11. HW와 SW를 최적화

결정된 HW에 해당 HW에 최적화되도록 retraining하거나 컴파일하면 보다 효율적인 구현이 가능하다.

레퍼런스

--

--

daewoo kim
daewoo kim

Written by daewoo kim

AI developer & Author | Working@semiconductor-industry. I write and share about what I learn.

No responses yet