Intel Sapphire Rapids로 PyTorch Transformer 가속하기
Intel Sapphire Rapids CPU는 Hugging Face Optimum Intel 라이브러리와 결합될 때, 이전 Intel Xeon (Ice Lake) 세대에 비해 PyTorch Transformer 추론을 최대 3배 가속할 수 있습니다. 이러한 성능 향상으로 긴 텍스트 시퀀스에서도 한 자리 수 예측 지연 시간을 달성할 수 있게 되었으며, 이는 이전에 주로 GPU를 통해서만 달성할 수 있던 벤치마크였습니다.
CPU 기반 추론의 전략적 장점
CPU 기반 추론은 모델 크기, 작업 병렬성 및 비용 제약에 따라 GPU 기반 추론에 대한 실용적이며 종종 더 우수한 대안이 될 수 있습니다.
- Model Size: 작은 모델은 일반적으로 CPU에서 효율적으로 실행되지만, 큰 모델은 GPU의 방대한 연산 능력에서 더 큰 이점을 얻습니다.
- Parallelism: GPU는 대규모 병렬 처리에 뛰어납니다. 추론 작업에 높은 병렬성이 부족한 경우 CPU가 더 효과적일 수 있습니다.
- Cost and Flexibility: CPU는 특히 매우 낮은 지연 시간이 필요하지 않은 사용 사례에서 GPU보다 비용 효율적인 경우가 많습니다. 또한 추론 워커를 확장하고 다양한 하드웨어 환경에 배포하는 데 더 큰 유연성을 제공합니다.
하드웨어 및 소프트웨어 구성
성능 향상을 평가하기 위해 다음 사양의 Amazon EC2 인스턴스를 사용하여 벤치마크를 수행했습니다.
- Ice Lake (Baseline):
c6i.16xlarge인스턴스. - Sapphire Rapids:
r7iz.16xlarge-metal인스턴스.
두 인스턴스 모두 32개의 물리 코어(64 vCPU)를 사용했으며 Ubuntu 22.04, Linux 5.15.0, PyTorch 1.13, Intel Extension for PyTorch 1.13, Transformers 4.25.1으로 구성되었습니다. Sapphire Rapids 인스턴스는 추가로 Optimum Intel 라이브러리를 활용했습니다.
NLP 모델 성능 벤치마킹
벤치마크는 distilbert-base-uncased, bert-base-uncased, roberta-base 모델을 사용한 텍스트 분류 작업에서 수행되었습니다. 테스트는 짧은(16 토큰) 및 긴(128 토큰) 시퀀스에 대해 단일 및 배치 추론 모두에서 평균 및 p99 예측 지연 시간을 측정했습니다.
최적화 기법
Sapphire Rapids 아키텍처에서는 하드웨어 기능을 활용하기 위해 Optimum Intel 라이브러리를 통해 다음 최적화를 적용했습니다:
- bfloat16 Mode: Advanced Matrix Extensions (AMX) 명령어를 활용하도록 활성화되었습니다.
- Just-In-Time (JIT) Compilation: 모델 실행을 추가로 최적화하기 위해
True로 설정되었습니다.
성능 결과
distilbert-base-uncased 모델에 대해 Sapphire Rapids에서 단일 예측은 이전 세대 Xeon CPU에 비해 지연 시간이 60-65% 감소(60-65% 더 빠르게 실행)했음을 보여줍니다. 하드웨어와 소프트웨어의 이 조합은 긴 텍스트 시퀀스를 처리할 때도 한 자리 수 예측 지연 시간을 달성할 수 있게 합니다.
결론
Intel Xeon CPU의 4세대는 PyTorch Transformer 추론 성능에서 큰 도약을 제공합니다. Intel Extension for PyTorch와 Hugging Face Optimum을 통합함으로써 개발자는 특정 NLP 작업에 대해 GPU 기반 솔루션에 필적하는 성능 수준을 유지하면서 더 비용 효율적으로 딥러닝 모델을 배포할 수 있습니다.