FastChat 大模型部署推理;Baichuan2-13B-Chat测试、chatglm2-6b测试

参考:
https://github.com/lm-sys/FastChat
https://blog.csdn.net/qq128252/article/details/132759107

##安装
pip3 install "fschat[model_worker,webui]"

模型下载:

##模型下载;huggingface下载慢,可以在modelscope下载:https://modelscope.cn/my/overviewfrom modelscope.models import Model
model = Model.from_pretrained('ZhipuAI/chatglm2-6b', revision='v1.0.9')

1、chatglm2-6b测试

python3 -m fastchat.serve.cli --model-path ./chatglm2-6b --num-gpus 2

在这里插入图片描述

web使用

1)启动控制器

python3 -m fastchat.serve.controller

2)启动模型工作

python3 -m fastchat.serve.model_worker --model-path ./chatglm2-6b --num-gpus 2  --host=0.0.0.0  --port=21002

3)web服务启动

python3 -m fastchat.serve.gradio_web_server

在这里插入图片描述
打开网址查看:
在这里插入图片描述

api服务

1)启动控制器

python3 -m fastchat.serve.controller

2)启动模型工作

python3 -m fastchat.serve.model_worker --model-path ./chatglm2-6b --num-gpus 2  --host=0.0.0.0  --port=21002

3)web服务启动

python3 -m fastchat.serve.api --host 0.0.0.0

4)客户端访问

import requests
import jsonheaders = {"Content-Type": "application/json"}
pload = {"model": "chatglm2-6b","messages": [{"role": "system","content": "AI专家"},{"role": "user","content": "你AI小助手,小名昵称为小乐,你主要擅长是智慧城***过30个字"},{"role": "assistant","content": "好的,小乐很乐意为你服务"},{"role": "user","content": "你能做啥?"}]}
response = requests.post("http://192****:8000/v1/chat/completions", headers=headers, json=pload, stream=True)
print(response.text)

在这里插入图片描述

自己该写自己api、web页面

1)启动控制器

python3 -m fastchat.serve.controller

2)启动模型工作

python3 -m fastchat.serve.model_worker --model-path ./chatglm2-6b --num-gpus 2  --host=0.0.0.0  --port=21002

3)启动 api页面或者web页面
***3-1.api 访问

import requests
import jsonheaders = {"Content-Type": "application/json"}
pload = {"model": "chatglm2-6b","prompt": [["Human","你名字叫****更智慧,让世界更安全"],["Assistant","好的,小杰很乐意为你服务"],["Human","澳门一日游推荐"], ["Assistant", None]],"stop": "###","max_new_tokens": 512,}
response = requests.post("http://192.1***:21002/worker_generate_stream", headers=headers, json=pload, stream=True,timeout=3)
# print(response.text)
for chunk in response.iter_lines(chunk_size=1024,decode_unicode=False, delimiter=b"\0"):if chunk:# print(chunk.decode("utf-8"))data = json.loads(chunk.decode("utf-8"))print(data["text"])# print(data["text"].split(" ")) 

***3-1.web 访问

streamlit run   stream_web.py

stream_web.py

