Windows环境下搭建chatGLM-6B-int4量化版模型(图文详解-成果案例)

news2025/1/10 16:51:55

目录

一、ChatGLM-6B介绍

二、环境准备

1. 硬件环境

2. TDM-GCC安装

3.git安装

4.Anaconda安装

三、模型安装

1.下载ChatGLM-6b和环境准备

方式一:git命令

方式二:手动下载

2.下载预训练模型

方式一:在Hugging Face HUb下载(挂VPN访问,建议)

(1)git命令行下载:

 (2)手动下载

方式二:在魔塔社区下载(亲测速度快,不建议)

git命令行下载

 3.模型使用

1.命令行版:cli_demo.py

2.Web版本:(web_demo.py)

 3.API版本:api.py

四、遇到的问题

五、成果展示


一、ChatGLM-6B介绍

ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的对话预训练模型。ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答,更多信息请参考我们的博客。欢迎通过 chatglm.cn 体验更大规模的 ChatGLM 模型。

为了方便下游开发者针对自己的应用场景定制模型,同时实现了基于 P-Tuning v2 的高效参数微调方法 (使用指南) ,INT4 量化级别下最低只需 7GB 显存即可启动微调。

二、环境准备

1. 硬件环境

如果需要在 cpu 上运行量化后的模型,还需要安装 gcc 与 openmp。多数 Linux 发行版默认已安装。对于 Windows ,可在安装 TDM-GCC 时勾选 openmp。 Windows 测试环境 gcc 版本为 TDM-GCC 10.3.0, Linux 为 gcc 11.3.0。 

2. TDM-GCC安装

参考博客:Windows安装tdm-gcc并勾选openMP(详细图文)-CSDN博客

3.git安装

百度安装

4.Anaconda安装

超详细Anaconda安装教程-CSDN博客

三、模型安装

1.下载ChatGLM-6b和环境准备

下载地址:https://github.com/THUDM/chatglm-6B

从 Github 下载 ChatGLM-6B 仓库,然后进入仓库目录使用 pip 安装依赖,

其中 transformers 库版本推荐为 4.27.1,但理论上不低于 4.23.1 即可。

方式一:git命令

(1)在D盘打开命令提示窗口,默认下载到当前目录

git clone https://github.com/THUDM/ChatGLM3

(2)切换到chatGLM3目录

cd ChatGLM3

(3)创建conda的虚拟环境,指定Python的版本

conda create -n torch python=3.10

(4)激活环境

conda activate torch

(5)下载依赖包

pip install -r requirements.txt

方式二:手动下载

(1)在github地址:https://github.com/THUDM/chatglm-6B

 解压到你自己的目录

(2)切换到ChatGLM-6B目录

cd ChatGLM-6B

(3)创建conda的虚拟环境,指定Python的版本

conda create -n torch python=3.10

(4)激活环境

conda activate torch

(5)下载依赖包

pip install -r requirements.txt

2.下载预训练模型

方式一:在Hugging Face HUb下载(挂VPN访问,建议)
(1)git命令行下载:

从 Hugging Face Hub 下载模型需要先安装Git LFS ,若安装了Git LFS可在windows命令提示符中运行如下命令检查版本 git lfs --version

若存在Git LFS,则运行:

git lfs install 
git clone https://huggingface.co/THUDM/chatglm-6b
 (2)手动下载

访问地址:https://huggingface.co/THUDM/chatglm-6b-int4/tree/main

把下图中所有的文件下载之后,放在ChatGLM-6B的新建的model目录下。

方式二:在魔塔社区下载(亲测速度快,不建议)

注意:亲测不建议使用,因为它的目录文件不能及时和Hugging Face上的目录文件一致,会出现各种报错,因此后续作者在遇到问题的时候更换了下载方式。

git命令行下载

访问地址:魔搭社区

运行命令:

git clone https://www.modelscope.cn/ZhipuAI/chatglm-6b-int4.git

下载截图如下:

 3.模型使用

