本项目依托fastchat的基础能力来提供openai server的能力.
- 在此基础上完美适配了更多的模型,优化了fastchat兼容较差的模型
- 支持了Function Calling (Tools) 能力(现阶段支持Qwen/ChatGLM,对Qwen支持更好)
- 重新适配了vllm对模型适配较差,导致解码内容和hf不对齐的问题。
- 支持了vllm、LMDeploy和hf的加载方式
- 支持所有兼容sentence_transformers的语义向量模型(Embedding和Reranker)
- 支持了OpenAI接口规范的文本审核模型(text-moderation,/v1/moderations)
- 支持了OpenAI接口规范的TTS模型(tts,/v1/audio/speech),自带edge-tts(免费的TTS)
- 支持了Infinity后端,推理速度大于onnx/tensorrt,支持动态组批
- 支持guided_decoding,强制模型按照Schema的要求进行JSON格式输出。
- Chat模板无角色限制,使其完美支持了LangGraph Agent框架
- 支持多模态大模型
- 降低了模型适配的难度和项目使用的难度(新模型的适配仅需修改低于5行代码),从而更容易的部署自己最新的模型。
(仓库初步构建中,构建过程中没有经过完善的回归测试,可能会发生已适配的模型不可用的Bug,欢迎提出改进或者适配模型的建议意见。)
本项目将在下一个版本将Python版本环境管理工具由pip切换到 uv(https://github.com/astral-sh/uv)
- 支持多种推理后端引擎,vLLM和LMDeploy,LMDeploy后端引擎,每秒处理的请求数是 vLLM 的 1.36 ~ 1.85 倍
- 支持了Infinity后端,推理速度大于onnx/tensorrt,支持动态组批
- 全球唯一完美支持Tools(Function Calling)功能的开源框架。兼容LangChain的 bind_tools、AgentExecutor、with_structured_output写法(目前支持Qwen系列、GLM系列)
- 支持了cohere库接口规范的 /v1/rerank 接口
- 全球唯一扩展了openai库,实现Reranker模型(rerank, /v1/rerank)。(代码样例见gpt_server/tests/test_openai_rerank.py)
- 全球唯一支持了openai库的文本审核模型接口(text-moderation, /v1/moderations)。(代码样例见gpt_server/tests/test_openai_moderation.py)
- 全球唯一支持了openai库的文本审核模型接口(tts, /v1/audio/speech),自带edge-tts(免费的TTS)(代码样例见gpt_server/tests/test_openai_tts.py)
- 支持多模态大模型
- 与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
- 支持HF后端
- 支持vLLM后端
- 支持LMDeploy后端
- 支持 function call 功能 (tools)(Qwen系列、ChatGLM系列已经支持,后面有需求再继续扩展)
- 支持多模态模型(初步支持glm-4v,其它模型后续慢慢支持)
- 支持Embedding模型动态组批(实现方式:infinity后端)
- 支持Reranker模型动态组批(实现方式:infinity后端)
- 可视化启动界面(不稳定,对开发人员来说比较鸡肋,后期将弃用!)
- 支持 pip install 方式进行安装
- 内置部分 tools (image_gen,code_interpreter,weather等)
- 并行的function call功能(tools)
# 安装 uv
pip install uv -U # 或查看教程 https://docs.astral.sh/uv/getting-started/installation/#standalone-installer
bash install_uv.sh # 也可以复制 install_uv.sh 中的内容一条一条执行
# 1. 创建conda 环境
conda create -n gpt_server python=3.10
# 2. 激活conda 环境
conda activate gpt_server
# 3. 安装仓库(一定要使用 install.sh 安装,否则无法解决依赖冲突)
bash install.sh
# 进入script目录
cd gpt_server/script
# 复制样例配置文件
cp config_example.yaml config.yaml
cd gpt_server/script
vim config.yaml
配置文件的详细说明信息位于:config_example.yaml
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
sh start.sh
或者
python gpt_server/serving/main.py
docker pull 506610466/gpt_server:latest # 如果拉取失败可尝试下面的方式
# 如果国内无法拉取docker镜像,可以尝试下面的国内镜像拉取的方式(不保证国内镜像源一直可用)
docker pull func.ink/506610466/gpt_server:latest
- 构建镜像
docker build --rm -f "Dockerfile" -t gpt_server:latest "."
docker-compose -f "docker-compose.yml" up -d --build gpt_server
cd gpt_server/serving
streamlit run server_ui.py
见 gpt_server/tests 目录 样例测试代码: https://github.com/shell-nlp/gpt_server/tree/main/tests
cd gpt_server/gpt_server/serving
streamlit run chat_ui.py
Chat UI界面:
推理速度: LMDeploy TurboMind > vllm > LMDeploy PyTorch > HF
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 | √ | √ | × | × |
VLM (视觉大模型榜单 https://rank.opencompass.org.cn/leaderboard-multimodal)
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模型
推理速度: 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)
FastChat : https://github.com/lm-sys/FastChat
vLLM : https://github.com/vllm-project/vllm
LMDeploy : https://github.com/InternLM/lmdeploy