import json
# import torch
import streamlit as st
import requests
# from transformers import AutoModel, AutoTokenizerst.set_page_config(page_title="小*智能")
st.title("小*智能")def get_response(text):headers = {"Content-Type": "application/json"}pload = {"model": "chatglm2-6b","prompt": text,"stop": "###","max_new_tokens": 5000,}print("pload",pload)response = requests.post("http://192****4:21002/worker_generate_stream", headers=headers, json=pload, stream=True)# print(response.text)return responsedef clear_chat_history():del st.session_state.messagesst.session_state.history1 = [st.session_state.history1[0]]  # 保留初始记录def init_chat_history():with st.chat_message("assistant", avatar='🤖'):st.markdown("您好,我是小*智能助手,很高兴为您服务🥰")if "messages" in st.session_state:for message in st.session_state.messages:avatar = '🧑‍💻' if message["role"] == "user" else '🤖'with st.chat_message(message["role"], avatar=avatar):st.markdown(message["content"])else:st.session_state.messages = []return st.session_state.messages# 初始化变量
if 'history1' not in st.session_state:st.session_state.history1 = [["Human","你名字****界更安全"],["Assistant","好的,小杰很乐意为你服务"]]
# 初始化 session_state
if "enter_pressed" not in st.session_state:st.session_state.enter_pressed = Falsedef main():# model, tokenizer = init_model()messages = init_chat_history()print("history1:",st.session_state.history1)if prompt := st.chat_input("Shift + Enter 换行, Enter 发送"):with st.chat_message("user", avatar='🧑‍💻'):st.markdown(prompt)messages.append({"role": "user", "content": prompt})print(f"[user] {prompt}", flush=True)with st.chat_message("assistant", avatar='🤖'):placeholder = st.empty()st.session_state.history1.append(["Human",prompt])st.session_state.history1.append(["Assistant",None])print("history1:",st.session_state.history1)results = get_response(st.session_state.history1)for chunk in results.iter_lines(chunk_size=1024,decode_unicode=False, delimiter=b"\0"):if chunk:# print(chunk.decode("utf-8"))response = json.loads(chunk.decode("utf-8"))["text"]# print(response) placeholder.markdown(response[(len(prompt)+1):])print(prompt,response[(len(prompt)+1):])st.session_state.history1[-1][1] =response[(len(prompt)+1):]messages.append({"role": "assistant", "content": response[(len(prompt)+1):]})print(json.dumps(messages, ensure_ascii=False), flush=True)st.button("清空对话", on_click=clear_chat_history)if __name__ == "__main__":main()

在这里插入图片描述

2、Baichuan2-13B-Chat测试

##运行命令:python3 -m fastchat.serve.cli --model-path ./Baichuan2-13B-Chat --num-gpus 4

在这里插入图片描述

1)ValueError: Tokenizer class BaichuanTokenizer does not exist or is not currently imported. 2)offload报错,ValueError: The current device_map had weights offloaded to the disk. Please provide an offload_folder for them.也需要增加

按照报错信息需要更改:
/site-packages/fastchat/serve/inference.py

增加trust_remote_code=True
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/88239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安防视频平台EasyCVR视频调阅全屏播放显示异常是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

执行上下文,js、React、HTML中的this

目录 执行上下文属性:变量对象、this,作用域链 变量对象是与执行上下文相关的数据作用域,存储:变量、函数声明 执行上下文生命周期 创建:生成变量对象、创建函数作用域,建立作用域链、确定this的指向 …

经典文献阅读之--EGO-Planner(无ESDF的四旋翼局部规划器)

0. 简介 作为局部规划器而言,当机器人或无人机想要避开动态障碍物时。局部规划器就显得尤为重要了。其中基于梯度的规划器被广泛用于四旋翼无人机的局部规划,其中欧几里得符号距离场(ESDF)对于评估梯度幅度和方向至关重要。然而&…

ARINC825规范简介

ARINC825规范简介 机载CAN网络通用标准 ARINC825规范全称为机载CAN网络通用标准(The General Standardization of CAN for Airborne Use)。顾名思义,ARINC825规范是建立在CAN物理网络基础上的高层规范。CAN网络使用共享的双绞电缆传输数据&…

电压放大器在无损探伤中的应用研究

电压放大器是一种常见的电子设备,其主要作用是将低电平信号转换为高电平信号。在无损探伤中,电压放大器被广泛应用于信号增益和分析,以便更好地检测表面或内部缺陷。下面安泰电子Aigtek将详细介绍电压放大器在无损探伤中的应用研究。 电压放大…

二、vue2脚手架-组件化开发

| vue中的图片打包后会转换为base64格式 组件的使用 1.创建组件:component文件夹中创建HelloWorld.vue文件 2.在app.vue中引入组件 组件间的通信/传值(常用) 一、prop父传子 1.App.vue中的引入组件中创建需要传递的数据 2.在子组件中接…

车厂造手机旗舰版售价6899,不只是个“车钥匙”

