OpenAI 호환 서버 — 표준 API로 모델 서빙하기

OpenAI 호환 서버 — 표준 API로 모델 서빙하기

이미 OpenAI API를 쓰는 프로그램이 있다면, 서빙 스택만 vLLM으로 바꿔도 호출 코드는 거의 그대로 쓸 수 있어요. vLLM의 OpenAI 호환 서버가 OpenAI의 Completions API, Chat API, 그리고 더 많은 인터페이스를 그대로 구현하고 있거든요.

출처: https://docs.vllm.ai/en/latest/serving/online_serving/openai_compatible_server/

설치는 간단해요. vLLM을 설치한 뒤 터미널에서 vllm serve로 서버를 띄우면 끝이에요. Docker 이미지를 쓰고 싶다면 공식 Docker 이미지를 그대로 사용할 수도 있어요.

멀티모달 채팅 API를 쓰면 기존 OpenAI 스펙이 조금 달라져요. typetext 필드를 함께 담는 새 메시지 포맷을 받는데, 예를 들면 이렇게 생겼어요.

completion = client.chat.completions.create(
    model="NousResearch/Meta-Llama-3-8B-Instruct",
    messages=[...],
)

한 가지 알아둘 점은 --api-key 옵션(또는 VLLM_API_KEY 환경변수)이 모든 엔드포인트를 보호하지는 않는다는 거예요. API 키 인증은 /v1, /v2, /inference 경로 접두사 아래의 요청만 보호하죠.

서버에 추가 기능을 붙이려면 전용 엔드포인트도 있어요. LoRA 어댑터를 동적으로 붙였다 뗐다 하는 /v1/load_lora_adapter/v1/unload_lora_adapter, 서버 상세 설정을 반환하는 /server_info, 그리고 스케줄링을 위해 RPC를 실행하는 /collective_rpc 같은 게 대표적이에요. 이 중 /collective_rpc는 엔진에서 임의의 RPC 메서드를 실행할 수 있어서 극도로 위험하니 주의해야 해요.

더 알아보기