PIM은 AI 가속기의 미래가 될 것인가? (삼성의 MI100 PIM)

daewoo kim
17 min readJan 24, 2023

--

최근 SK하이닉스와 삼성 모두 PIM(Processing In Memory) 기술을 소개하면서 메모리 업체 주도의 AI 반도체를 상용화하려는 시도가 잇따르고 있다. PIM은 말그대로 메모리에서 연산을 한다는 것이다. 그렇다면 왜 AI에 PIM을 이용하려는 것일까? 그 이유를 알기 위해선 Memory Wall 문제와 PIM의 장점부터 알아보도록 하자.

Memory Wall 문제의 발생

일반적으로 컴퓨팅 능력은 멀티코어, 가속기(e.g. GPU, NPU) 등을 이용하여 크게 증가한 반면, 메모리 대역폭은 시대가 바뀌어도 크게 늘어나지 않았다.

아래 그림에서 볼 수 있듯이 컴퓨팅(FLOPS)은 20년동안 9만배가 증가한 반면, DRAM BW는 20년동안 겨우 30배 증가하는데 그쳤다. 이러한 데이터 처리 속도와 메모리에서 데이터를 가져오는 속도의 불균형은 Memory Wall 문제를 발생시켰다.

source: AI and Memory Wall — https://medium.com/riselab/ai-and-memory-wall-2cb4265cb0b8

기존에도 이러한 Memory Wall 문제는 지속되고 있었지만, 데이터의 locality를 이용하여 자주 사용하는 데이터를 CPU 또는 가속기의 cache에 저장하여 Memory Wall 문제를 극복할 수 있었다.

하지만 빅데이터/AI 시대에는 이전보다 훨씬 거대한 용량의 데이터를 처리해야 하므로 CPU와 가속기의 cache로는 시스템 성능을 효율적으로 사용하기 힘든 상황이 되었다.

이는 근본적으로 현대 컴퓨터 시스템이 폰노이만 아키텍처를 따르고 있어 연산과 데이터가 분리되어 있어서 발생할 수 밖에 없는 문제이다.

PIM(Processing In Memory)이란?

PIM은 기존 폰노이만 아키텍처의 문제를 해결하기 위해 메모리 내부(P in M) 또는 메모리 근처(P near M)에서 데이터를 처리하는 기술로 연산 유닛과 메모리 사이의 BW 제약에 영향을 받지 않고, 데이터 이동에 사용되는 에너지를 감소시킬 수 있는 장점을 갖는다.

source: https://www.samsungsemiconstory.com/kr/%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90-%EC%84%B8%EA%B3%84-%EC%B5%9C%EC%B4%88-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5-hbm-pim-%EA%B0%9C%EB%B0%9C/

왜 AI 시대에 PIM이 필요한 것일까?

(1) AI 응용의 Memory-bound 특징

AI 응용의 연산은 Bandwidth-bound와 Compute-bound로 구별할 수 있다. 이를 설명하기 위해선 roofline 모델을 사용하는 것이 유용하다. Roofline 모델은 알고리즘의 메모리 전송량과 연산량의 비율을 통해 달성 가능한 최대 성능을 그래프로 표현하여 컴퓨팅 시스템의 성능 제약 사항이 Bandwidth-bound에 가까운지 Compute-bound에 가까운지 파악할 수 있다.

Roofline 모델의 x축은 Arithmetic Intensity (or OI. Operation Intensity)을 나타내며 가속기가 메모리에서 가져온 데이터(byte 기준)를 몇 번 연산하는지 나타내는 지표이다. (정확하게 말하자면 알고리즘의 총 연산수와 메모리 전송량의 비율을 나타낸다.)

즉 Arithmetic Intensity가 높을수록 데이터의 재사용률이 높다는 의미이다. y축은 가속기의 peak throughput(FLOPS)를 의미한다.

source: https://docs.nersc.gov/tools/performance/roofline/

Roofline 그래프의 왼쪽 삼각형 부분을 memory bound라고 하고, 오른쪽 평탄한 부분을 compute bound라고 한다.(경사면과 평탄한 부분이 이어진 형태가 지붕과 같다고 해서 roofline model이라고 한다.)

