TorchServe로 대규모 언어 모델(LLM) 배포하기

TorchServe로 대규모 언어 모델(LLM) 배포하기

LLM을 프로덕션에서 띄우려면 모델 서빙 서버 선택이 중요한데요, TorchServe는 PyTorch 모델 전용 서버답게 vLLM 통합을 기본으로 제공해요. 이 가이드에서는 TorchServe의 LLM 런처 스크립트 한 줄로 Meta-Llama3 같은 생성형 모델을 배포하는 방법을 살펴봐요. 추가로 Llama 챗봇, GPT-fast, Inferentia2처럼 LLM을 배포하는 여러 대안 예시도 함께 소개할게요.

출처: LLM Deployment with TorchServe — PyTorch/Serve

vLLM 통합으로 빠르게 시작하기

TorchServe는 vLLM 통합을 통해 손쉬운 LLM 배포를 지원해요. LLM 런처 스크립트를 쓰면 vLLM이 지원하는 어떤 모델이든 단 하나의 명령으로 배포할 수 있어요. 이 런처는 단독으로 쓸 수도 있고, TorchServe GPU 도커 이미지와 함께 쓸 수도 있어요.

먼저 도커 이미지를 빌드해요.

docker build . -f docker/Dockerfile.vllm -t ts/vllm

모델은 보통 HuggingFace 허브에서 받아오고, 더 빠른 재로드(reload)를 위해 도커 볼륨에 캐시돼요. Meta-Llama3처럼 게이트(gated) 모델에 접근하려면 HuggingFace 허브 토큰을 지정해야 해요.

export token=<HUGGINGFACE_HUB_TOKEN>

이제 선택한 모델을 서빙하는 TorchServe 인스턴스를 실행해요.

docker run --rm -ti --shm-size 1g --gpus all -e HUGGING_FACE_HUB_TOKEN=$token -p 8080:8080 -v data:/data ts/vllm --model_id meta-llama/Meta-Llama-3-8B-Instruct --disable_token_auth

모델을 바꾸고 싶다면 --model_id 파라미터에 주는 식별자만 교체하면 돼요. 아래처럼 요청을 보내 테스트해볼 수 있어요.

curl -X POST -d '{"prompt":"Hello, my name is", "max_new_tokens": 50}' --header "Content-Type: application/json" "http://localhost:8080/predictions/model"

요청별 샘플링 인자는 vLLM의 SamplingParams 키워드를 그대로 사용해 바꿀 수 있어요. 예를 들어 샘플링 온도를 0으로 설정하려면 이렇게 해요.

curl -X POST -d '{"prompt":"Hello, my name is", "max_new_tokens": 50, "temperature": 0}' --header "Content-Type: application/json" "http://localhost:8080/predictions/model"

런처 스크립트에는 커스터마이징 옵션도 있어요. 모델 엔드포인트를 predictions/model에서 다른 이름으로 바꾸려면 docker run 명령에 --model_name <SOME_NAME>을 추가하면 돼요. 도커 밖에서도 설치 가이드를 따라 TorchServe를 설치한 뒤 이렇게 런처를 직접 실행할 수 있어요.

python -m ts.llm_launcher --disable_token_auth

런처 스크립트와 도커 명령은 사용 가능한 모든 GPU에서 자동으로 실행되니, CUDA_VISIBLE_DEVICES로 노출되는 디바이스 수를 제한해 주세요. 핸들러를 더 커스터마이즈하거나 서드파티 의존성을 추가하려면 공식 vLLM 예제를 참고하면 돼요.

지원되는 모델

퀵스타트 런처는 vLLM이 지원하는 모든 모델을 띄울 수 있어요. TorchServe 팀이 직접 테스트한 모델 식별자는 다음과 같아요.

  • meta-llama/Meta-Llama-3-8B
  • meta-llama/Meta-Llama-3-8B-Instruct
  • meta-llama/Llama-2-7b-hf
  • meta-llama/Llama-2-7b-chat-hf
  • mistralai/Mistral-7B-v0.1
  • mistralai/Mistral-7B-Instruct-v0.1

TorchServe로 LLM을 배포하는 다른 방법

TorchServe는 대형 모델을 배포하는 여러 예시를 제공해요.

  • Llama 2/3 chat bot: Llama 기반 대화형 챗봇
  • GPT-fast: 빠른 추론을 위한 GPT-fast 통합
  • Inferentia2: AWS Inferentia2에서의 대형 모델 실행
  • IPEX optimized: Intel IPEX 최적화
  • Tensor Parallel Llama: 텐서 병렬 방식의 Llama 배포
  • VLLM Integration: vLLM 기반 LLM 서빙

더 알아보기 (Learn more)