FastChat OpenAI 호환 API

FastChat OpenAI 호환 API

FastChat은 지원 모델에 대해 OpenAI 호환 RESTful API를 제공해요. 그래서 openai-python 라이브러리나 cURL로 FastChat을 로컬 OpenAI API 대체품(drop-in replacement)처럼 쓸 수 있어요.

출처: FastChat — OpenAI-Compatible RESTful APIs

지원되는 OpenAI API는 Chat Completions, Completions, Embeddings 세 가지예요.

RESTful API 서버 실행

먼저 컨트롤러를 띄워요.

python3 -m fastchat.serve.controller

그 다음 모델 워커를 띄워요.

python3 -m fastchat.serve.model_worker --model-path lmsys/vicuna-7b-v1.5

마지막으로 RESTful API 서버를 실행해요.

python3 -m fastchat.serve.openai_api_server --host localhost --port 8000

OpenAI 공식 SDK 사용

import openai

openai.api_key = "EMPTY"
openai.base_url = "http://localhost:8000/v1/"

model = "vicuna-7b-v1.5"
prompt = "Once upon a time"

completion = openai.completions.create(model=model, prompt=prompt, max_tokens=64)
print(prompt + completion.choices[0].text)

cURL 사용

curl http://localhost:8000/v1/chat/completions   -H "Content-Type: application/json"   -d '{"model": "vicuna-7b-v1.5",
       "messages": [{"role": "user", "content": "Hello! What is your name?"}]}'

멀티모델 실행

한 프로세스에서 여러 모델을 서빙하려면 multi_model_worker를 써요.

python3 -m fastchat.serve.multi_model_worker     --model-path lmsys/vicuna-7b-v1.5 --model-names vicuna-7b-v1.5     --model-path lmsys/longchat-7b-16k --model-names longchat-7b-16k

환경변수

  • FASTCHAT_WORKER_API_TIMEOUT: 워커 응답 타임아웃(기본 100초)
  • FASTCHAT_WORKER_API_EMBEDDING_BATCH_SIZE: 임베딩 OOM 시 배치 크기 축소(예: 1)

더 알아보기