콘텐츠로 이동

OpenAI 호환 서버

vLLM은 OpenAI의 completions APIchat API 등을 구현한 OpenAI 호환 HTTP Server를 제공합니다.

OpenAI compatible server에 대한 더 자세한 정보는 vLLM 문서을 참고하시기 바랍니다.

사전 준비

rebel-compiler, optimum-rbln, vllm-rbln 패키지의 최신 버전이 설치되어 있어야 합니다. 각 패키지를 설치하기 위해 리벨리온 사설 PyPI 서버의 접근 권한이 필요합니다. 관련 내용은 설치 가이드를 참고하시기 바랍니다. 각 패키지의 최신 버전은 릴리즈 노트에서 확인 할 수 있습니다.

$ pip3 install -i https://pypi.rbln.ai/simple/ "rebel-compiler>=0.7.1" "optimum-rbln>=0.2.0" "vllm-rbln>=0.2.0"

Llama2-7B 컴파일

OpenAI 호환 API 서버의 Tutorial 예제로 Llama2-7B를 사용합니다. 먼저, optimum-rbln을 사용하여 Llama2-7B 모델을 컴파일합니다.

from optimum.rbln import RBLNLlamaForCausalLM

# HuggingFace PyTorch Llama2 모델을 RBLN 컴파일된 모델로 내보내기
model_id = "meta-llama/Llama-2-7b-chat-hf"
compiled_model = RBLNLlamaForCausalLM.from_pretrained(
    model_id=model_id,
    export=True,
    rbln_max_seq_len=4096,
    rbln_tensor_parallel_size=4,  # Rebellions Scalable Design (RSD)를 위한 ATOM+ 개수
    rbln_batch_size=4,            # Continuous batching을 위해 batch_size > 1 권장
)

compiled_model.save_pretrained("rbln-Llama-2-7b-chat-hf")

서빙에 사용할 적절한 배치 크기를 선택해야 합니다. 여기에서는 4로 설정합니다.

OpenAI API server 실행

다음과 같이 vllm.entrypoints.openai.api_server 모듈을 실행하면 API 서버가 시작됩니다.

1
2
3
4
5
6
7
$ python -m vllm.entrypoints.openai.api_server \
  --model <PATH/TO/rbln-Llama-2-7b-chat-hf> \
  --device rbln \
  --max-num-seqs 4 \
  --max-num-batched-tokens 4096 \
  --max-model-len 4096 \
  --block-size 4096
  • model: 컴파일된 모델의 절대 경로를 설정합니다.
  • device: vLLM 실행을 위한 디바이스. rbln 으로 설정합니다.
  • max_num_seqs: 최대 시퀀스 수. 이는 컴파일된 batch_size와 반드시 일치해야 합니다.
  • RBLN 장치를 대상으로 할 때 max_model_len, block_size, max_num_batched_tokens 인수는 max_num_seqs와 동일해야 합니다.
  • 인증 기능을 활성화하려면 --api-key <API key로 사용될 문자열> 플래그를 추가합니다.

API 서버가 실행되고 나면 OpenAI의 파이썬 및 node.js 클라이언트를 이용해 API를 호출하거나 다음과 같이 curl 명령을 이용해 API를 실행할 수 있습니다.

$ curl http://<host and port number of the server>/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API key, if specified when running the server>" \
  -d '{
    "model": "PATH/TO/rbln-Llama-2-7b-chat-hf",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ],
    "stream": true
  }'

API에 대한 더 자세한 사항은 OpenAI 문서를 참고 바랍니다.