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

小杰-大模型(five)——大模型部署与应用——Qwen2.5-0.5B本地部署

1. Qwen2.5-0.5B本地部署

根据之前的学习,我们知道,人工智能算法可以使用Windows或者Linux进行训练和部署,同时Windows和Linux都有对应的深度学习框架和NVIDIA加速CUDA,如PyTorch。

1.1 Qwen2.5-0.5B大模型介绍

1.1.1 Qwen2.5-0.5B大模型介绍

Qwen2.5是Qwen大模型的全新系列(以前版本有Qwen1,Qwen1.5,Qwen 2),参数量从 0.5B到 72B不等(其中“ B ”表示“十亿”, 72B 即为 720 亿)。我们以Qwen2.5-0.5B为例介绍本地部署方式。

网址:https://qwen.readthedocs.io/zh-cn/latest/

1.1.2 Qwen2.5-0.5B大模型量化介绍

1.1.2.1从魔搭社区模型库中输入量化,得到量化后的模型

1.1.2.2为啥要量化及量化效果

网址:https://qwen.readthedocs.io/zh-cn/latest/ 下选择评测下的效果评估如下图

1.2 部署Qwen2.5-0.5B大模型的步骤

1.2 部署Qwen2.5-0.5B大模型的步骤

1. 环境准备

1.1使用Conda创建虚拟环境

1.点击开始,并在输入框输入Anaconda如下

2.选择并打开

3.创建新的Python虚拟环境

# 安装 Miniconda 或 Anaconda 后,创建新的虚拟环境
conda create --name AI_env python=3.11.9

4.可选择激活或者不激活如下操作

# 激活虚拟环境
conda activate AI_env
步骤2:在Pycharm中使用创建的环境

在设置中添加刚创建的虚拟环境。

步骤3:安装必要依赖
在pycharm终端 使用以下命令安装所需的依赖库

安装 pytorch cpu版本(可选)

pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装 pytorch gpu版本(可选,如果有CUDA)

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126

安装 transformers

pip install transformers==4.45.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pycharm中 安装魔搭社区
pip install modelscope==1.18.1

2. 下载Qwen模型

为了加快下载速度,我们使用魔搭社区的下载方式。

下载模型

新建文件downloador.py

from modelscope.hub.snapshot_download import snapshot_download#'Qwen/Qwen2.5-0.5B-Instruct'为魔搭社区上的路径。
# 'models'为本地路径。
llm_model_dir = snapshot_download('Qwen/Qwen2.5-0.5B-Instruct',cache_dir='models')

下载完毕(下载过程中最好不要有断网等操作)解释:

3. 模型推理

transformers 是一个非常流行的库,由 Hugging Face 提供,用于处理自然语言处理(NLP)任务。这个库中包含了许多预训练模型以及相应的工具,可以用来进行文本生成、情感分析、翻译等多种任务。

代码中需要 AutoModelForCausalLMAutoTokenizer ,它们是 transformers 库中的两个重要组件,它们的作用如下:

  1. AutoTokenizer:
  • 这是一个自动化的分词器类,可以根据指定的预训练模型自动选择合适的分词器。分词器的主要功能是将原始文本转换为模型可以理解的形式,比如将句子分解成单词或子词单元,并将这些单元映射到对应的数字ID(这个过程通常称为“tokenization”)。不同的模型可能需要不同类型的分词策略,而 AutoTokenizer 能够根据模型名称自动加载正确的分词器配置。
  1. AutoModelForCausalLM:
  • 这个类代表了一个用于因果语言建模(即给定前文预测下一个词的任务)的自动模型。它能够根据指定的模型名称自动加载一个适合做语言生成任务的预训练模型。这类模型常用于文本生成、对话系统等场景。

这两个类配合使用时,通常流程如下:

  • 首先,使用 AutoTokenizer 加载或创建一个分词器实例,准备对输入文本进行处理。
  • 然后,使用 AutoModelForCausalLM 加载一个预训练的语言模型。
  • 接下来,利用分词器将原始文本转换为模型输入所需的格式。
  • 最后,将处理后的数据输入到模型中,执行特定的任务,如文本生成。
代码示例

使用Qwen2___5-0___5B-Instruct进行推理

