gpt_server

gpt_server

gpt_server是一个用于生产级部署LLMs或Embedding的开源框架。

Stars: 142

Visit
 screenshot

The GPT Server project leverages the basic capabilities of FastChat to provide the capabilities of an openai server. It perfectly adapts more models, optimizes models with poor compatibility in FastChat, and supports loading vllm, LMDeploy, and hf in various ways. It also supports all sentence_transformers compatible semantic vector models, including Chat templates with function roles, Function Calling (Tools) capability, and multi-modal large models. The project aims to reduce the difficulty of model adaptation and project usage, making it easier to deploy the latest models with minimal code changes.

README:

gpt_server logo

GPT Server

License Stars Forks Docker pulls CI Status issue resolution

本项目依托fastchat的基础能力来提供openai server的能力.

  1. 在此基础上完美适配了更多的模型优化了fastchat兼容较差的模型
  2. 支持了Function Calling (Tools) 能力(现阶段支持Qwen/ChatGLM,对Qwen支持更好)
  3. 重新适配了vllm对模型适配较差,导致解码内容和hf不对齐的问题。
  4. 支持了vllmLMDeployhf的加载方式
  5. 支持所有兼容sentence_transformers的语义向量模型(Embedding和Reranker)
  6. 支持了OpenAI接口规范的文本审核模型(text-moderation,/v1/moderations)
  7. 支持了OpenAI接口规范的TTS模型(tts,/v1/audio/speech),自带edge-tts(免费的TTS)
  8. 支持了Infinity后端,推理速度大于onnx/tensorrt,支持动态组批
  9. 支持guided_decoding,强制模型按照Schema的要求进行JSON格式输出。
  10. Chat模板无角色限制,使其完美支持了LangGraph Agent框架
  11. 支持多模态大模型
  12. 降低了模型适配的难度和项目使用的难度(新模型的适配仅需修改低于5行代码),从而更容易的部署自己最新的模型。

(仓库初步构建中,构建过程中没有经过完善的回归测试,可能会发生已适配的模型不可用的Bug,欢迎提出改进或者适配模型的建议意见。)

最新消息

