허깅 페이스 LLM 추론 컨테이너 Amazon SageMaker용
허깅 페이스는 Amazon SageMaker용 새로운 LLM 추론 컨테이너(DLC)를 출시하여 사용자가 안전하고 관리되는 환경에서 오픈소스 대형 언어 모델(LLM)을 배포할 수 있도록 했습니다. 이 컨테이너는 Text Generation Inference(TGI)로 구동되며, LLMs의 서비스를 높은 동시성과 낮은 지연 시간으로 최적화하도록 설계된 목적에 맞춘 솔루션입니다.
Text Generation Inference(TGI)를 사용한 고성능 추론
허깅 페이스 LLM DLC는 TGI를 활용하여 가장 인기 있는 오픈소스 LLM 아키텍처에 대해 여러 가지 기술적 최적화를 제공합니다. 이러한 최적화에는 다음과 같은 사항이 포함됩니다:
- 텐서 병렬 처리 및 사용자 정의 CUDA 커널: 모델 가중치를 여러 GPU에 분배하여 더 큰 모델을 처리하고 속도를 높입니다.
- 연속 배치: 들어오는 요청을 동적으로 배치하여 총 처리량을 증가시킵니다.
- 플래시 어텐션: 추론을 위해 최적화된 트랜스포머 코드를 사용하여 효율성을 향상시킵니다.
- 양자화:
bitsandbytes를 지원하여 모델 메모리 사용량을 줄입니다. - 가속된 가중치 로딩:
safetensors를 활용하여 시작 시간을 줄입니다. - 고급 생성 제어: 로짓 워퍼(온도 스케일링, top-k, 반복 패널티), 중지 시퀀스, 로그 확률, 그리고 Server-Sent Events(SSE)를 통한 토큰 스트리밍을 포함합니다.
- 워터마킹: 생성된 콘텐츠를 추적하기 위해 대형 언어 모델에 워터마킹을 구현합니다.
지원되는 모델 아키텍처
LLM 추론 컨테이너는 다음과 같은 다양한 모델 아키텍처를 공식적으로 지원합니다:
- BLOOM / BLOOMZ
- Llama (Vicuna, Alpaca, and Koala 포함)
- Falcon 7B / 40B
- GPT-NeoX 20B (Pythia, Lotus, Rosey, Chip, RedPajama, and Open Assistant 포함)
- StarCoder / SantaCoder
- FLAN-T5-XXL (T5-11B)
- Galactica
- MT0-XXL
Amazon SageMaker에서의 배포 워크플로
새로운 DLC를 사용하여 LLM을 배포하는 과정은 sagemaker Python SDK를 통해 간소화됩니다. 워크플로는 다음과 같은 단계로 구성됩니다:
1. 컨테이너 검색
사용자는 get_huggingface_llm_image_uri 메서드를 사용하여 백엔드, 지역, 버전을 지정하여 특정 컨테이너 URI를 가져옵니다(예: 버전 1.0.3).
2. 모델 구성
모델은 HuggingFaceModel 클래스를 사용하여 배포됩니다. 주요 구성 매개변수는 다음과 같습니다:
HF_MODEL_ID: 허깅 페이스 허브의 모델 ID(예:OpenAssistant/pythia-12b-sft-v8-7k-steps).SM_NUM_GPUS: 각 복제본에서 사용할 GPU 수.MAX_INPUT_LENGTH및MAX_TOTAL_TOKENS: 입력 및 출력 길이 제한.HF_MODEL_QUANTIZE: 비용 최적화를 위해bitsandbytes양자화를 활성화하는 선택적 설정.
3. 엔드포인트 배포
모델은 deploy 메서드를 사용하여 엔드포인트에 배포됩니다. 예를 들어, ml.g5.12xlarge 인스턴스(4개의 NVIDIA A10G GPU와 96GB GPU 메모리를 탑재)는 TGI를 통해 사용 가능한 모든 GPU에 모델을 자동으로 샤딩하는 데 사용할 수 있습니다.
추론 및 생성 매개변수
배포 후, 엔드포인트는 LLM의 출력을 제어하기 위한 다양한 생성 매개변수를 지원합니다:
- 랜덤성 및 샘플링:
temperature,top_p,top_k, 그리고do_sample. - 길이 및 반복:
max_new_tokens및repetition_penalty. - 제약 조건: 생성을 종료하는
stop시퀀스. - 기타 제어: 재현성을 위한
seed,typical_p, 그리고 출력에 프롬프트가 포함되는지 결정하는return_full_text.
이 인프라는 SageMaker 엔드포인트와 Gradio와 같은 프론트엔드 인터페이스를 결합하여 챗봇 및 가상 비서와 같은 확장 가능한 AI 애플리케이션을 생성할 수 있게 합니다.