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

目录

一、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.hqwc.cn/news/518847.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024电商新手怎么入行?哪个平台适合自己?

我是电商珠珠 2024年了&#xff0c;电商行业的热度也不断高涨。过年期间&#xff0c;京东在春晚投放了华为大礼包&#xff1b;淘宝也紧跟春晚步伐上架明星同款穿搭&#xff1b;抖音和央视春晚达成合作&#xff0c;在平台内直播&#xff0c;还送相应的福袋&#xff0c;和春晚独…

判断连续数据同意特征的方法:插旗法

bool isMonotonic(int* nums, int numsSize) {int flag 2;for (int i 1; i < numsSize; i) {if (nums[i-1] > nums[i]) {if (flag 0)return false;flag 1;}else if (nums[i-1] < nums[i]) {if (flag 1)return false;flag 0;}}return true; }此代码较为简单&…

剑指offer--c++--n个骰子的点数

目录 题目&#xff1a; 题目分析&#xff1a; 最后编写代码&#xff1a; 输出结果 题目&#xff1a; 把n个骰子扔在地上&#xff0c;所有骰子朝上一面的点数之和为s。输入n&#xff0c;打印出s的所有可能的值出现的概率。 感谢大佬的帮助&#xff1a;https://www.cnblogs.c…

Deeplearning4j【基础 01】初识Java深度学习框架DL4J

初识Java深度学习框架DL4J 1.起因2.简介3.组件3.1 Deeplearning4j/ScalNet3.1.1 Deeplearning4jf&#xff08;Java&#xff09;3.1.2 ScalNet&#xff08;Scala&#xff09; 3.2 ND4J/LibND4J3.3 SameDiff3.4 DataVec3.5 Arbiter3.6 RL4J 4.总结 内容来自网络&#xff0c;基于官…

7.1 支付模块 - 用户选课

支付模块 - 需求分析、添加选课 文章目录 支付模块 - 需求分析、添加选课一、需求分析1.1 选课业务流程1.2 支付业务流程1.3 在线学习业务流程1.4 课程续期业务流程 二、添加选课2.1 执行流程2.2 数据模型2.2.1 选课记录表 choose_course2.2.2 用户课程表 course_tables 2.3 查…

R语言lavaan结构方程模型在复杂网络分析中的科研技术新趋势

此外&#xff0c;我们还将深入探讨R语言的基础知识、结构方程模型的基本原理、lavaan程序包的使用方法等内容。无论是潜变量分析、复合变量分析&#xff0c;还是非线性/非正态/缺失数据处理、分类变量分析、分组数据处理等复杂问题&#xff0c;我们都将一一为您解析。 希望通过…

线程安全之死锁

目录 一、概念 二、例子 三、死锁相关面试题目 一、概念 死锁主要发生在有多个依赖锁存在时,会在一个线程试图以另一个线程相反顺序锁住互斥量时发生 死锁使得一个或多个线程被挂起而无法继续执行,最糟糕的是,这种情况还不容易被发现。 在一个线程中对一个已经加锁的普通锁…

springboot-整合mybatis

1.导入依赖 <!--整合mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency><!--mysql--><dependen…

为什么不从独立服务器中转向云或其他方案呢?

传统的专用服务器&#xff0c;如香港服务器租赁、重庆服务器租赁等&#xff0c;是最强大、最稳定的业务托管类型之一。您将获得比任何其他托管计划更多的管理权限和卓越的性能&#xff0c;并且您可以控制整个服务器上的几乎所有内容。 当然&#xff0c;专用服务器也是在线业务…

多线程:线程池

线程池 认识线程池 什么是线程池 线程池就是一个可以复用线程的技术。 不使用线程池的问题 用户每发起一个请求&#xff0c;后台就需要创建一个新线程来处理&#xff0c;下次新任务来了肯定又要创建新线程处理的&#xff0c;而创建新线程的开销是很大的&#xff0c;并且请…

蜻蜓FM语音下载(mediadown)

一、介绍 蜻蜓FM语音下载&#xff08;mediadown&#xff09;&#xff0c;能够帮助你下载蜻蜓FM音频节目。如果你是蜻蜓FM会员&#xff0c;它还能帮你下载会员节目。 二、下载地址 本站下载&#xff1a;蜻蜓FM语音下载&#xff08;mediadown&#xff09; 百度网盘下载&#…

爬虫入门到精通_框架篇15(Scrapy框架安装)

1 Scrapy安装 Scrapy的安装有多种方式&#xff0c;它支持Python2.7版本及以上或Python3.3版本及以上。下面说明Python3环境下的安装。 Scrapy依赖的库比较多&#xff0c;至少需要依赖库有Twisted14.0,lxml 3.4,pyOpenSSL 0.14。而在不同平台环境又各不相同&#xff0c;所以在安…