goodput = SLO(software-level objective)을 만족하는 초당 요청 개수
e.g. SLO가 TTFT 최대 200ms, TPOT 최대 100ms 일 때 서비스의 RPM = 100인데 이 중 30건이 SLO를 만족하면 goodput = 30 RPM.
활용률 (utilization)
= 리소스를 얼마나 효율적으로 사용하고 있는가
nvidia-smi의 GPU 활용률 지표는 크게 도움이 되지 않음(N시간 동안 작업 처리한 실제 시간)
MFU (model FLOP/s utilization): 머신이 할 수 있는 모든 연산 중 정해진 시간에 실제로 몇 개를 하고 있는지
시스템이 최고 FLOP/s로 동작할 때 달성할 수 있는 이론상 최대 처리량 대비 실제 처리량(token/s)이 어느 정도인지를 나타냄
MBU (model bandswith utilization) : 사용 가능한 메모리 대역폭 중 실제 쓰이는 비율
일반적으로 LM 추론에서 사용되는 메모리 대역폭은 파라미터 수 * 파라미터당 바이트 * token/s 이고 MBU는 이를 이론적 대역폭으로 나눈 것
연산 제약 작업은 보통 MFU가 높고 MBU가 낮고, 메모리 대역폭 제약 작업은 MFU가 낮고 MBU가 높음
학습은 작업 패턴이 예측 가능해서 더 효율적인 최적화를 적용할 수 있기 때문에 MFU가 보통 추론시보다 높음. 추론 시에는 프리필 때 연산위주라 MFU가 높고 디코딩 때 MBU가 높음
같은 하드웨어에서 비슷한 작업을 할 때 활용률이 높다면 서비스가 효율적으로 돌아가고 있는 것이지만 목표는 활용률이 제일 높은 칩을 고르는 것이 아니라 작업을 더 빠르고 저렴하게 처리하는 것
AI 가속기
가속기 = 특정 종류의 연산 작업을 빠르게 처리하도록 만들어진 칩
GPU: 수천 개의 작고 (CPU 대비) 약한 코어를 가지고 있어 다량의 작은 독립적인 연산으로 나눌 수 있는 작업에 최적화
추론 전용으로 설계된 칩이나 트랜스포머 전용처럼 특정 모델 아키텍처에 특화된 칩들이 존재
칩 평가의 핵심 특성
연산 성능: FLOP/s (초당 부동 소수점 연산 횟수)
메모리 크기와 대역폭: 메모리에서 수많은 코어들로 데이터를 계속해서 옮겨야 하므로 데이터 전송 속도가 중요 = GPU메모리는 CPU 대비 더 넓은 대역폭, 더 낮은 지연 시간이 필요
전력 소모: 수십억 개의 트랜지스터를 껐다 켰다 하면서 엄청난 양의 에너지를 소비하고 열을 발생시킴 (냉각 필요) → 전력 소모량이 컴퓨팅 확장에서 걸림돌이 됨
모델 최적화
모델 압축
모델 크기를 줄이는 것 = 양자화, 증류 등
프루닝: 예측에 별로 도움 되지 않는 파라미터를 찾아서 0으로 만들어서 모델을 작게 만듦. 프루닝하여 그대로 쓰거나 추가로 파인튜닝해서 조정할 수 있음 → 단 원본 모델 아키텍처에 대한 이해가 필요하고 성능 향상도 다른 방법 대비 적은 경우가 많아서 많이 사용되지는 않는 편