10min本地安装Qwen1.5-0.5B-Chat
大模型系列文章
本地电脑离线部署大模型
配置:MAC-M1-8GB
10min本地安装Qwen1.5-0.5B-Chat
前言
在人工智能领域,大模型无疑是最炙手可热的话题。之前曾尝试使用阿里云的服务器来部署和学习ChatGLM-6B,并试图在本地电脑上进行部署,但由于内存限制,处理一个问题需要耗费几分钟的时间。在探索了多个开源的大模型后,发现Qwen1.5-0.5B-Chat可以在本地进行部署,尽管其响应速度相对较慢,大约在10秒左右,但已经是一个可行的选择。接下来,计划基于这个本地模型,进一步探索大模型的应用与发展。
一、下载Qwen1.5-0.5B-Chat
git clone https://www.modelscope.cn/qwen/Qwen1.5-0.5B-Chat.git
二、构造函数chatBot.py
# 导入所需的库
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
import torch
import streamlit as st
# 在侧边栏中创建一个标题和一个链接
with st.sidebar:
st.markdown("## Qwen1.5 LLM")
"[开源大模型食用指南 self-llm](https://github.com/datawhalechina/self-llm.git)"
# 创建一个滑块,用于选择最大长度,范围在0到1024之间,默认值为512
max_length = st.slider("max_length", 0, 1024, 512, step=1)
# 创建一个标题和一个副标题
st.title("💬 Qwen1.5 Chatbot")
st.caption("🚀 A streamlit chatbot powered by Self-LLM")
# 定义模型路径
mode_name_or_path = '/mnt/workspace/20241105/Qwen1.5-0.5B-Chat'
device = "cpu"
# 定义一个函数,用于获取模型和tokenizer
@st.cache_resource
def get_model():
# 从预训练的模型中获取tokenizer
tokenizer = AutoTokenizer.from_pretrained(mode_name_or_path, use_fast=False)
# 从预训练的模型中获取模型,并设置模型参数
model = AutoModelForCausalLM.from_pretrained(mode_name_or_path, torch_dtype=torch.bfloat16, device_map="auto").to(device)
return tokenizer, model
# 加载Qwen1.5-4B-Chat的model和tokenizer
tokenizer, model = get_model()
# 如果session_state中没有"messages",则创建一个包含默认消息的列表
if "messages" not in st.session_state:
st.session_state["messages"] = [{"role": "assistant", "content": "有什么可以帮您的?"}]
# 遍历session_state中的所有消息,并显示在聊天界面上
for msg in st.session_state.messages:
st.chat_message(msg["role"]).write(msg["content"])
# 如果用户在聊天输入框中输入了内容,则执行以下操作
if prompt := st.chat_input():
# 将用户的输入添加到session_state中的messages列表中
st.session_state.messages.append({"role": "user", "content": prompt})
# 在聊天界面上显示用户的输入
st.chat_message("user").write(prompt)
# 构建输入
input_ids = tokenizer.apply_chat_template(st.session_state.messages,tokenize=False,add_generation_prompt=True)
#model_inputs = tokenizer([input_ids], return_tensors="pt").to('cuda')
#model_inputs = tokenizer([input_ids], return_tensors="pt").to('cpu')
model_inputs = tokenizer([input_ids], return_tensors="pt").to(device)
#generated_ids = model.generate(model_inputs.input_ids, max_new_tokens=512)
generated_ids = model.generate(model_inputs.input_ids, max_new_tokens=256)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
# 将模型的输出添加到session_state中的messages列表中
st.session_state.messages.append({"role": "assistant", "content": response})
# 在聊天界面上显示模型的输出
st.chat_message("assistant").write(response)
三、启动命令
1、放置脚本
可以把chatBot.py与下载下来的Qwen1.5-0.5B-Chat放置在一个目录下,方便调用
2、启动命令
streamlit run chatBot.py --server.address 127.0.0.1 --server.port 6006
3、效果图
原文地址:https://blog.csdn.net/weixin_39797176/article/details/143518284
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!