ChatGLM-6B 提供了三种使用方式:命令行 Demo,网页版 Demo 和 API 部署;在启动模型之前,需要找到对应启动方式的 python 源码文件,命令行模式(cli_demo.py),网页版(web_demo.py),API部署(api.py) 中修改代码。

ChatGLM-6B目录用到的文件:

1.命令行版:cli_demo.py

(1)修改cli_demo.py的代码,根据自己目录结构修改。

(2)运行

python cli_demo.py

注意:如果你没有 GPU 硬件的话,也可以在 CPU 上进行推理,但是推理速度会更慢。改加载模型为CPU部署,如果你的内存不足,可以直接加载量化后的模型:

# INT8 量化的模型将"THUDM/chatglm-6b-int4"改为"THUDM/chatglm-6b-int8"
model = AutoModel.from_pretrained("THUDM/chatglm-6b-int4",trust_remote_code=True).float()
2.Web版本:(web_demo.py

(1)安装 Gradio:

pip install gradio

(2)修改web_demo.py的代码

根据自己的训练模型位置更改代码。

(3)启动基于 Gradio 的网页版 demo

python web_demo.py

说明:程序会运行一个 Web Server,并输出地址。在浏览器中打开输出的地址即可使用。最新版 Demo 实现了打字机效果,速度体验大大提升。注意,由于国内 Gradio 的网络访问较为缓慢,启用 demo.queue().launch(share=True, inbrowser=True) 时所有网络会经过 Gradio 服务器转发,导致打字机体验大幅下降,现在默认启动方式已经改为 share=False,如有需要公网访问的需求,可以重新修改为 share=True 启动。

 3.API版本:api.py

开源模型 API 部署代码,可以作为任意基于 ChatGPT 的应用的后端。 目前,可以通过运行仓库中的 api_server.py 进行部署.

(1)安装额外的依赖 

pip install fastapi uvicorn

(2)修改api.py的代码

根据自己的训练模型位置更改代码

(3)启动API模型

python api.py

四、遇到的问题

问题一:在启动cli_demo的时候报错 No module named 'readline'

解决方法:下载pyreadline3

  1. pip: pip install pyreadline3 or python -m pip install pyreadline
  2. mamba: mamba install -c conda-forge pyreadline3
  3. conda: conda install -c conda-forge pyreadline3

作者采用的是pip install pyreadline3

问题二:

 not found in your environment: configuration_chatglm. Run `pip install configuration_chatglm`

 解决方法:重新下载预训练模型,不通过命令从modelScope下载,直接到hugging face找到对应chatglm-6b-int4手动下载全部文件。手动下载之后放到新建的model。之后记得修改web_demo.py、api.py、cli_demo.py对应的它们代码如图所示:

 后续在运行各个web_demo.、api.py、cli_demo.py,虽然有报错但是不影响运行。

问题三:FileNotFoundError: Could not find module 'nvcuda.dll' (or one of its dependencies). Try using the full path with constructor syntax.

解决方法:目前不影响程序正常运行,网上的方式:在下载好的chatglm-6B-int4中找到quantization.py,修改如下:

仍然报错:

Message: 'Failed to load cpm_kernels:'

Arguments: (NameError("name 'CPUKernel' is not defined"),)

 也不影响程序继续运行。

问题四:

FileNotFoundError: Could not find module 'C:\...\model\quantization_kernels_parallel.so' (or one of its dependencies). Try using the full path with constructor syntax.

解决方法:无影响可以运行 。

问题五:在运行web_demo.py的时候报错如下:

Traceback (most recent call last):
  File "D:\ChatGLM-6B\web_demo.py", line 85, in <module>
    user_input = gr.Textbox(show_label=False, placeholder="Input...", lines=10).style(
AttributeError: 'Textbox' object has no attribute 'style'. Did you mean: 'scale'?

解决方法:pip默认安装最新版本,降低版本即可。

卸载gradio

pip uninstall gradio

安装指定版本
pip install gradio==3.50.0

五、成果展示

1.命令行版:cli_demo.py

亲测:回复时间比较久,可能是与电脑的CPU硬件环境有关。

2.Web版:web_demo.py

3.API版:api.py

到此,部署ChatGLM-6B-int4结束。

参考:本地部署清华大模型 ChatGLM3-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1499354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32day2

1.思维导图 个人暂时的学后感&#xff0c;不一定对&#xff0c;没什么东西&#xff0c;为做项目奔波中。。。1.使用ADC采样光敏电阻数值&#xff0c;如何根据这个数值调节LED灯亮度。 while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */adc_val HAL_ADC_GetValue(&a…

中华环保联合会-- 工业废水处理设施等运维服务认证介绍

为适应市场发展需要,规范环境服务业市场&#xff0c;中华环保联合会[中环联兴(北京)认证中心]于2023年8月经国家认证认可监督管理委员会正式批准增加“工业废水处理、城镇污水处理、农村污水处理设施运维服务认证”等认证领域&#xff0c;并完善环保领域服务认证体系。 一、认…

【PowerMockito:编写单元测试过程中原方法使用@Value注解注入的属性出现空指针】

错误场景 执行到Value的属性时会出现空指针&#xff0c;因为Value的属性为null 解决方法 在测试类调用被测试方法前&#xff0c;提前设置属性值&#xff0c;属性可以先自己定义好 ReflectionTestUtils.setField(endpointConnectionService, "exportUdpList", lis…

飞行汽车首飞成功?一文讲解飞行汽车与其代表的立体交通形式

中国的“飞行汽车”从深圳跨越大湾区到珠海首飞成功&#xff0c;既是一次重要尝试&#xff0c;更是交通运输行业发展史中一个全新的起点 关注我&#xff0c;共同交流&#xff0c;一起成长 前言一、基本认识飞行汽车二、发展飞行汽车必要性三、飞行汽车所形成的影响 前言 2月27…

kmc密钥管理的基本功能是什么

KMC(密钥管理中心)在公钥基础设施中占据着举足轻重的地位&#xff0c;它是专门负责为CA(证书授权)系统提供一系列密钥服务的核心组件。这些服务包括但不限于密钥的生成、保存、备份、更新、恢复以及查询等&#xff0c;旨在解决分布式企业应用环境中大规模密码技术应用所带来的密…

44.网络编程/静态库动态库相关知识20240307

一、基于UDP的网络聊天室 项目需求&#xff1a; 如果有用户登录&#xff0c;其他用户可以收到这个人的登录信息如果有人发送信息&#xff0c;其他用户可以收到这个人的群聊信息如果有人下线&#xff0c;其他用户可以收到这个人的下线信息服务器可以发送系统信息。 服务器代码…

CAN总线及通讯的工作原理

一、CAN总线 CAN是控制器局域网络(Controller Area Network)的简称&#xff0c; 它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的&#xff0c; 并最终成为国际标准&#xff08;ISO11519&#xff09;&#xff0c;是国际上应用最广泛的现场总线之一。 二、工作原理 …

智引未来:2024年科技革新引领工业界变革与机遇

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Sora的“双刃剑”效应:视频生成的革命与就业的反思

在科技的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;如日中天&#xff0c;为众多领域带来了翻天覆地的变革。其中&#xff0c;Sora作为一款基于AI的视频生成工具&#xff0c;凭借其高度逼真的生成能力&#xff0c;引发了社会对…

微信小程序中使用特殊字体

1、首先下载字体文件 推荐几个常用下载字体的网站 https://font.chinaz.com/zhongwenziti.html https://www.hellofont.cn/ 2、转换字体 使用下面这个网站进行字体转换 https://transfonter.org/ 点击add fonts 按钮进行上传刚刚下载的字体文件选择formats格式&#xff1a;可…

VUE_自适应布局-postcss-pxtorem,nuxt页面自适配

postcss-pxtorem是一个PostCSS插件&#xff0c;用于将CSS中的像素值转换为rem单位&#xff0c;以实现响应式布局和适配不同屏幕尺寸的需求。 它的适配原理是将CSS中的像素值除以一个基准值&#xff0c;通常是设计稿的宽度&#xff0c;然后将结果转换为rem单位。这样&#xff0…

如何保证对外接口的安全?

文章目录 前言一、生成及校验Token1.1 生成Token1.2 校验Token1.3 SignUtil 签名工具类 前言 1.什么是安全接口&#xff1f; 通常来说要将暴露在外网的 API 接口视为安全接口&#xff0c;需要实现防篡改和防重放的功能。 1.1 什么是篡改问题&#xff1f; 由于 HTTP 是一种无状…

ThreadLocal :在 Java中隱匿的魔法之力

优质博文&#xff1a;IT-BLOG-CN ThreadLocal 并不是一个Thread&#xff0c;而是 ThreadLocalVariable(线程局部变量)。也许把它命名为 ThreadLocalVar更加合适。线程局部变量就是为每一个使用该变量的线程都提供一个变量值的副本&#xff0c;是 Java中一种较为特殊的线程绑定机…

重建大师在建模过程中,显示中间部分有两个分块建模失败,勾选增强模式重新提交后仍然失败,遇见这种情况该怎么解决?

可以看下失败提示&#xff0c;是不是瓦块太大&#xff0c;显存溢出&#xff1b; 或进行另一种方式&#xff0c;新建一个reconstruction&#xff0c;重新提交这两块尝试一下。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件&#xff0c;输入倾斜照片&a…

不买后悔!腾讯云99元一年服务器链接,折合8元1个月

腾讯云服务器99元一年是真的吗&#xff1f;真的&#xff0c;99元优惠购买入口 txybk.com/go/99 折合每天8元1个月&#xff0c;腾讯云99元服务器配置为2核2G3M带宽&#xff0c;2024年99元服务器配置最新报价为61元一年&#xff0c;如下图&#xff1a; 腾讯云服务器99元一年 腾讯…

智慧灯杆-智慧城市照明现状分析(1)

城市道路照明是城市公共设施的重要组成部分,而随着城镇化建设的推进,城市道路照明路灯的数量越来越多,能耗越来越高,供电趋于紧张。此外,城市照明的维护工作和高昂的维护成本(人工控制、路灯巡查等),给城市管理造成了巨大的困难。管理部门需要更有效率的管理和节能方案…

3.7 FreeRTOS day2

思维导图&#xff1a; 1.使用ADC采样光敏电阻数值&#xff0c;如何根据这个数值调节LED灯亮度。 配置ADC以读取光敏电阻的电压值&#xff0c;配置PWM以控制LED的亮度。使用ADC读取光敏电阻的电压值。这个值将随着环境光线的变化而变化。将ADC读取的原始值映射到一个更易于处理…

基于pytest的证券清算系统功能测试工具开发

需求 1.造测试数据&#xff1a;根据测试需要&#xff0c;自动化构造各业务场景的中登清算数据与清算所需起来数据 2.测试清算系统功能&#xff1a; 自动化测试方案 工具设计 工具框架图 工具流程图 实现技术 python, pytest, allure, 多进程&#xff0c;mysql, 前端 效果 测…

Git误操作补救错失:恢复误删的本地分支、将某个提交从一个分支复制到另一个分支

一、恢复误删的本地分支 作为一枚强迫症&#xff0c;没用的分支总是喜欢及时删删删删掉删掉统统删掉&#xff0c;结果今天发现有些分支还是应该保留。 比如&#xff0c;①前段时间切了个分支用来专门做图表&#xff0c;但因为需求还没有最终确定&#xff0c;已经上线了测试服而…

异地组网需要几个固定IP?

异地组网指的是在不同地区的终端设备之间建立起稳定的网络连接&#xff0c;以实现信息的远程传输和通信。在进行异地组网时&#xff0c;需要固定IP地址来确保网络连接的稳定性和可靠性。本文将介绍异地组网的基本概念和必要性&#xff0c;并探讨在这一过程中需要使用的固定IP的…