HF model → OpenAI compatible API
🤗

HF model → OpenAI compatible API

Tags
NLP
MLDL Framework
Dev
Published
Published February 26, 2024

HF Model 서빙하기: 귀찮다!

예를들어 https://huggingface.co/beomi/Yi-Ko-DUS-9B 와 같은 모델
→ vLLM이나 TGI로 서빙 가능
→ 하지만 셋업이 귀찮고 일부 모델 — PHI(https://huggingface.co/microsoft/phi-1_5) 혹은 Orion(https://huggingface.co/OrionStarAI/Orion-14B-Base)처럼 자체 Modeling 파이썬 파일을 가져다가 trust_remote_code=True 옵션을 주고서야 실행 가능한 경우는 더 귀찮아진다.
특히 API 서버를 만들어야 할 때는 더더욱.
 

간단하게 서빙해보자: transformers-openai-api

config.json 파일 하나 + 명령어 한 줄로 HF AutoModel을 API처럼 만들어주는 레포가 있다.
만들어진지는 오래되었지만 여전히 쓸만해보인다!
 

How-to

pip install transformers-openai-api wget https://raw.githubusercontent.com/jquesnelle/transformers-openai-api/master/config.example.json mv config.example.json config.json transformers-openai-api
위 가이드가 공식.
그래서 config.json을 수정해주면 된다.
 

config.json 수정하기

{ "MODELS": { "orion": { "NAME": "OrionStarAI/Orion-14B-Chat", "TYPE": "CausalLM", "MODEL_CONFIG": { "device_map": "auto", "trust_remote_code": true, "torch_dtype": "float16" }, "MODEL_DEVICE": null, "TOKENIZER_CONFIG": { "trust_remote_code": true } } }, "HOST": "0.0.0.0", "PORT": 13000 }
위와 같이 MODEL_CONFIG, TOKENIZER_CONFIG 를 써서 trust_remote_code 옵션도 잘 넣어줄 수 있다.
Host와 Port도 지정가능.
모델 명은 아래에 API 호출시 모델명으로 쓸 수 있다.
여러 모델을 미리 등록해두는 것도 가능한 듯 하다.
 

서버 띄우기

CUDA_VISIBLE_DEVICES='0,1' transformers-openai-api
이렇게 CUDA_VISIBLE_DEVICES 환경변수를 같이 잡아주고 커맨드 하나로 서버를 띄울 수 있다.
 

띄워진 서버 API 쓰기

curl -X "POST" "http://서버IP:13000/v1/completions" \ -H 'Authorization: TEST' \ -H 'Content-Type: application/json' \ -d $'{ "model": "orion", "temperature": 1, "prompt": "Hello world is" }'
위와 같이 CURL 등으로 호출 가능. OpenAI python 패키지에서도 구 버전의 completion api로 사용 가능.