大伙应该发现了这两年的一个奇怪现象:造手机的跑去造车,而车厂又跑来造手机。 这也好解释,毕竟别人碗里的更香、别人老氵…板先挑衅是吧? 昨日,蔚来在其创新科技日活动中正式发布了传闻已久的手机产品 NIO Phone 。 …

掌动智能兼容性测试有哪些优势

兼容性测试为企业带来市场竞争优势,并提高用户满意度。在软件开发过程中,将兼容性测试作为一个重要的环节,将为企业的成功和用户满意度打下坚实的基础。那么,掌动智能兼容性测试的具体优势是什么?下面,就来看看具体介…

mdobus ASCII转CAN OPEN JAE1939协议网关

Modbus RTU协议转换网关是一种常见的设备,用于将Modbus RTU协议转换为其他通信协议。而CANopen是一种基于CAN总线的通信协议,主要用于工业自动化和控制系统中。本文将介绍Modbus RTU协议转换网关如何支持CANopen协议,以及该功能的应用场景和优…

【1】ElementUI 组件实际应用===》按钮的使用

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。个人B站主页热爱技术的小郑 ,视频内容主要是对应文章的视频讲解形式。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘…

【JAVA EE】详解单点登录

作者简介 目录 1.概述 2.实现方案 2.1.分散鉴权 2.2.集中鉴权 1.概述 SSO,即进行一次认证,然后就可以访问所有子系统。很明显SSO只是一种具象化的目标而已,目前业内为了实现单点登录、统一鉴权,提出了一系列的打法。比如直接…

Unity3D C# 反射与特性的配合使用

需求分析 情况: 假如我们是一个动物园的管理员,我们需要统计园内的所有动物和动物的行为。 举例: 现在园区内有猫、狗和鸡。猫对应的行为是喵喵喵和卖萌,狗对应狗吠和干饭,鸡对应篮球和打鸣那么这时候我要统计这些&a…

Lyapunov optimization 李雅普诺夫优化

文章目录 正文引言Lyapunov drift for queueing networks 排队网络的Lyapunov漂移Quadratic Lyapunov functions 二次李雅普诺夫函数Bounding the Lyapunov drift 李亚普诺夫漂移的边界A basic Lyapunov drift theorem 一个基本的李雅普诺夫漂移定理 Lyapunov optimization for…

【C++】手撕string(string的模拟实现)

手撕string目录: 一、 Member functions 1.1 constructor 1.2 Copy constructor(代码重构:传统写法和现代写法) 1.3 operator(代码重构:现代写法超级牛逼) 1.4 destructor 二、Other mem…

【算法思想】贪心

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

探索ClickHouse——使用Projection加速查询

在测试Projection之前,我们需要先创建一张表,并导入大量数据。 我们可以直接使用指令,从URL指向的文件中获取内容并导入表。但是担心网络不稳定,我们先将文件下载下来。 下载文件 wget wget http://prod.publicdata.landregistr…

项目开发中使用Date和LocalDateTime处理日期

文章目录 项目开发中使用Date和LocalDateTime处理日期Date类型验证数据库表设计(年月日情况)实体类说明映射文件xml响应展示情况注意事项 LocalDateTime验证数据库设计实体类日期类型动态SQL日期类型响应展示情况 总结 项目开发中使用Date和LocalDateTim…

Windows10/11显示文件扩展名 修改文件后缀名教程

前言 写这篇文章的原因是由于我分享的教程中的文件、安装包基本都是存在阿里云盘的,下载后需要改后缀名才能使用。 但是好多同学不会改。。 Windows 10 随便打开一个文件夹,在上方工具栏点击 “查看”点击 “查看” 后下方会显示更详细的工具栏然后点…

SPA项目之登录注册--请求问题(POSTGET)以及跨域问题

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于VueElementUI的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.ElementUI是什么 💡…

ubuntu下用pycharm专业版连接AI服务器及其docker环境

一:用pycharm专业版连接AI服务器 1、首先在自己电脑上新建一个文件夹,后续用于映射服务器上自己所要用的项目文件 2、用pycharm专业版打开该文件夹,作为一个项目打开 3、然后在工具->部署->配置 4、配置中形式如下: 点击左…