Arithmetic Intensity 이 작을수록 높은 memory bandwidth를 요구하며, 특히 가속기의 성능이 왼쪽 삼각형의 경사면(보라색)에 가까울수록 memory bandwidth가 성능 bottleneck으로 작용함을 알 수 있다.

아래 그림은 Google TPU-1논문(‘17)에서 각 가속기(TPU, K80 GPU, Haswell CPU)별 AI 알고리즘(CNN, MLP, LSTM)의 roofline 모델을 나타낸 것이다. 이 roofline 모델에서 TPU가 CPU, GPU보다 높은 성능을 내지만 roofline의 왼쪽 경사면에 LSTM, MLP이 위치한 것을 볼 때 memory bandwidth의 제한으로 인해 더 높은 성능을 내지 못하고 있음을 알 수 있다. (TPU-1은 DDR3 메모리를 사용하였다.)

source: In-Datacenter Performance Analysis of a Tensor Processing Unit
source: In-Datacenter Performance Analysis of a Tensor Processing Unit. (파란색 선과 별모양 점: TPU의 roofline 모델, 빨간색 선과 삼각형 점: GPU의 roofline 모델, 주황색 선과 원형점: CPU의 roofline model)

AI 알고리즘은 지속적으로 더 많은 파라미터를 요구하므로 가속기에서 처리해야할 데이터가 더 많아지고 있다. 따라서 가속기와 메모리간 bandwidth 제약은 점점 더 심화되고 있어 AI 연산 성능을 증가하는데 가장 큰 bottleneck으로 작용한다.

(2) 에너지 절감 필요성

AI 알고리즘의 파라미터가 커지면서 가속기와 메모리간 빈번한 데이터 이동은 에너지 사용량을 증가시킨다. 에너지를 많이 사용할수록 당연히 운영 비용 증가는 물론 탄소 배출량 문제가 대두되고 있다.

PIM의 장/단점

위의 2가지 문제점을 해결하기 위해선 데이터의 이동을 최소화시키는 것이 최선의 방법이다. PIM은 가속기의 성능 향상 및 에너지 절감을 동시에 달성할 수 있기 때문에 AI 응용를 위한 매력적인 솔루션으로 각광받고 있다. 하지만 PIM 또한 몇 가지 단점이 존재한다.

(1) 높은 제조 비용

PIM은 DRAM 근처에서 연산 logic을 탑재하는 방식으로 연산에 최적화되지 않은 메모리 공정으로 연산 기능을 구현해야 하므로 논리 회로 공정으로 구현된 가속기보다 성능 및 면적 면에서 큰 손해를 보기 때문에 원가 상승으로 이어질 수 밖에 없다. 하지만 최근 개발된 3차원 적층 기술 발전으로 인해 PIM을 저비용으로 실현할 수 있는 가능성이 열렸다.

(2) 가속기 대비 낮은 컴퓨팅 성능

비용 부담과 함께 메모리 Die의 제한된 면적 때문에 가속기와 달리 많은 연산 유닛을 집적하는 것이 어렵기 때문에 가속기에 비해 컴퓨팅 성능을 늘리기 어려운 구조이다.

(3) 프로그래밍 모델

여러 개의 메모리 모듈에 분산된 PIM의 연산 유닛에 작업을 분할하여 각 PIM 에 분배하고 결과값을 다시 한 곳으로 모으는 등의 collective communication이 필요한 복잡한 병렬 프로그래밍 모델이 필요하다.

삼성의 HBM-PIM 전략은?

최근 삼성은 PIM의 단점을 보완하기 위해 PIM만으로 만든 독자 다바이스 대신 AMD와 협력을 통해 AMD의 MI-100 GPU와 HBM-PIM을 결합한 MI-100 PIM을 발표하였다.

source: https://semiconductor.samsung.com/kr/newsroom/tech-blog/samsung-electronics-semiconductor-unveils-cutting-edge-memory-technology-to-accelerate-next-generation-ai/

MI-100 GPU는 2020년 11월에 기출시된 AMD의 데이터센터 GPU로 MI-100에 HBM-PIM을 탑재한 것은 실제 상용화보다는 POC 테스트용 디바이스의 성격이 강한 것으로 판단된다.

