当前位置: 首页 > wzjs >正文

深圳公司网站建设设计山东省交通厅建设网站首页

深圳公司网站建设设计,山东省交通厅建设网站首页,网站推广优化哪家正规,互联网营销师有必要考吗DeepSeek-R1-Distill-Qwen 是由中国人工智能公司深度求索(DeepSeek)开发的轻量化大语言模型,基于阿里巴巴的Qwen系列模型通过知识蒸馏技术优化而来。当前模型开源后,我们可以将其部署,使用API方式进行本地调用 1.部署…

在这里插入图片描述

DeepSeek-R1-Distill-Qwen 是由中国人工智能公司深度求索(DeepSeek)开发的轻量化大语言模型,基于阿里巴巴的Qwen系列模型通过知识蒸馏技术优化而来。当前模型开源后,我们可以将其部署,使用API方式进行本地调用

1.部署环境

本文中的部署基础环境如下所示:

PyTorch  2.5.1
Python  3.12(ubuntu22.04)
Cuda  12.4
GPU RTX 3090(24GB) * 1
CPU 14 vCPU Intel(R) Xeon(R) Platinum 8362 CPU @ 2.80GHz

2.依赖安装

# 升级 pip
python -m pip install --upgrade pip
# 更换 pypi 源加速库的安装
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepip install transformers==4.48.2
pip install accelerate==1.3.0
pip install modelscope==1.22.3
pip install streamlit==1.41.1

3.模型下载

使用 modelscope 中的 snapshot_download 函数下载模型,第一个参数为模型名称,参数 cache_dir 为模型的下载路径,这里放在autodl的数据文件夹中比较合适。
在这里插入图片描述

