피드로 돌아가기
Hugging Face BlogBackend
원문 읽기
Amazon SageMaker와 Hugging Face Transformers를 통해 GPT-J 6B의 모델 로드 시간을 210초에서 7.7초로 단축해 프로덕션 배포 가능 수준으로 개선
Deploy GPT-J 6B for inference using Hugging Face Transformers and Amazon SageMaker
AI 요약
Context
GPT-J 6B는 24GB 메모리 풋프린트를 가진 60억 파라미터 모델로, float32 기준 48GB의 CPU RAM이 필요해 프로덕션 배포가 어려웠다. 표준 Transformers의 from_pretrained() 메서드를 사용하면 P3.2xlarge EC2 인스턴스에서 3분 32초(디스크 저장 시 1분 23초)가 소요되어 Amazon SageMaker의 60초 요청 응답 제한을 초과했다.
Technical Solution
- 모델 직렬화 방식 변경: Transformers의 from_pretrained() 대신 torch.save()와 torch.load()를 사용해 모델을 PyTorch pickle 형식으로 저장·로드
- 메모리 최적화 로딩: float16 가중치와 low_cpu_mem_usage=True 옵션으로 필요 CPU RAM을 48GB에서 12.1GB로 감소
- 모델 아티팩트 패키징: 최적화된 .pt 파일과 tokenizer를 model.tar.gz로 압축해 Amazon S3에 저장
- SageMaker Hugging Face Inference Toolkit 배포: Hugging Face 제공 Docker 컨테이너를 사용해 NVIDIA T4 GPU 인스턴스(월 약 500달러)에서 실시간 추론 엔드포인트 구성
- 버전 관리 정렬: torch.save()와 torch.load() 호환성을 위해 저장 시점과 로드 시점의 PyTorch 및 Transformers 버전 일치 유지
Impact
- 모델 로드 시간을 1분 23초에서 7.7초로 단축 (약 10.5배 개선)
- P3.2xlarge의 3분 32초 → 8초 수준으로 단축 (BERT 기준 0.166초 대비 약 12배 성능 향상)
- 첫 요청 이후 추론 시간: 최대 45초 (매개변수 설정에 따라 15~45초 범위)
- Amazon SageMaker의 60초 요청 제한 내에서 모델 로드 및 추론 완료 가능
Key Takeaway
대규모 언어 모델의 프로덕션 배포는 모델 크기뿐 아니라 직렬화 형식 선택이 핵심이며, torch.save/load를 통한 pickle 기반 저장이 표준 Transformers 방식 대비 12배 빠른 로드 성능을 제공한다. 다만 버전 호환성 제약사항을 명시적으로 관리해야 한다.
실천 포인트
60억 이상의 파라미터를 가진 대규모 언어 모델을 Amazon SageMaker에서 배포할 때, Transformers의 from_pretrained() 대신 torch.save()/torch.load() 방식을 채택하면 모델 로드 시간을 210초 이상에서 8초 이하로 단축해 SageMaker의 60초 요청 제한을 만족하고 엔드포인트 안정성을 확보할 수 있다.