OpenAI 호환 서버
vLLM은 OpenAI의 completions API와 chat 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 서버가 시작됩니다.
| $ 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 문서를 참고 바랍니다.