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

本文主要是介绍Windows环境下搭建chatGLM2-6B-int4量化版模型(图文详解-成果案例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、ChatGLM2-6介绍

二、环境准备

1. 硬件环境

2. TDM-GCC安装

3.git安装

4.Anaconda安装

三、模型安装

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

方式一:git命令

方式二:手动下载 

2.下载预训练模型

在Hugging Face HUb下载(挂VPN访问)

(1)git命令行下载:

(2)手动下载(建议)

3.模型使用(CPU)

1.命令行版:cli_demo.py

2.Web版本:(web_demo.py)

 3.API版本:api.py

四、遇到的问题


一、ChatGLM2-6介绍

ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性:

  1. 更强大的性能:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,评测结果显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。
  2. 更长的上下文:基于 FlashAttention 技术,我们将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练。对于更长的上下文,我们发布了 ChatGLM2-6B-32K 模型。LongBench 的测评结果表明,在等量级的开源模型中,ChatGLM2-6B-32K 有着较为明显的竞争优势。
  3. 更高效的推理:基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。
  4. 更开放的协议:ChatGLM2-6B 权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用

二、环境准备

1. 硬件环境

如果需要在 cpu 上运行量化后的模型(ChatGLM2-6B-int4),还需要安装 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.下载ChatGLM2-6b和环境准备

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

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

transformers 库版本推荐为 4.30.2torch 推荐使用 2.0 及以上的版本,以获得最佳的推理性能

方式一:git命令

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

git clone https://github.com/THUDM/ChatGLM2-6B

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

cd ChatGLM2-6B

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

conda create -n chatglm2-6b python=3.8

(4)激活环境

conda activate chatglm2-6b

(5)下载依赖包

pip install -r requirements.txt

方式二:手动下载 

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

解压到你自己的目录

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

cd ChatGLM2-6B

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

conda create -n chatglm2-6b python=3.8

(4)激活环境

conda activate chatglm2-6b

(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 installgit clone https://huggingface.co/THUDM/chatglm2-6b
(2)手动下载(建议)

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

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

3.模型使用(CPU)

CPU模式:量化版,经测试就速度比较慢。

model = AutoModel.from_pretrained("THUDM/chatglm2-6b-int4",trust_remote_code=True).float()

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

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

1.命令行版:cli_demo.py

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

(2)启动命令行demo

python cli_demo.py

效果如下:

2.Web版本:(web_demo.py

(1)修改web_demo.py的代码

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

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

python web_demo.py

效果如下:

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

streamlit run web_demo2.py

 3.API版本:api.py

实现了 OpenAI 格式的流式 API 部署,可以作为任意基于 ChatGPT 的应用的后端,比如 ChatGPT-Next-Web。可以通过运行仓库中的openai_api.py 进行部署

(1)安装额外的依赖

pip install fastapi uvicorn

(2)修改api.py的代码

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

(3)启动API模型 

python openai_api.py

四、遇到的问题

1.在启动cli_demo.py的时报错:No module named 'readline'

解决方法:下载pyreadline3

    pip: pip install pyreadline3 or python -m pip install pyreadline
    mamba: mamba install -c conda-forge pyreadline3
    conda: conda install -c conda-forge pyreadline3

作者采用的是pip install pyreadline3,下载完成之后,重新运行python cli_demo.py即可。

2.在启动web_demo.py时,报错:

Traceback (most recent call last):
  File "web_demo.py", line 91, in <module>
    user_input = gr.Textbox(show_label=False, placeholder="Input...", lines=10).style(
AttributeError: 'Textbox' object has no attribute 'style'

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

卸载gradio

pip uninstall gradio

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

3.问题报错:FileNotFoundError: Could not find module 'C:\Users\EDY\.cache\huggingface\modules\transformers_modules\model\quantization_kernels_parallel.so' (or one of its dependencies). Try using the full path with constructor syntax.

解决方法:不影响程序运行。

这篇关于Windows环境下搭建chatGLM2-6B-int4量化版模型(图文详解-成果案例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/789486

相关文章

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java中StopWatch的使用示例详解

《Java中StopWatch的使用示例详解》stopWatch是org.springframework.util包下的一个工具类,使用它可直观的输出代码执行耗时,以及执行时间百分比,这篇文章主要介绍... 目录stopWatch 是org.springframework.util 包下的一个工具类,使用它