笔记本 Win10 部署阿里通义千问 1.5-0.5B 大模型 mini 版
文章目录
- 1.环境准备
- 1.1 硬件环境
- 1.2 OS 环境
- 1.3 Python 环境
- 2.环境安装
- 2.1 CUDA 驱动下载安装
- 2.2 torch 库下载安装
- 2.3 transformers 库安装
- 2.3 accelerate 库安装
- 2.4 验证 CUDA 是否可用
- 2.5 下载 Qwen1.5-0.5B 大模型
- 3.测试大模型
- 3.1 加载大模型
- 3.2 简单对话
- 3.3 亲测体验感受
1.环境准备
1.1 硬件环境
华硕飞行堡垒笔记本
网络:联网环境(必备)
显卡:NVIDIA GeForce GTX 1050 显卡,4G 显存
运行内存:8G 即可
CPU:4核
1.2 OS 环境
Windows 10 操作系统
1.3 Python 环境
Python 3.8.2 版本
pip 国内源配置,目的是快速下载 Python 依赖库
先在 C:\Users\Administrator 目录 创建 .pip 目录
然后在 C:\Users\Administrator.pip 目录 创建 pip.ini 文件
然后在文件编辑如下内容
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
extra-index-url = https://pypi.org/simplehttps://mirrors.aliyun.com/pypi/simple/https://pypi.mirrors.ustc.edu.cn/simple/https://mirrors.sustech.edu.cn/pypi/web/simple/
2.环境安装
2.1 CUDA 驱动下载安装
因为使用的显卡是笔记本自带的 NVIDIA GeForce GTX 1050
所以这里安装的驱动是 CUDA 12.4 版本,兼容 1050 显卡
CUDA 12.4 版本 驱动 下载地址:
https://developer.download.nvidia.cn/compute/cuda/12.4.1/local_installers/cuda_12.4.1_551.78_windows.exe
cuda_12.4.1_551.78_windows.exe 此安装包 2.97G,下载时间有点长
注意:
根据不同操作系统、CPU架构版本,需要适配 CUDA 驱动版本,可以去 NVIDIA 官网下载
访问地址是:
https://developer.nvidia.cn/cuda-toolkit
https://developer.nvidia.cn/cuda-downloads
手动安装 cuda_12.4.1_551.78_windows.exe
安装完,需重启笔记本
检查 CUDA 驱动是否能用
Windows + R 运行 → cmd 确定 → 输入 nvidia-smi
示例:
C:\Users\Administrator>nvidia-smi
Sat Mar 15 11:31:24 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 551.78 Driver Version: 551.78 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce GTX 1050 WDDM | 00000000:01:00.0 Off | N/A |
| N/A 32C P0 N/A / ERR! | 0MiB / 4096MiB | 1% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------++-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+C:\Users\Administrator>
2.2 torch 库下载安装
为了使用 GPU,Torch 库的版本需要依赖 CUDA 版本的,需要单独下载,Windows 版本所以下载 whl 包
torch 下载地址(因为本地使用的 Python 版本是 3.8,所以下载这个版本 torch-2.2.1+cu121-cp38-cp38-win_amd64.whl):
https://download.pytorch.org/whl/cu121/torch-2.2.1%2Bcu121-cp38-cp38-win_amd64.whl
torch-2.2.1+cu121-cp38-cp38-win_amd64.whl 这个包 2.28G,下载有点慢
安装方式:(Windows 10 控制台安装)
首先,Windows + R 运行 → cmd 确定,cd 进到 torch-2.2.1+cu121-cp38-cp38-win_amd64.whl 文件所在目录,然后 pip 安装
pip install torch-2.2.1+cu121-cp310-cp310-win_amd64.whl
安装后 pip list 看到的 torch 版本是 2.2.1+cu121
注意:
解释 torch-2.2.1+cu121-cp38-cp38-win_amd64.whl 版本参数
torch-2.2.1 : torch 版本
cu121 : CUDA 版本 12.1,实际使用 CUDA 版本 12.4,也能够兼容
cp38 : Python 3.8 版本
win_amd64 : Windows 64 位版本
其他 Python 版本(3.8,3.9,3.10,3.11,3.12)下载列表地址:
https://download.pytorch.org/whl/cu121/torch/
2.3 transformers 库安装
transformers 库是使用大模型的基础库
pip install transformers
不需要指定版本,自动安装最新的库
安装后 pip list 看到的 transformers 版本是 4.46.3
2.3 accelerate 库安装
pip install accelerate
不需要指定版本,自动安装最新的库
安装后 pip list 看到的 accelerate 版本是 1.0.1
2.4 验证 CUDA 是否可用
import torch# 输出为 True 则表示可以正常使用 CUDA
print(torch.cuda.is_available())# 输出 CUDA 版本号
print(torch.version.cuda)if torch.cuda.is_available():# 打印当前GPU的名称,通常包含CUDA版本信息print(torch.cuda.get_device_name(0))# 打印当前GPU的计算能力(例如7.5)print(torch.cuda.get_device_capability(0))
2.5 下载 Qwen1.5-0.5B 大模型
大模型下载地址:(国内地址,可直接访问)
https://modelscope.cn/models/Qwen/Qwen1.5-0.5B/files
推荐浏览器访问,建议逐个点击下载,保存到本地,重点 model.safetensors 文件务必下载完整,否则后续跑不通
因为模型文件比较大,故 git clone 拉取不推荐使用
建议下载路径保存到 全英文目录
下载后的文件列表是:
LICENSE
README.md
config.json
configuration.json
generation_config.json
merges.txt
model.safetensors
tokenizer.json
tokenizer_config.json
vocab.json
3.测试大模型
3.1 加载大模型
# dependency
from transformers import AutoModelForCausalLM, AutoTokenizer## the device to load the model onto
device = "cuda"## 0.5B 大模型 保存的目录,建议全英文目录
path = r"F:\\models\\Qwen1.5-0.5B"model = AutoModelForCausalLM.from_pretrained(path,torch_dtype="auto",device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(path)
3.2 简单对话
- v1 基础版本
## 会话
prompt = "你是谁"messages = [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": prompt}
]text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True
)model_inputs = tokenizer([text], return_tensors="pt").to(device)generated_ids = model.generate(model_inputs.input_ids,max_new_tokens=512
)
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)
基础版本直接回答问题
- v2 封装成函数版本
def get_response(prompt):messages = [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": prompt}]text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True)model_inputs = tokenizer([text], return_tensors="pt").to(device)generated_ids = model.generate(model_inputs.input_ids,max_new_tokens=512,pad_token_id=tokenizer.eos_token_id)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)get_response("如何学习Python?")
这一版可以直接调用函数进行问答问题
- v3 保存历史进行多轮会话版本
def run_qwen_with_history():messages = [{"role": "system", "content": "You are a helpful assistant."},#{"role": "user", "content": prompt}]while True:new_question = input("请输入你的问题:")if new_question == "clear":messages = [messages[0]]continue#messages.append({"role": "user", "content": new_question})text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True)model_inputs = tokenizer([text], return_tensors="pt").to(device)generated_ids = model.generate(model_inputs.input_ids,max_new_tokens=512,pad_token_id=tokenizer.eos_token_id)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)#messages.append({"role": "system", "content": response})run_qwen_with_history()
这一版后台会记住之前的对话,从而实现多轮对话的功能。
3.3 亲测体验感受
实测 0.5B 模型 跑的时候占用 GPU 显存 1.3G
整体对话回答的体验效果不是很好,毕竟这是笔记本跑的 mini 版,勉强算是体验了一把大模型,哈哈哈
我们下期见,拜拜!
相关文章:
笔记本 Win10 部署阿里通义千问 1.5-0.5B 大模型 mini 版
文章目录 1.环境准备1.1 硬件环境1.2 OS 环境1.3 Python 环境 2.环境安装2.1 CUDA 驱动下载安装2.2 torch 库下载安装2.3 transformers 库安装2.3 accelerate 库安装2.4 验证 CUDA 是否可用2.5 下载 Qwen1.5-0.5B 大模型 3.测试大模型3.1 加载大模型3.2 简单对话3.3 亲测体验感…...
Flutter三棵树是什么,为什么这么设计
目录 1. 三棵树的定义与职责 (1) Widget 树 (2) Element 树 (3) RenderObject 树 2. 三棵树的协同工作流程 3. 为什么设计三棵树? (1) 性能优化 (2) 逻辑解耦 (3) 灵活性 4. 三棵树的设计优势总结 示例:动态列表更新 常见面试追问 Flutter 的「三棵树」是其核心设…...
Postman中Authorization和Headers的区别
案例 笔者在进行token验证的时候碰到的问题 一般如果是进行token验证,大部分是在Headers下面添加token名称及token的值 这样:后端提取请求头的token即可 还有一种是,左侧选择Bearer Token,右侧添加token的值,后端传递的 大概…...
python使用openai的api的时候声明不要走系统代理,默认是走的
配置了以上的方式,还是不行。因为项目默认使用的是国内的大模型服务商,但是接口是和openapi通用的,所以可以直接使用,但是项目中有的链接还是要走系统代理的,所以就需要将两者区分开,配置openapi不走系统代…...
【免费】1949-2020年各省人均GDP数据
1949-2020年各省人均GDP数据 1、时间:1952-2020年 2、来源:国家统计局、统计年鉴 3、指标:各省人均GDP 4、范围:31省 5、指标解释:人均GDP(Gross Domestic Product per capita)是指一个国家…...
C 语言实战:打造字符串加密器及实验要点解析
在 C 语言的学习过程中,通过实际项目来巩固知识、提升编程能力是极为有效的方式。本次我们聚焦于 Imperative Programming in C 课程的实验内容,深入剖析如何用 C 语言实现一个字符串加密器(Scrambler),同时也会涉及实验中相关的 C 语言基础知识点,帮助大家更好地理解和掌…...
ThreadLocal(线程本地存储)
什么是 ThreadLocal? ThreadLocal 是 Java 中用于实现线程本地存储的一个类。它的主要作用是为每个线程提供独立的变量副本,从而避免多线程环境下的数据共享和竞争问题。 ThreadLocal 是一个工具类,允许你为每个线程创建独立的变量副本。每…...
《Python实战进阶》No24: PyAutoGUI 实现桌面自动化
No24: PyAutoGUI 实现桌面自动化 摘要 PyAutoGUI 是一个跨平台的桌面自动化工具,能够模拟鼠标点击、键盘输入、屏幕截图与图像识别,适用于重复性桌面任务(如表单填写、游戏操作、批量文件处理)。本集通过代码截图输出日志的实战形…...
功耗电流和耗电量的获取
1. 实验室环境: 在受控的实验条件下,我们使用 PowerMonitor 精确控制变量(如固定设备型号和系统版本、清理后台应用、设置恒定的亮度与音量、确保稳定的网络连接等),以获取高精度的电流测量数据,从而准确评…...
医疗送药机器人“空间拓扑优化+动态算法决策+多级容错控制”三重链式编程技术解析与应用
一、引言 1.1 研究背景与意义 在医疗体系中,高效精准的药品配送是保障医疗服务质量和患者安全的关键环节。随着医疗技术的不断进步和医疗需求的日益增长,传统的人工送药方式逐渐暴露出诸多弊端,如配送效率低下、易受人为因素干扰导致错误率上升、人力成本高昂等。特别是在…...
C++【类和对象】(结束篇)
C类和对象 1.static成员2.友元3.内部类4.匿名对象5.对象拷贝时的编译器优化 1.static成员 用static修饰的成员变量叫做静态成员变量,静态成员一定要在类外进行初始化。静态成员变量为所有类的共享,放入静态区,不属于某个具体对象,…...
[CISCN 2022 初赛]ezpop(没成功复现)
打开在线环境可以看到: 记得之前做过一个类似的就是有点像照着漏洞去复现。应该可以直接在网上找到链子去打。 www.zip查看路由是 Index/test,然后 post 传参 a: exp(参考了别的大神的wp): <?php //…...
QT编程之QGIS
一、QGIS介绍 Quantum GIS(QGIS)是开源地理信息系统桌面软件,使用GNU(General Public License)授权, 属于 Open Source eospatial Foundation( OSGeo )的官方计划。在 GNU 授权下&am…...
福特售后再添亮点,为烈马模块化车身改装提供专业支持
2024年5月17日,中国上海 2024 年北京国际车展期间,纯血敞篷越野车国产福特烈马正式上市并公布全系厂商指导价,价格区间为29.98万元至43.88万元。作为一台风格鲜明,个性突出的纯血硬核越野车,诞生于1966年的福特烈马&a…...
嵌入式C语言中堆栈管理与数据存储的精髓
在嵌入式开发中,理解C语言的内存管理和数据存储机制是至关重要的。本文将从堆栈管理和数据存储两个方面,深入探讨C语言在嵌入式Linux开发中的应用。 一、堆栈管理 1.1 栈的初始化与作用 栈是C语言运行的基础,主要用于存储函数参数、局部变量、函数返回值和编译器生成的临时…...
003_快乐数
链接:202. 快乐数 - 力扣(LeetCode) 202.快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为…...
【MySQL数据库】约束
在MySQL数据库中,约束(Constraint)是用于限制表中数据的一种规则,目的是为了确保数据的完整性以及一致性。下面我们就从建表时的约束、建表后如何添加约束等几个方面,讲解MySQL中常用的几种约束。 创建时约束 分类 非空约束 非空…...
SANS 网络安全 网络安全三件套
基本设置篇 一、在线安全的四个误解 Internet实际上是个有来有往的世界,你可以很轻松地连接到你喜爱的站点,而其他人,例如黑客也很方便地连接到你的机器。实际上,很多机器都因为自己很糟糕的在线安全设置无意间在…...
LSTM方法实践——基于LSTM的汽车销量时序建模与预测分析
Hi,大家好,我是半亩花海。本实验基于汽车销量时序数据,使用LSTM网络(长短期记忆网络)构建时间序列预测模型。通过数据预处理、模型训练与评估等完整流程,验证LSTM在短期时序预测中的有效性。 目录 一、实验…...
[Windows] 轻量级景好鼠标录制器 v2.1 单文件版,支持轨迹+鼠标键盘录制复刻
[Windows] 轻量级景好鼠标录制器 链接:https://pan.xunlei.com/s/VOLHz0rPyqdhV4bgyTYuW6W7A1?pwd98uj# 软件特性: 高效播放控制:动作间隔优化至100 ms,进度条可视化,支持随机循环/多次播放。 深度自定义࿱…...
表单 schema 配置化
一、前沿 基于 Ant Design Vue 组件库实现了表单的配置化生成,通过 schema 配置化的方式实现表单的动态渲染、数据绑定和更新等功能,而提交按钮及获取数据逻辑由使用方自行提供。通过 schema 对象来定义表单的结构和属性,modelData 对象存储…...
LINUX --- KVM
什么是 KVM?– 基于内核的虚拟机简介 – AWS (amazon.com) 什么是 KVM? 基于内核的虚拟机(KVM)是一种软件功能,您可以将其安装在物理 Linux 机器上以创建虚拟机。虚拟机是一种软件应用程序,可作为另一台实…...
LabVIEW VI Scripting实现连接器窗格自动化
通过VI Scripting自动化配置连接器窗格,可大幅提升开发效率、统一接口规范,并适配动态需求。以下为真实场景中的典型应用案例,涵盖工业、汽车电子及教育领域,展示其实际价值与实施效果。 特点: 程序化配置:…...
网络安全信息收集[web子目录]:dirsearch子目录爆破全攻略以及爆破字典结合
目录 一、dirsearch 工具详细使用攻略 1. 安装 前提条件 安装步骤 可选:直接下载预编译版本 2. 基本用法 命令格式 参数说明 示例 3. 核心功能与高级用法 3.1 多线程加速 3.2 自定义字典 3.3 递归扫描 3.4 过滤响应 3.5 添加请求头 3.6 代理支持 3…...
【Msq8.0无需登陆进行重置密码】
【Msq8.0无需登陆进行重置密码】 Mysql的正常启动设置Msql的无密码登陆前操作 Mysql的正常启动 我使用的是Mac电脑,电脑上的Mysql8.0是处于运行状态,如果关闭状态也可以。 设置Msql的无密码登陆前操作 我们对Markdown编辑器进行了一些功能拓展与语法支…...
pandas表格内容比较
前阵子来了一个211大学实习生(小男生),要比较2个版本字段的变化,辅助完成系统升级字段替换,要求找出哪些字段是新增的,哪些字段是删除的,哪些字段是属性信息修改的,要求半天时间搞定…...
TMS320F28P550SJ9学习笔记13: 软件I2C_驱动AT24Cxx存储芯片
今日尝试配置软件I2C通信,我的目标通信芯片是AT24C64,相较于AT24C02这样的8位寻址,它是16位寻址的,所以有些不同 文章提供测试代码讲解、完整工程下载、测试效果图 目录 软件I2C引脚初始化: C内联函数改变SCL与SDA的输…...
Vuex 基础概念与环境搭建
Vuex 是实现数据集中式状态管理的插件。所有组件共享 Vuex 中的数据,当任意组件修改数据时,其他组件会同步更新。与全局事件总线的区别在于: 全局事件总线:数据传递但未真正共享Vuex:数据存储在中央仓库,实…...
手抖预防方法主要包括以下几个方面
手抖预防方法主要包括以下几个方面: 1. 心理调节:保持心情舒畅,避免过度紧张和焦虑。如有必要,可以寻求心理医生帮助进行心理调适。 2. 充分休息:保证充足的睡眠时间,避免熬夜和过度劳累。合理安排工作和…...
使用libwebsocket写一个server
lws-minimal-ws-server这些例程在buildroot里面,更新的话只能整体编译,十分麻烦和耗时,在sdk外面建立项目,单独开发,会更合适。 创建程序文件夹和文件 mkdir ./ws_cam cd ./ws_cam cp ../luckfox-pico/sysdrv/source…...
