Large Language Model/Implements

Serving LLM API

voidtype 2023. 9. 18. 20:04

개요

생성 모델을 개발하다보면, 내가 만든 모델을 테스트 해볼 수 있는 WebUI나 Restful API를 만들어야 하는 상황이 오게 됩니다. 요즘에는 오픈소스가 매우 잘 되어있어서 이런 기능이 이미 잘 만들어져 있는 것을 쉽게 찾아볼 수 있습니다.

 

그중에서도 FastChat 프로젝트를 소개하고 간단히 알아보겠습니다.

 

FastChat?

공식 페이지는 아래와 같습니다.

https://lmsys.org/about/

 

About | LMSYS Org

LMSYS Org, Large Model Systems Organization, is an organization missioned to democratize the technologies underlying large models and their system infrastructures.

lmsys.org

 

오픈소스 그룹이고요, UC 버클리 학부생들이 만들었다고 합니다. UCSD(캘리포니아 대학교)와 CMU(카네기멜론 대학교)와도 공동으로 협업을 한다고 하네요.

 

사용법

github repo는 아래와 같습니다.

https://github.com/lm-sys/FastChat

 

GitHub - lm-sys/FastChat: An open platform for training, serving, and evaluating large language models. Release repo for Vicuna

An open platform for training, serving, and evaluating large language models. Release repo for Vicuna and Chatbot Arena. - GitHub - lm-sys/FastChat: An open platform for training, serving, and eval...

github.com

 

출처 : lm-sys/FastChat

위와 같이 간단한 WebUI를 제공합니다.

아래와 같이 3가지 컴포넌트를 실행하면 바로 사용가능합니다.

python3 -m fastchat.serve.controller
python3 -m fastchat.serve.model_worker --model-path lmsys/vicuna-7b-v1.3
python3 -m fastchat.serve.gradio_web_server

Controller

webui와 worker를 함께 사용할 수 있게 중간 관리역할을 하는 모듈입니다.  worker를 실행시킬 때, 컨트롤러의 url을 전달하게 되어있습니다.

출처 : my blog

위와 같이 worker에서는 컨트롤러의 /register_worker api를 호출하여 등록하게 됩니다. 

Worker

실제 LLM모델을 로드하고, 인퍼런스를 수행하는 모듈입니다. 실행할 때, 사용할 포트와 gpu number를 설정해주는데, 보통 하나의  gpu card 한장 당  worker 하나가 동작하게 됩니다.

여러개의 worker가 실행될 수 있으며 실행할때마다 controller에 등록되게 됩니다.

마치며

요즘 다양한 모델들이 하루가 멀다하고 쏟아져 나오고 있는데요, 내가 직접 만든 모델을 외부에서 테스트용으로 공개할 때 빠르게 사용해볼 수 있는 라이브러리인 것 같습니다.