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 스펙이 조금 달라져요. type과 text 필드를 함께 담는 새 메시지 포맷을 받는데, 예를 들면 이렇게 생겼어요.
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 메서드를 실행할 수 있어서 극도로 위험하니 주의해야 해요.