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

MiniCPM3-4B | 笔记本电脑运行端侧大模型OpenBMB/MiniCPM3-4B-GPTQ-Int4量化版 | PyCharm环境

MiniCPM3-4B,轻松在笔记本电脑上运行大模型?

    • 背景
    • 一、选择模型
    • 二、模型下载
    • 三、模型运行
    • 四、总结

背景

2024年9月5日,面壁智能发布了MiniCPM3-4B,面壁的测试结果声称MiniCPM3-4B表现超越 Phi-3.5-mini-instruct 和 GPT-3.5-Turbo-0125,并且能够比肩 Llama3.1-8B-Instruct、Qwen2-7B-Instruct、GLM-4-9B-Chat 等多个 7B-9B 参数量的模型。

实践出真知,博主觉得用自己的老手提笔记本试试,看能不能也跑个大模型装一下逼。

一、选择模型

官网提供了几种下载模型的方式,经过测试还是使用ModelScope下载比较稳定,同时考虑到笔记本比较老还是下载一个小一个的,不然等下跑挂了就麻烦了。这里我们下载MiniCPM3-4B的GPTQ-Int4量化版本MiniCPM3-4B-GPTQ-Int4

在这里插入图片描述

下载地址如下:
MiniCPM3-4B的GPTQ-Int4量化版本MiniCPM3-4B-GPTQ-Int4下载链接

二、模型下载

找到合适的模型后,我们就可以开始下载模型文件了。首先打开上面提到的网页链接,并依次点击-【模型文件】-【下载模型】,如下图所示:

在这里插入图片描述

在网页右侧弹出的下载页面中网站提供了多种形式的下载方式,博主选择使用SDK下载,下载模型比较方便,直接把代码拷贝在PyCharm里运行,程序就会自动开始下载模型。
在这里插入图片描述
我们需要先在PyCharm中新建一个python项目,并运行以下代码:

#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('OpenBMB/MiniCPM3-4B-GPTQ-Int4')

然后等待模型下载完毕,模型大约需要2G多磁盘空间,如下图:

在这里插入图片描述

博主运行完程序后一度找不到模型文件,经过上网查阅资料,发现modelscope的下载代码,会默认把模型下载到这个系统文件地址C:\Users\Administrator\.cache\modelscope\hub,下载完毕后可以进入这个文件地址检查一下是否下载成功。如下图所示:

在这里插入图片描述
接着,我们需要把OpenBMB整个文件夹拷贝到PyCharm新建的项目根目录下,如下图所示。

在这里插入图片描述

三、模型运行

模型完成下载,并将模型文件拷贝到程序运行目录后,就可以直接开始模型的运行测试了,只需把以下代码拷贝到PyCharm运行即可。

from modelscope import AutoModelForCausalLM, AutoTokenizer
import torchpath = "OpenBMB/MiniCPM3-4B-GPTQ-Int4"
device = "cuda"tokenizer = AutoTokenizer.from_pretrained(path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(path, torch_dtype=torch.float16, device_map=device, trust_remote_code=True)messages = [{"role": "user", "content": "推荐5个北京的景点。"},
]
model_inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True).to(device)model_outputs = model.generate(model_inputs,max_new_tokens=256,top_p=0.7,[temperature=0.7](https://blog.csdn.net/OkGogooXSailboat/article/details/137627530)
)output_token_ids = [model_outputs[i][len(model_inputs[i]):] for i in range(len(model_inputs))
]responses = tokenizer.batch_decode(output_token_ids, skip_special_tokens=True)[0]
print(responses)

如果运行的过程中出现找不到某个包,就用pip进行安装,如果提示GPU相关的问题则需要进一步检查。这里简单讲一下博主遇到的GPU问题。主要是不能直接安装默认的torch,需要通过特定地址安装笔记本GPU驱动对应版本的torch。

下图是通过特定地址安装对应CUDA版本,cu118,torth包的截图。
在这里插入图片描述
具体解决方案可以参考以下文章。
Torch not compiled with CUDA enabled问题解决过程记录

解决完各种报错后,只需要耐心等待程序执行结果即可,博主的笔记本电脑经过约3-5分钟后得出了以下结果,总算是跑通了第一个本地端侧大模型了。
在这里插入图片描述

四、总结

随着大模型的运行和推理条件越来越低,端侧大模型的应用和推广应该会非常迅速,因为端侧有大量的应用场景,特别是对数据安全要求较高的单位,同时部署端侧大模型的技术要求越来越低,工具越发齐全,博主完全是一个小白,紧紧翻阅网上资料,不到半天就调通了,可见未来工具链再升级后,端侧应该很快就会实现自动下载、更新、微调等更便于模型实用化推广的技术,加快移动终端设备端侧大模型普及。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 分库分表-分页排序查询
  • Android开发高频面试题之——Android篇
  • 0-Mapbox简介及产品类型
  • Springboot Mybatis条件查询
  • 计算机网络 --- Socket 编程
  • 24.9.23学习笔记
  • 打造以太坊数据监控利器:InfluxDB与Grafana构建Geth可视化分析平台
  • 设计模式之中介者
  • pyqt QGraphicsView 以鼠标为中心进行缩放
  • LTE协议栈学习
  • [创业之路-151] :职能部门/非经营部门 VS 业务部门/经营部门划分与职责
  • 为什么推荐使用英文版LabVIEW
  • 论文阅读:Omni-Kernel Network for Image Restoration
  • ESP32运行轻量级 Web 服务器入门(基于ESP-IDF)
  • 【天怡AI-注册安全分析报告-无验证方式导致安全隐患】
  • 4. 路由到控制器 - Laravel从零开始教程
  • JavaScript HTML DOM
  • Javascript设计模式学习之Observer(观察者)模式
  • leetcode-27. Remove Element
  • mysql 数据库四种事务隔离级别
  • Octave 入门
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • React+TypeScript入门
  • Spring核心 Bean的高级装配
  • 关于字符编码你应该知道的事情
  • 基于axios的vue插件,让http请求更简单
  • 基于遗传算法的优化问题求解
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 说说动画卡顿的解决方案
  • 《码出高效》学习笔记与书中错误记录
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​VRRP 虚拟路由冗余协议(华为)
  • #职场发展#其他
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (11)MSP430F5529 定时器B
  • (14)Hive调优——合并小文件
  • (4)logging(日志模块)
  • (ros//EnvironmentVariables)ros环境变量
  • (ZT)薛涌:谈贫说富
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (计算机网络)物理层
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (六)c52学习之旅-独立按键
  • (转)linux下的时间函数使用
  • .gitignore文件_Git:.gitignore
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET 项目中发送电子邮件异步处理和错误机制的解决方案
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET_WebForm_layui控件使用及与webform联合使用
  • .pyc文件是什么?
  • @Autowired @Resource @Qualifier的区别
  • @test注解_Spring 自定义注解你了解过吗?