4.代码准备

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
import streamlit as st
import rewith st.sidebar:st.markdown("## DeepSeek-R1-Distill-Qwen-7B LLM")max_length = st.slider("max_length", 0, 8192, 8192, step=1)st.title("DeepSeek R1 Distill Chatbot")
st.caption("A streamlit chatbot powered by Self-LLM")mode_name_or_path = '/root/autodl-tmp/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B'def split_text(text):pattern = re.compile(r'<think>(.*?)</think>(.*)', re.DOTALL)match = pattern.search(text)if match:return match.group(1).strip(), match.group(2).strip()return "", text.strip()@st.cache_resource
def get_model():tokenizer = AutoTokenizer.from_pretrained(mode_name_or_path, trust_remote_code=True)tokenizer.pad_token = tokenizer.eos_tokenmodel = AutoModelForCausalLM.from_pretrained(mode_name_or_path, torch_dtype=torch.bfloat16, device_map="auto")return tokenizer, modeltokenizer, 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.chat_message("user").write(prompt)st.session_state.messages.append({"role": "user", "content": 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')generated_ids = model.generate(model_inputs.input_ids, max_new_tokens=max_length)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]think_content, answer_content = split_text(response)st.session_state.messages.append({"role": "assistant", "content": response})with st.expander("模型思考过程"):st.write(think_content)st.chat_message("assistant").write(answer_content)

下面将代码拆分为几个部分,每个部分附上核心代码及功能介绍,以及对应的效果说明。

1. 侧边栏设置

代码片段:

with st.sidebar:st.markdown("## DeepSeek-R1-Distill-Qwen-7B LLM")max_length = st.slider("max_length", 0, 8192, 8192, step=1)

功能介绍:

  • 在侧边栏中展示标题
  • 通过滑块让用户选择生成文本时的最大 token 数,默认值设为 8192。
    代码效果:
    用户在侧边栏可以直观地看到大模型标题、参考链接以及调整生成长度的滑块。

2. 主界面标题与说明

代码片段:

st.title("DeepSeek R1 Distill Chatbot")
st.caption("A streamlit chatbot powered by Self-LLM")

功能介绍:

  • 设置页面主标题和副标题,为用户展示聊天机器人的名称和简介。
    代码效果:
    页面顶部显示醒目的标题和简洁的说明,营造聊天机器人的整体界面氛围。

3. 模型加载与缓存

代码片段:

mode_name_or_path = '/root/autodl-tmp/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B'@st.cache_resource
def get_model():tokenizer = AutoTokenizer.from_pretrained(mode_name_or_path, trust_remote_code=True)tokenizer.pad_token = tokenizer.eos_tokenmodel = AutoModelForCausalLM.from_pretrained(mode_name_or_path, torch_dtype=torch.bfloat16, device_map="auto")return tokenizer, modeltokenizer, model = get_model()

功能介绍:

  • 定义模型路径,并通过 get_model 函数加载预训练的 tokenizer 和模型。
  • 使用 st.cache_resource 进行缓存,避免重复加载,提高运行效率。
  • 设置 tokenizer 的 pad token 为 eos_token,保证模型输入的一致性。
    代码效果:
    在首次运行时加载模型和 tokenizer,后续使用缓存内容,加快响应速度。

4. 聊天历史初始化与展示

代码片段:

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"])

功能介绍:

  • 检查 session_state 中是否已有聊天记录,如果没有则初始化一个默认的助手消息。
  • 遍历历史消息,并在聊天窗口中按角色(用户或助手)依次展示对应内容。
    代码效果:
    页面加载后,聊天窗口显示初始的问候信息,并呈现之前的对话记录(若有)。

5. 用户输入处理与模型响应生成

代码片段:

if prompt := st.chat_input():st.chat_message("user").write(prompt)st.session_state.messages.append({"role": "user", "content": 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')generated_ids = model.generate(model_inputs.input_ids, max_new_tokens=max_length)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]think_content, answer_content = split_text(response)st.session_state.messages.append({"role": "assistant", "content": response})with st.expander("模型思考过程"):st.write(think_content)st.chat_message("assistant").write(answer_content)

功能介绍:

  • 通过 st.chat_input() 接收用户输入,并将其添加到聊天历史中。
  • 利用预定义的聊天模板将所有对话转换为模型输入格式,并通过 tokenizer 处理。
  • 将处理后的输入送入模型生成回复,设定生成 token 数量上限为用户选择的 max_length
  • 对生成的回复进行解码和分割,分离出模型的“思考过程”与最终回答。
  • 将完整回复保存至历史记录中,并分别在可展开区域和聊天窗口中显示“思考过程”和实际回答。
    代码效果:
    用户输入后,聊天窗口立即显示用户消息。模型响应后,用户可以点击展开区域查看模型的内部思考过程,同时直接看到对话回答,呈现完整的交互体验。

6. 辅助函数:分割模型输出

代码片段:

def split_text(text):pattern = re.compile(r'<think>(.*?)</think>(.*)', re.DOTALL)match = pattern.search(text)if match:return match.group(1).strip(), match.group(2).strip()return "", text.strip()

功能介绍:

  • 使用正则表达式匹配模型输出中以 <think>...</think> 包裹的“思考过程”,将其与实际回答分离。
  • 若没有匹配到“思考过程”,则直接返回完整回答。
    代码效果:
    保证模型的输出能清晰地分离内部“思考过程”与最终回答,方便用户查看模型生成过程。

5.效果测试

streamlit run deepseek_web.py --server.address 127.0.0.1 --server.port 6006

在这里插入图片描述

在这里插入图片描述


文章转载自:

http://e6NtUiqs.pxbky.cn
http://qOyfMV1T.pxbky.cn
http://SeAtRXos.pxbky.cn
http://LVjhcVjI.pxbky.cn
http://ujMSHAnS.pxbky.cn
http://Bx0K4oR7.pxbky.cn
http://lg5Cb58L.pxbky.cn
http://LUE2wBQG.pxbky.cn
http://EpxIPpaF.pxbky.cn
http://YuL0eJyj.pxbky.cn
http://J5RZXUnf.pxbky.cn
http://Xm0lDRh4.pxbky.cn
http://09duocXD.pxbky.cn
http://ZZy52NY1.pxbky.cn
http://b7QiKor5.pxbky.cn
http://NRBfalNm.pxbky.cn
http://ERDJacbu.pxbky.cn
http://iX5KLFO0.pxbky.cn
http://KkTC8ouv.pxbky.cn
http://E8shScs9.pxbky.cn
http://2o5IrdZ4.pxbky.cn
http://uWeUrcts.pxbky.cn
http://yfoRLv3k.pxbky.cn
http://SwCHYHkZ.pxbky.cn
http://4YGwBnb9.pxbky.cn
http://llbd5Jhq.pxbky.cn
http://KONtq6Vp.pxbky.cn
http://mJv2MKuu.pxbky.cn
http://xzsUY1ap.pxbky.cn
http://XCVWuNsA.pxbky.cn
http://www.dtcms.com/wzjs/639610.html

相关文章:

  • 域名如何绑定网站在线做h5 的网站
  • 哪个网站教人做美食个人网站可以干什么
  • 购物网站上分期怎么做的深圳电商网站
  • 永久免费素材网站vancl凡客诚品正品
  • 网站建设环境配置计算机网站建设体会
  • 公司网站开发 flask个人信息管理网站建设
  • 苏州建站网站网站建设专业术语
  • 做网站怎么切psd图网站关健词排名
  • 公司企业网站维护永久网站
  • 潍坊在线网站建设wordpress恢复默认
  • 高校建设人事处网站的意义龙之向导外贸网站
  • 网站开发教程云盘网站建设明细价单
  • 建设公司网站多少钱济南网站建设就选搜点网络ok
  • 网站开发 .net网页设计心得体会报告怎么写
  • 浙江建筑公司排名前100在线优化工具
  • 乌克兰网站设计苏州公司网页制作
  • 承德市外贸网站建设网络营销渠道优化
  • 网站优化套餐建设个人网上银行登录入口官网
  • 网站首页广告网站建设的多吗
  • 百度智能建站系统四川网站建设企业网站制作
  • 网站怎么做动效少儿编程机构十大排名
  • 网站商城设计方案微信公众平台网页版
  • 网站seo流程系统软件开发
  • 域名访问网站啥意思无锡高端网站建设
  • 动态视频素材网站朋友圈广告投放平台
  • 小城天长网站建设潍坊做网站好看
  • 一个网站的页头大概做多大wordpress微站
  • 专业网站建设方案wordpress 项目管理插件
  • 深圳龙华建设工程交易中心网站网站开发实验报告可行性分析
  • 大型网站开发php框架深圳官网