在 compshare 平台中租用一台配置为 3090 或以上显存(24G)*2的显卡机器。镜像选择如下:
接下来,打开刚刚租用的服务器的 JupyterLab,并启动其中的终端开始环境配置、模型下载和运行演示。
streamlit run /root/compshare-tmp/chatBot.py --server.address 0.0.0.0 --server.port 11434
# 升级pip
python -m pip install --upgrade pip
# 更换 pypi 源加速库的安装
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 安装依赖包
pip install modelscope==1.9.5
pip install transformers==4.48.3
pip install streamlit==1.24.0
pip install sentencepiece==0.1.99
pip install accelerate==1.3.0
pip install transformers_stream_generator==0.0.4
使用 modelscope
中的 snapshot_download
函数下载模型。以下是下载模型的步骤:
/root/compshare-tmp
路径下新建 download.py
文件,并将以下代码粘贴进去:import torch
from modelscope import snapshot_download
import os # Optional for faster downloading
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
model_dir = snapshot_download('agentica-org/DeepScaleR-1.5B-Preview', cache_dir='/root/compshare-tmp')
python /root/compshare-tmp/download.py
在 /root/compshare-tmp
路径下新建 chatBot.py
文件,并将以下代码粘贴进去:
# 导入所需的库
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
import torch
import streamlit as st
# 在侧边栏中创建一个标题和一个链接
with st.sidebar:
st.markdown("## DeepScaleR-1.5B LLM")
max_length = st.slider("max_length", 0, 8196, 1024, step=1)
# 创建一个标题和一个副标题
st.title("💬 DeepScaleR-1.5B Chatbot")
st.caption("🚀 A streamlit chatbot powered by Compshare")
# 定义模型路径
mode_name_or_path = '/root/compshare-tmp/agentica-org/DeepScaleR-1.5B-Preview'
# 定义一个函数,用于获取模型和tokenizer
@st.cache_resource
def get_model():
tokenizer = AutoTokenizer.from_pretrained(mode_name_or_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(mode_name_or_path, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map="auto")
model.generation_config = GenerationConfig.from_pretrained(mode_name_or_path)
model.eval()
return tokenizer, model
# 加载Baichuan-7B-chat的model和tokenizer
tokenizer, model = get_model()
if "messages" not in st.session_state:
st.session_state["messages"] = [{"role": "assistant", "content": "有什么可以帮您的?"}]
for msg in st.session_state.messages:
st.chat_message(msg["role"]).write(msg["content"])
if prompt := st.chat_input():
st.session_state.messages.append({"role": "user", "content": prompt})
st.chat_message("user").write(prompt)
input_tensor = tokenizer.apply_chat_template(st.session_state.messages, add_generation_prompt=True, return_tensors="pt")
outputs = model.generate(input_tensor.to(model.device), max_new_tokens=max_length)
response = tokenizer.decode(outputs[0][input_tensor.shape[1]:], skip_special_tokens=True)
st.session_state.messages.append({"role": "assistant", "content": response})
st.chat_message("assistant").write(response)
在终端中运行以下命令启动 streamlit
服务,并按照 compshare
的指示将端口映射到本地,然后在浏览器中打开链接 http://localhost:6006/
,即可看到聊天界面。
streamlit run /root/compshare-tmp/chatBot.py --server.address 0.0.0.0 --server.port 11434