本项目将在下一个版本将Python版本环境管理工具由pip切换到 uv(https://github.com/astral-sh/uv)

特色

  1. 支持多种推理后端引擎,vLLM和LMDeploy,LMDeploy后端引擎,每秒处理的请求数是 vLLM 的 1.36 ~ 1.85 倍
  2. 支持了Infinity后端,推理速度大于onnx/tensorrt,支持动态组批
  3. 全球唯一完美支持Tools(Function Calling)功能的开源框架。兼容LangChainbind_toolsAgentExecutorwith_structured_output写法(目前支持Qwen系列、GLM系列)
  4. 支持了cohere库接口规范的 /v1/rerank 接口
  5. 全球唯一扩展了openai库,实现Reranker模型(rerank, /v1/rerank)。(代码样例见gpt_server/tests/test_openai_rerank.py)
  6. 全球唯一支持了openai库的文本审核模型接口(text-moderation, /v1/moderations)。(代码样例见gpt_server/tests/test_openai_moderation.py)
  7. 全球唯一支持了openai库的文本审核模型接口(tts, /v1/audio/speech),自带edge-tts(免费的TTS)(代码样例见gpt_server/tests/test_openai_tts.py)
  8. 支持多模态大模型
  9. 与FastChat相同的分布式架构

更新信息

2024-12-22 支持了 tts, /v1/audio/speech TTS模型
2024-12-21 支持了 text-moderation, /v1/moderations 文本审核模型 
2024-12-14 支持了 phi-4
2024-12-7  支持了 /v1/rerank 接口
2024-12-1  支持了 QWQ-32B-Preview
2024-10-15 支持了 Qwen2-VL
2024-9-19  支持了 minicpmv 模型
2024-8-17  支持了 vllm/hf 后端的 lora 部署
2024-8-14  支持了 InternVL2 系列多模态模型
2024-7-28  支持embedding/reranker 的动态组批加速(infinity后端, 比onnx/tensorrt更快)
2024-7-19  支持了多模态模型 glm-4v-gb 的LMDeploy PyTorch后端
2024-6-22  支持了 Qwen系列、ChatGLM系列 function call (tools) 能力
2024-6-12  支持了 qwen-2
2024-6-5   支持了 Yinka、zpoint_large_embedding_zh 嵌入模型
2024-6-5   支持了 glm4-9b系列(hf和vllm)
2024-4-27  支持了 LMDeploy 加速推理后端
2024-4-20  支持了 llama-3
2024-4-13  支持了 deepseek
2024-4-4   支持了 embedding模型 acge_text_embedding
2024-3-9   支持了 reranker 模型 ( bge-reranker,bce-reranker-base_v1)
2024-3-3   支持了 internlm-1.0 ,internlm-2.0
2024-3-2   支持了 qwen-1.5 0.5B, 1.8B, 4B, 7B, 14B, and 72B
2024-2-4   支持了 vllm 实现
2024-1-6   支持了 Yi-34B
2023-12-31 支持了 qwen-7b, qwen-14b
2023-12-30 支持了 all-embedding(理论上支持所有的词嵌入模型)
2023-12-24 支持了 chatglm3-6b 

路线

  • [X] 支持HF后端
  • [X] 支持vLLM后端
  • [X] 支持LMDeploy后端
  • [X] 支持 function call 功能 (tools)(Qwen系列、ChatGLM系列已经支持,后面有需求再继续扩展)
  • [X] 支持多模态模型(初步支持glm-4v,其它模型后续慢慢支持)
  • [X] 支持Embedding模型动态组批(实现方式:infinity后端)
  • [X] 支持Reranker模型动态组批(实现方式:infinity后端)
  • [X] 可视化启动界面(不稳定,对开发人员来说比较鸡肋,后期将弃用!)
  • [ ] 支持 pip install 方式进行安装
  • [ ] 内置部分 tools (image_gen,code_interpreter,weather等)
  • [ ] 并行的function call功能(tools)

快速开始

1. 配置python环境

1.1 uv 方式 安装 (推荐,适用于不使用conda的用户,迄今最优秀的 库 管理工具, 性能和易用性远高于 pip、conda、poetry等)

# 安装 uv 
pip install uv -U # 或查看教程 https://docs.astral.sh/uv/getting-started/installation/#standalone-installer
bash install_uv.sh  # 也可以复制 install_uv.sh 中的内容一条一条执行

1.2 conda 方式 安装(后期将弃用,可选)

# 1. 创建conda 环境
conda create -n gpt_server python=3.10

# 2. 激活conda 环境
conda activate gpt_server

# 3. 安装仓库(一定要使用 install.sh 安装,否则无法解决依赖冲突)
bash install.sh

2. 修改启动配置文件

2.1 复制样例配置文件:

# 进入script目录
cd gpt_server/script
# 复制样例配置文件
cp config_example.yaml config.yaml

2.2 修改配置文件

cd gpt_server/script
vim config.yaml

配置文件的详细说明信息位于:config_example.yaml

2.3 如何切换模型后端(vllm,lmdeploy等)

config.yaml中:

work_mode: vllm  # vllm hf lmdeploy-turbomind  lmdeploy-pytorch

修改embedding/reranker后端方式(embedding或embedding_infinity)

config.yaml中:

model_type: embedding_infinity # embedding 或 embedding_infinity  embedding_infinity后端速度远远大于 embedding

3. 启动服务

3.1 命令启动

start.sh

sh start.sh

或者

python gpt_server/serving/main.py

3.2 Docker启动

3.2.0 使用Docker Hub镜像
docker pull 506610466/gpt_server:latest # 如果拉取失败可尝试下面的方式
# 如果国内无法拉取docker镜像,可以尝试下面的国内镜像拉取的方式(不保证国内镜像源一直可用)
docker pull func.ink/506610466/gpt_server:latest
3.2.1 手动构建镜像(可选)
  • 构建镜像
docker build --rm -f "Dockerfile" -t gpt_server:latest "." 
3.2.2 Docker Compose 启动 (建议在项目里使用docker-compose启动)
docker-compose  -f "docker-compose.yml" up -d --build gpt_server

3.3 可视化UI方式启动服务(可选,有Bug,不建议使用,欢迎大佬优化代码)

cd gpt_server/serving
streamlit run server_ui.py
3.3.1 Server UI界面:

server_ui_demo.png

4. 使用 openai 库 进行调用

见 gpt_server/tests 目录 样例测试代码: https://github.com/shell-nlp/gpt_server/tree/main/tests

5. 使用Chat UI

cd gpt_server/gpt_server/serving
streamlit run chat_ui.py

Chat UI界面:

chat_ui_demo.png

支持的模型以及推理后端

推理速度: LMDeploy TurboMind > vllm > LMDeploy PyTorch > HF

LLM

Models / BackEnd model_type HF vllm LMDeploy TurboMind LMDeploy PyTorch
chatglm4-9b chatglm
chatglm3-6b chatglm ×
Qwen (7B, 14B, etc.)) qwen
Qwen-1.5 (0.5B--72B) qwen
Qwen-2 qwen
Qwen-2.5 qwen
Yi-34B yi
Internlm-1.0 internlm
Internlm-2.0 internlm
Deepseek deepseek
Llama-3 llama
Baichuan-2 baichuan
QWQ-32B-Preview qwen
Phi-4 phi × ×
Models / BackEnd model_type HF vllm LMDeploy TurboMind LMDeploy PyTorch
glm-4v-9b chatglm × × ×
InternVL2 internvl2 × ×
MiniCPM-V-2_6 minicpmv × ×
Qwen2-VL qwen × ×

Embedding/Rerank/Classify模型

原则上支持所有的Embedding/Rerank/Classify模型

推理速度: Infinity >> HF

以下模型经过测试可放心使用:

Embedding/Rerank/Classify HF Infinity
bge-reranker
bce-reranker
bge-embedding
bce-embedding
puff
piccolo-base-zh-embedding
acge_text_embedding
Yinka
zpoint_large_embedding_zh
xiaobu-embedding
Conan-embedding-v1
KoalaAI/Text-Moderation(文本审核/多分类,审核文本是否存在暴力、色情等) ×
protectai/deberta-v3-base-prompt-injection-v2(提示注入/2分类,审核文本为提示注入) ×

目前 TencentBAC的 Conan-embedding-v1 C-MTEB榜单排行第一(MTEB: https://huggingface.co/spaces/mteb/leaderboard)

架构

gpt_server_archs.png

致谢

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

vLLM : https://github.com/vllm-project/vllm

LMDeploy https://github.com/InternLM/lmdeploy

infinityhttps://github.com/michaelfeil/infinity

与我联系(会邀请进入交流群)

wechat.png

Star History

Star History Chart

For Tasks:

Click tags to check more tools for each tasks

For Jobs:

Alternative AI tools for gpt_server

Similar Open Source Tools

For similar tasks

For similar jobs