스캐터랩이 RoBERTa-Base급 모델의 실시간 추론 비용을 줄이기 위해 AWS Inferentia를 검증한 과정이다. TensorFlow 모델을 Neuron SDK로 컴파일하는 조건부터 GPU 대비 지연 시간과 비용 실험, 도입이 어려운 모델의 특성까지 다룬다. 1,000 RPS 기준으로 Inferentia가 T4와 A10 GPU보다 크게 저렴하다는 결과를 얻었다.
핵심 포인트- Inferentia는 작은 배치의 추론 처리량에 최적화된 AWS 전용 칩이며, FP16·BF16에서 64 teraFLOPs, INT8에서 128 teraFLOPs를 제공한다.
- TensorFlow의 `tfn.trace`로 고정 추론 그래프를 만들기 때문에 입력 shape와 실행 흐름이 동적인 모델에는 제약이 있다.
- inf1.xlarge, g4dn.xlarge, g5.xlarge를 비교한 결과 Inferentia의 비용 효율이 다른 장치보다 1.5~5.7배 높았다.
- 입력 길이 512, batch size 8, 1,000 RPS 조건의 월 비용은 Inferentia 약 300만 원, A10 약 900만 원, T4 약 1,600만 원으로 추산됐다.
- Beam Search 같은 동적 그래프, 대형 모델의 긴 지연 시간, 지원하지 않는 연산자는 도입 전 반드시 확인해야 한다.
상세 정리- 배경: 서비스 모델은 RoBERTa-Base와 같은 크기와 연산량을 요구한다. 사내 라이브러리가 TensorFlow와 PyTorch를 모두 지원하지만, Dynamic Batching과 원격 저장소 접근이 있는 TensorFlow Serving을 배포 경로로 택했다.
- 도입 판단: 기존 T4 기반 g4dn 인스턴스 비용을 줄일 수 있는지 확인하기 위해 Inferentia를 실제 모델로 검증했다. AWS가 제시한 처리량과 비용 수치를 그대로 믿지 않고 별도 실험을 설계했다.
- 그래프 제약: Neuron 컴파일은 추론을 tracing해 고정 그래프로 만든다. batch 크기 외 tensor shape가 바뀌거나 Python 분기가 입력에 따라 달라지면 사용할 수 없으며, 길이가 다른 입력은 padding으로 고정할 수 있다.
- 컴파일 환경: 컴파일 자체는 Inferentia가 없는 c5 계열에서도 가능하지만 host memory가 많이 필요하다. RoBERTa-Large는 약 200GB 이상 메모리를 요구했다.
- 구현: `TFRobertaModel`과 dummy input을 준비하고 `tensorflow.neuron.trace`로 변환한 뒤 SavedModel로 저장한다. 운영 추론은 inf1 인스턴스에서 이 모델을 불러오면 별도 device 지정 없이 Neuron Core에 올라간다.
- 워밍업: 최초 1~5회 추론은 warmup 때문에 느리므로 성능 측정에서 이를 구분해야 한다.
- 측정 방식: 100회 추론의 평균 latency를 구하고 `1000ms / latency × batch-size`로 RPS를 계산했다. 1,000 RPS를 처리할 인스턴스 수는 소수점을 올림한 뒤 시간당 가격을 곱했다.
- 실험 조건: inf1.xlarge는 시간당 0.23달러, T4 기반 g4dn.xlarge는 0.53달러, A10 기반 g5.xlarge는 1.01달러였다. Inferentia는 동적 shape를 지원하지 않아 sequence length별로 따로 컴파일했다.
- 결과 해석: batch size 8에서 장치별 RPS가 수렴했고 지연 시간은 약 100ms였다. 단순 계산은 요청 대기열을 반영하지 않으므로 실제 서비스 latency는 더 길 수 있다고 명시했다.
- 한계: 생성 모델의 Beam Search처럼 동적 그래프가 필수인 경우 사용할 수 없다. 고성능 GPU보다 계산력이 낮아 대형 모델은 서비스 latency 기준을 넘을 수 있고, Neuron이 지원하는 graph op 호환성도 사전 검사해야 한다.
왜 읽나GPU를 전용 추론 칩으로 바꾸려는 ML 엔지니어가 컴파일 제약과 비용 실험을 함께 설계하는 데 실전 기준을 얻을 수 있다.