引言
FastChat是一个开放平台,用于训练、服务和评估基于LLM的ChatBot。
FastChat的核心功能包括:
- 优秀的大语言模型训练和评估代码。
- 具有Web UI和OpenAI兼容的RESTful API的分布式多模型服务系统。
vLLM是一个由加州伯克利分校、斯坦福大学和加州大学圣迭戈分校的研究人员基于操作系统中经典的虚拟缓存和分页技术开发的LLM服务系统。他实现了几乎零浪费的KV缓存,并且可以在请求内部和请求之间灵活共享KV高速缓存,从而减少内存使用量。
FastChat开源链接:
https://github.com/lm-sys/FastChat
vLLM开源链接:
https://github.com/vllm-project/vllm
vLLM论文链接:
https://arxiv.org/pdf/2309.06180.pdf
继魔搭社区和vLLM展开合作后【魔搭牵手vLLM,提供更快更高效LLM推理服务】,最近魔搭社区继续FastChat展开合作,联合vLLM一起为中国开发者提供更快更高效的LLM推理和部署服务。开发者可以实现针对魔搭社区的大语言模型,使用vLLM作为FastChat中的推理引擎,提供高吞吐量的模型推理。
魔搭社区最新的镜像已经支持预装vLLM,魔搭官方镜像环境:
registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda11.8.0-py310-torch2.1.0-tf2.14.0-1.10.0
魔搭社区支持的模型列表:
模型结构 |
模型名称 |
实际的模型id样例 |
AquilaForCausalLM |
Aquila |
BAAI/AquilaChat2-34B, BAAI/Aquila2-34B, etc. |
BaiChuanForCausalLM |
Baichuan |
baichuan-inc/Baichuan2-7B-Base, baichuan-inc/Baichuan2-13B-Base, etc. |
ChatGLMModel |
ChatGLM |
ZhipuAI/chatglm2-6b, ZhipuAI/chatglm3-6b, etc. |
InternLMForCausalLM |
InternLM |
internlm/internlm-7b, internlm/internlm-chat-7b, etc. |
QWenLMHeadModel |
Qwen |
qwen/Qwen-1_8B-Chat, qwen/Qwen-7B-Chat, qwen/Qwen-14B-Chat,qwen/Qwen-72B-Chat,etc. |
LlamaForCausalLM |
LLaMa |
modelscope/Llama-2-7b-ms,modelscope/Llama-2-13b-ms modelscope/Llama-2-70b-ms, etc. |
YiForCausalLM |
Yi |
01ai/Yi-6B-Chat, 01ai/Yi-34B-Chat, etc. |
魔搭社区最佳实践
环境配置与安装
本文主要演示的模型推理代码可在魔搭社区免费实例PAI-DSW的配置下运行(显存24G) :
第一步:点击模型右侧Notebook快速开发按钮,选择GPU环境
镜像选择:Ubuntu22.04-cuda11.8.0-py310-torch2.1.0-tf2.14.0-1.10.0
第二步:进入terminal环境
第三步:安装FastChat最新包
git clone https://github.com/lm-sys/FastChat.git cd FastChat pip install .
环境变量设置
在vLLM和FastChat上使用魔搭的模型需要设置两个环境变量:
export VLLM_USE_MODELSCOPE=True export FASTCHAT_USE_MODELSCOPE=True
之后在需要填入模型id的地方使用魔搭的模型id即可。下面我们给出几个代码范例,来展示在vLLM+FastChat上如何快速地加载魔搭模型进行推理。
模型部署
使用FastChat实现发布model worker(s)
首先我们使用FastChat实现发布一个model worker(s),首先启动一个controller:
python -m fastchat.serve.controller
发布一个model worker(s),以vicuna模型和千问模型为例
#以vicuna-7B-v1.5为例,在A10运行 python -m fastchat.serve.model_worker --model-path AI-ModelScope/vicuna-7b-v1.5 --revision v1.0.0
#以qwen-1.8B为例,在A10运行 python -m fastchat.serve.model_worker --model-path qwen/Qwen-1_8B-Chat --revision v1.0.0
体验问答效果:
也可以使用命令行客户端启动服务
python3 -m fastchat.serve.test_message --model-name Qwen-1_8B-Chat --message hello
然后启动gradio服务,开始网页端WebUI的问答:
python3 -m fastchat.serve.gradio_web_server --host 0.0.0.0 --port 8000
使用FastChat和vLLM实现发布model worker(s)
可以结合FastChat和vLLM搭建一个网页Demo或者类OpenAI API服务器,首先启动一个controller:
python -m fastchat.serve.controller
然后启动vllm_worker发布模型。如下给出单卡推理的示例,运行如下命令:
千问模型示例:
#以qwen-1.8B为例,在A10运行 python -m fastchat.serve.vllm_worker --model-path qwen/Qwen-1_8B-Chat --trust-remote-code --dtype bfloat16
vicuna模型示例:
#以vicuna-7B-v1.5为例,在A10运行 python -m fastchat.serve.vllm_worker --model-path AI-ModelScope/vicuna-7b-v1.5 --trust-remote-code --dtype bfloat16
启动vLLM优化worker后,本次实践启动页面端demo展示:
python -m fastchat.serve.gradio_web_server --host 0.0.0.0 --port 8000
效果体验
让我们体验极致推理优化的效果吧!
中文案例(千问1.8B)
英文案例(vicuna-7B-v1.5)