import torch
#从transformers库中导入的AutoModelForCausalLM(用于因果语言模型)和AutoTokenizer(自动化的分词工具)。
from transformers import AutoTokenizer,AutoModelForCausalLM
#指定一下设备
device=torch.device('cuda' if torch.cuda.is_available() else 'cpu')
#使用预训练模型Qwen2.5-0.5B的分词器实例化 Tokenizer对象
tokenizer=AutoTokenizer.from_pretrained("Qwen2___5-0___5B-Instruct")
# print(tokenizer)
model=AutoModelForCausalLM.from_pretrained("Qwen2___5-0___5B-Instruct").to(device)
#设置对话的提示词
#用户输入 比如“你好”
prompt="你是谁?"
# 定义对话历史,包括系统信息(指示助手的角色)和用户输入的提示。
messages=[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":prompt}
]
# tokenizer.apply_chat_template这是用于应用聊天模板的方法,
# 将对话历史(messages)格式化为模型所需的输入文本格式
text=tokenizer.apply_chat_template(
# messages 输入的对话历史,通常是一个包含多轮对话的列表messages,
# tokenize=False,返回的是格式化后的文本字符串(而非分词后的 token IDs)tokenize=False,
# add_generation_prompt=True 在末尾添加一个生成提示符(例如 <|assistant|>),告诉模型接下来该生成回复add_generation_prompt=True
)
print(text)
model_inputs=tokenizer([text],return_tensors='pt').to(device)
print(model_inputs)# 使用模型生成新的token序列,最大生成新的token数量为512
generated_ids=model.generate(model_inputs.input_ids,max_new_tokens=512)
#解码
response =tokenizer.batch_decode(generated_ids)
# 截取生成的token序列,去除原始输入的部分。
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]
# #从打印结果看包含特殊字符
print(response)

http://www.dtcms.com/a/558170.html

相关文章:

  • Rabbitmq基础篇
  • 东莞营销网站建设服务微信营销的10种方法技巧
  • GTC2025 10月大会医疗健康与生命科学生态分析:从平台到临床的落地路径
  • 免费的网站怎么建六安网新科技集团有限公司
  • 如何通过芯片参考手册查看外设的引脚配置?
  • 邯郸做wap网站费用godaddy 网站上传
  • 美食网站建设策划书范文网站打开的速度特别慢的原因
  • 基于Java的LLM长上下文数据预处理方案:实现128k上下文智能数据选择
  • 关于QT打包 高版本
  • Webpack技术深度解析:模块打包与性能优化
  • 网站建设与管理名词解释wordpress根据分类id
  • 科技网站制作网站建设课设总结报告
  • 网站建设对旅游意义全网营销的渠道
  • JAVA111 HashMap Leecode:1 两数之和 3 无重复字符串的长度
  • 信息学奥赛一本通 ybt 1940:【07NOIP普及组】守望者的逃离 | 洛谷 P1095 [NOIP 2007 普及组] 守望者的逃离
  • 淘宝实时优惠券网站怎么做的甘肃建设监理协会网站
  • 工业一体机在UV固化机中的应用
  • 《算法通关指南:数据结构和算法篇 --- 顺序表相关算法题》--- 1.询问学号,2.寄包柜,3.合并两个有序数组
  • 陕西省关于网站信息内容建设南通网站建设企业
  • 【愚公系列】《MCP协议与AI Agent开发》003-大模型原理及MCP开发基础(LLM 的输入输出机制与上下文表示)
  • 国内酒店网站建设厦门房产网
  • 【开题答辩过程】以《基于微信小程序垃圾分类图像识别技术实现》为例,不会开题答辩的可以进来看看
  • 区块链论文速读 CCF A--USENIX Security 2025(3)
  • 美食网站建设策划报告企业开展网络营销方案
  • 和田网站制作南约社区网站建设
  • 江西省住房和城乡建设部网站谷歌seo外链平台
  • 使用 windeployqt 工具自动部署Qt依赖环境(DLL、插件、翻译文件等)
  • RDPWD!WDWParseUserData函数分析之Loop through user data--非常重要
  • php教育视频网站开发织梦cms视频网站建设
  • 合肥网站优化平台最有实权的十大部门