Hugging Face 가속 추론 API 최적화

Hugging Face는 Accelerated Inference API 내에서 transformer 추론 성능을 100배 향상시키기 위해 일련의 최적화 전략을 구현했습니다. 이러한 개선은 실시간 소비자 애플리케이션 지연 시간이 주요 제약 사항인 프로덕션 환경에 대규모 NLP 모델을 배포하는 데 매우 중요합니다.

고수준 라이브러리 및 파이프라인 최적화

Hugging Face는 대상 하드웨어와 관계없이 Transformers 및 Tokenizers 라이브러리 내에서 가장 효율적인 방법을 활용하여 초기 10배의 속도 향상을 달성합니다.

효율적인 모델 파이프라인

API는 각 순전파(forward pass) 동안 계산을 줄이기 위해 최적화된 모델 파이프라인을 사용합니다. GPT 기반 텍스트 생성 작업의 경우, 이는 각 패스에서 마지막 토큰의 새로운 어텐션에만 집중함으로써 어텐션 행렬 계산의 차원을 축소하는 것을 포함합니다.

Rust 기반 토큰화

토큰화는 추론 효율성의 병목 현상이 되는 경우가 많기 때문에, Hugging Face는 🤗 Tokenizers 라이브러리를 통해 모델 토크나이저의 Rust 구현체를 사용합니다. 스마트 캐싱과 결합되면 이 방식은 전체 지연 시간에서 최대 10배의 속도 향상을 제공합니다.

하드웨어별 컴파일 및 저수준 튜닝

초기 이득을 넘어 추가적인 10배의 성능 향상을 달성하기 위해, Hugging Face는 모델 아키텍처 및 대상 하드웨어(CPU 또는 GPU)에 특화된 저수준 최적화를 적용합니다.

CPU를 위한 정적 그래프 최적화

CPU 기반 추론의 경우, 팀은 계산 효율성을 극대화하기 위해 정적 그래프 기술을을 사용합니다. 여기에는 다음이 포함됩니다:

  • Graph Optimization: 모델 그래프 내에서 사용되지 않는 데이터 흐름을 제거합니다.
  • Layer Fusion: 특정 CPU 명령어를 사용하여 레이어를 결합합니다.
  • Quantization: 연산을 최적화하여 정밀도와 계산 요구 사항을 줄입니다.

사용자 정의 ONNX Runtime 구현

Transformers와 함께 ONNX Runtime과 같은 오픈 소스 도구를 사용할 수 있지만, Hugging Face는 특히 양자화(quantization) 중에 기본 기능이 최적의 결과를 내지 못하거나 상당한 정확도 손실을 초래할 수 있다고 언급합니다. 팀은 특정 모델 아키텍처에 맞게 Transformers 코드와 ONNX Runtime 설정을 수동으로 튜닝하여 추가적인 속도 향상을 달성합니다.

대규모 모델 아키텍처를 위한 스케일링

모델 크기의 급격한 증가(BERT의 1억 1천만 개의 파라미터에서 GPT-3의 1,750억 개의 파라미터로 성장)는 프로덕션 배포를 점점 더 어렵게 만들고 있습니다. Hugging Face는 Transformers 및 Tokenizers 라이브러리의 유지 관리자로서의 위치와 Intel, NVIDIA, Qualcomm, Amazon, 그리고 Microsoft와 같은 하드웨어 및 클라우드 벤더와의 파트너십을 활용하여 최신 하드웨어 최적화 기술을 사용하여 모델과 인프라의 교차점을 튜닝합니다.

Sources