【大模型】FastChat实现gpt一样流式输出,亲测有效!!!

一、简介

    流式输出就是一边生成一边输出结果,而不需要所有的结果都输出完成。流式传输是一种HTTP协议的特性,它允许服务器在响应数据准备好之前就开始向客户端发送数据。当数据准备好之后,服务器会将其作为一个或多个“块”传输到客户端,直到响应完成。

    流式传输通常用于需要实时更新数据的应用程序,例如聊天应用程序、股票报价等。使用流式传输,客户端可以在服务器更新数据时实时接收更新,而无需等待完整的响应。

二、背景

最近在部署Fastchat的vicuna-7b-v1.5-16k, Fastchat本身没有流式输出的serve,所以查找了一些资料,我的参考资料为FastChat+vicuna1.1部署与流式调用实践 - 知乎

三、实现流式输出

1. 在 FastChat/fastchat/serve/ 目录下增加 api_stream.py 脚本

2. 在 FastChat/fastchat/protocol/ 目录下增加chat_completion.py 脚本

这两个脚本都在上面给的参考资料里博主的github代码库中下载,所在目录同上⬆️GitHub - little51/FastChat: An open platform for training, serving, and evaluating large languages. Release repo for Vicuna and FastChat-T5.

🌟如果你懒得去找,可以直接百度网盘提取,永久有效!!!

【超级会员V4】我通过百度网盘分享的文件:chat_com....py等2个文件
链接:https://pan.baidu.com/s/1QyYlhtt3PlGCoIgfUyRBLA 
提取码:f4b5 
复制这段内容打开「百度网盘APP即可获取」

3. 依次拉起下面几个服务

🌟使用nohup拉起配合结尾的&使用,可以实现在后台运行

🌟使用ps aux |grep fastchat查看三个服务都是拉起状态就算成功

# 拉起controller
nohup python3 -m fastchat.serve.controller &

# 拉起model_worker,注意至少有20G显存或者40G内存
nohup python3 -m fastchat.serve.model_worker --model-path lmsys/vicuna-7b-v1.5-16k &

# 拉起api_stream,指定一个端口,我这里给的8087
FASTCHAT_CONTROLLER_URL=http://localhost:21001 CUDA_VISIBLE_DEVICES=1 nohup python -u -m fastchat.serve.api_stream --host 0.0.0.0 --port 8087 >> fastchat.log  2>&1 &

四、流式输出测试

把命令写到文件里运行文件即可:

# 在FastChat目录下创建文件flow_api.sh
touch flow_api.sh

# 将下面的内容写进flow_api.sh
curl http://localhost:8087/v1/chat/completions/stream \
-H "Content-Type: application/json" \
-d '{"model": "vicuna-7b-v1.5-16k","messages": [{"role": "user", "content": "请写一篇100字的日记"}]}'

# 执行该文件,输出为flow_api.out日志
sh flow_api.sh <flow_api.out

⚠️注意这个判断逻辑:

测试用curl多次发post请求,直到遇到[stop]停用词说明取完了推理结果。同一个生成结果,执行两次在第二次出现了[stop]停用词,说明实现了流式输出。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炭市街潜水豆浆

勇敢的人先体验生活

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值