AMD MI100 spec (source: https://www.servethehome.com/amd-radeon-instinct-mi100-32gb-cdna-gpu-launched/)

삼성은 왜 HBM-PIM을 독자 디바이스로 만들지 않았을까?

왜 PIM을 독자적인 디바이스화 하지 않고 GPU의 workload를 오프로딩하는 형태로 접근한 것일까? 추측해보자면 다음과 같다.

(1) 가속기에 비해 낮은 성능

아래 그림에서 보듯 MI-100 PIM의 PIM 성능은 4.9TFLOPS로 MI-100의 FP32 성능(46.1 TFLOPS)와 FP16(184.6 TFLOPS)에 비해 아직까지 상대적으로 매우 낮은 연산 성능을 보이고 있다.

(2) PIM의 compute-intensive workload에 갖는 단점 보완

PIM은 bandwidth-bound에 효율적인 디바이스이지만 compute-bound 연산에는 오히려 비효율적이므로 compute-intensive workload를 처리하기 위해선 GPU와 같은 가속기와 co-work하는 것이 상호보완적인 효과를 기대할 수 있다.

source: 2022 인공지능 반도체 미래기술 컨퍼런스 (AISFC 2022)

MI-100 PIM의 benchmark 결과

성능 benchmark를 위해 MI-100 PIM을 baseline(MI-100)과 학습 성능을 비교하니 MI-100 PIM은 baseline 대비 2.55배 증가, 에너지 효율은 2.67배 증가하였다. (이때 benchmark 조건은 다음과 같다.)

  • Workload: T5 based MoE Model
  • Machine: 32 MI100-PIM GPUs

왜 Original T5 대신 MoE기반 T5 모델을 사용하였을까?

앞서 삼성은 benchmark workload로 Original T5 대신 MoE 기반 T5 모델을 사용하였다. 그 이유는 MoE layer를 PIM으로 연산하는 것이 효율적이므로 MoE 기반 T5를 사용하여 성능 측정을 한 것으로 추정된다.

MoE 기반 언어 모델은 transformer layer와 MoE layer가 교차 반복되는 구조로 MoE이 개수를 늘려 모델 파라미터를 증가시킬 수 있는 반면 컴퓨팅 양을 그대로 유지할 수 있는 장점때문에 차세대 언어 모델 구조로 최근 활발히 연구되고 있다.

HBM-PIM의 사용 예시: HBM-PIM은 Expert 연산에 사용될 것으로 추측됨

삼성은 32대의 MI100 PIM GPU를 이용하여 MoE 모델을 학습하였다고 발표하였다. Benchmark를 위한 자세한 시스템 구성에 대한 정보가 없지만 MoE layer의 expert 연산을 GPU 대신 HBM-PIM으로 처리할 것으로 추측된다.

그 이유는 Expert 연산은 MLP로 구성되어 일반적으로 bandwidth-bound 연산에 가까우며 특히 MoE 의 Expert 연산은 MLP 연산 중에서도 데이터 재사용률이 극히 떨어지는 연산이므로 GPU 코어로 실행시키는 것은 비효율적이다. MoE의 Expert 연산의 데이터 재사용률이 낮은 이유는 다음과 같다.

  • token 당 한 개의 expert와 매칭되므로 skinny-matrix 형태의 연산
  • Expert 한 개의 크기가 수백MB~수GB 수준으로 커 GPU cache miss가 빈번하게 발생

MoE 기반 언어모델은 전체 모델 파라미터 중 transformer layer에 비해 MoE layer가 차지하는 비중이 매우 높아 MoE layer 연산을 최적화하는 것이 중요하다.

따라서 삼성은 위의 MoE 연산 특징에 착안하여 MoE layer의 expert 연산을 MI100-PIM GPU의 HBM-PIM에 오프로딩하여 처리하였을 것으로 추측된다.

MoE기반 T5 모델을 MI-100 PIM GPU로 학습시 레퍼런스(MI-100) 대비 성능 (2.55x)와 에너지 효율성 (2.67x) 향상된 이유 역시 expert 연산을 HBM-PIM으로 처리하여 HBM-PIM의 장점을 잘 활용하였기 때문일 것으로 추정된다.

PIM를 위한 Challenges

앞서 MI-100 PIM이 HBM-PIM을 이용하여 MoE기반 T5의 학습 성능 개선을 달성하였다고 이야기하였지만 PIM이 상용화 되기에는 여전히 해결해야 할 문제들이 많다.

(1) 이기종 프로그래밍 모델

앞서 PIM을 설명하였을 때 프로그래밍 모델이 복잡해진다는 단점을 설명하였다. GPU와 HBM-PIM을 결합하였을 때 가장 큰 문제점은 바로 병렬 프로그래밍 환경에 더해 이기종(heterogeneous) 프로그래밍 모델이 필요하다라는 점이다.

즉, AI 모델의 연산을 GPU에서 처리해야할 부분과 HBM-PIM에서 처리해야할 부분으로 분할하여 분산처리해야 하며, 이종 디바이스간의 데이터 파이프라인을 잘 설계해야만 성능 최적화에 성공할 수 있다.

삼성은 이에 대한 해법으로 SYCL과 같은 병렬/이기종 프로그래밍 환경을 제공한다고 한다. 하지만 SYCL만 제공하는 것이 아니라 이기종 환경에서 AI 연산을 디바이스의 특징과 성능에 맞게 자동으로 분할하여 디바이스의 맞는 코드를 생성하는 ML Compiler의 연구가 필수적으로 필요할 것으로 보인다.

source: 2022 인공지능 반도체 미래기술 컨퍼런스 (AISFC 2022)

만일 아래와 같이 “computing in everywhere”이 된다면 어떻게 작업을 분배하고 각 디바이스 간 데이터 파이프라인을 어떻게 설계를 해야할지 이 모든 작업들이 자동화되지 않는다면 HBM-PIM은 물론 이기종 컴퓨팅의 성공은 매우 어려울 것이다.

source: 2022 인공지능 반도체 미래기술 컨퍼런스 (AISFC 2022)

(2) HBM-PIM을 위한 AI 응용 발굴 필요

삼성은 HBM-PIM을 MoE 연산 처리용으로 사용하였다. 하지만 MoE 외 HBM-PIM이 효율적으로 동작할 수 있는 Memory-bound 연산을 찾는 노력이 필요하다. 고객들이 HBM-PIM을 사용하여 성능 및 에너지 효율을 높일수 있는 usecase가 훨씬 더 다양해져야 한다. 고객들이 MoE 연산만을 위해 HBM-PIM을 선택하기에는 아직까지 사용할 수 있는 사례가 많지 않다.

(3) PIM의 독자 디바이스화

AI 연산은 아직까지 기본적으로 compute-intensive 연산이 주류를 이루고 있다. 결국 PIM은 아직까지 독자 디바이스화 되기 어렵고 당분간 가속기의 co-processor 역할을 담당하는데 그칠 수 밖에 없는 한계가 있다.

전망

AI 반도체의 미래가 PIM일 것이냐라는 질문에 아직은 대답하기 어려운 점이 있다. HBM-PIM의 challenge에서 언급하였듯이 PIM 만으로 독자 AI용 디바이스를 만들기에는 아직까지 한계가 분명한 것이 사실이다.

하지만 AI의 데이터 처리량이 지속적으로 커지고 있어 Memory Wall 문제를 해결하고 에너지 효율을 높이기 위해선 PIM과 같은 구조가 필요하다.

따라서 과도기적인 형태인 가속기+PIM과 같은 컨셉의 디바이스가 앞으로 소개될 것으로 예상되나 가속기 구조가 PIM 구조로 전환되기에는 아직까지 해결해야 될 과제가 많아 PIM에 대한 연구가 더 필요할 것으로 판단된다.

레퍼런스

[1] SK하이닉스, 차세대 지능형 메모리반도체 PIM 개발

[2] 삼성전자 반도체, 차세대 AI를 위한 첨단 메모리 기술 공개

[3] AI 반도체, 디지털 변환의 핵심 인프라 (최창규 부사장. 삼성전자 종합 기술원) — 2022 인공지능 반도체 미래기술 컨퍼런스 (AISFC 2022)

[4] AI and Memory Wall

[5] In-Datacenter Performance Analysis of a Tensor Processing Unit

[6] PIM이란? — 개념과 분류

[7] 삼성전자, 세계 최초 인공지능 HBM-PIM 개발

[8] AMD Instinct MI100 가속기

[9] AMD Instinct MI100 32GB CDNA GPU Launched

--

--

daewoo kim

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