ChatGLM-6B的安装和使用最全面细节讲解

2023-11-02

ChatGLM-6B是一个基于General Language Model (GLM)架构的开源对话语言模型,支持中英双语。该模型使用了和ChatGPT类似的技术进行优化,经过1T标识符的中英双语训练,同时辅以监督微调、反馈自助和人类反馈强化学习等技术,共有62亿参数。

ChatGLM-6B由清华大学 KEG 实验室和智谱AI共同开发,通过模型量化技术,用户可以在消费级显卡上进行本地部署(INT4量化级别下最低只需6GB显存)。

ChatGLM-6B可以简单的理解为本地私有部署的弱化版ChatGPT。

不过,由于 ChatGLM-6B 的规模较小,目前已知其具有相当多的局限性:

    1. 如事实性/数学逻辑错误,可能生成有害/有偏见内容,较弱的上下文能力,自我认知混乱,以及对英文指示生成与中文指示完全矛盾的内容。
    2. 产生有害说明或有偏见的内容:ChatGLM-6B 只是一个初步与人类意图对齐的语言模型,可能会生成有害、有偏见的内容。
    3. 英文能力不足:ChatGLM-6B 训练时使用的指示/回答大部分都是中文的,仅有极小一部分英文内容。因此,如果输入英文指示,回复的质量远不如中文,甚至与中文指示下的内容矛盾,并且出现中英夹杂的情况。
    4. 易被误导,对话能力较弱:ChatGLM-6B 对话能力还比较弱,而且 “自我认知” 存在问题,并很容易被误导并产生错误的言论。例如当前版本的模型在被误导的情况下,会在自我认知上发生偏差。

环境准备

硬件要求:

  • CPU:AMD 3600
  • 内存:DDR4 16GB
  • 显卡:RTX 3050(8GB)

软件要求:

  • 操作系统:Windows 10,也可以是其它操作系统
  • 安装Git工具
  • 安装Python,我的版本为3.11.3
  • 安装英伟达驱动程序

1、首先判断环境是否安装了python,如果没有,则在机器上安装python

Python学习笔记:Python 详细安装步骤图解

tips:如果安装完成后,在cmd中启动python时失败,而是打开微软商店,可以参考如下解决方案:

方案1:Python的环境变量置于 windowsApps之前

方案2:在系统软件搜索中,输入 “应用执行别名管理”,点击,然后关闭所有python相关程序

2、判断是否安装了 pip(python一般都自带 pip )

如果不是上图所示,则需要自己安装Pip:

一分钟学会Python中pip的安装与使用_pip安装_Python妙脆角的博客-CSDN博客

查看显存

到上一步基本环境已经安装完成。接下来需要判断训练模型是在GPU还是CPU上运行。

win+R 中输入 dxdiag 查看显存大小

量化等级

最低 GPU 显存(推理)

最低 GPU 显存(高效参数微调)

FP16(无量化)

13 GB

14 GB

INT8

8 GB

9 GB

INT4

6 GB

7 GB

如果你的显存大小<6G,那么你将无法使用GPU运行训练模型。这时候你就需要使用CPU(大概 32GB 内存)来进行运行。不过在CPU上运行的速度会大大降低,显存足够时,推荐在GPU上运行。

配置项目

1、从git仓库拉取项目代码

git@github.com:THUDM/ChatGLM-6B.git

2、下载依赖

pip install -r requirements.txt

tips:如果下载速率比较慢,可以更换为国内的下载源

清华:Simple Index

阿里云:Simple Index

豆瓣:Simple Index

山东理工大学:Loading...

中国科技大学 Simple Index

华中科技大学:http://pypi.hustunique.com/

// 通过清华源下载
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

下载CUDA(GPU运行)

NVIDIA显卡必须安装CUDA才能满足 CHATGML-6B训练模型的高性能运算需求。

1、先判断是否安装CUDA

nvcc -V

若显示CUDA相关版本信息,表明已经安装,则可跳过第2步。

2、安装CUDA

CUDA安装教程(超详细)_Billie使劲学的博客-CSDN博客

安装PyTorch

PyTorch是一个针对深度学习,并且使用GPU和CPU来优化的tensor library(张量库)

进入官网: PyTorch

选择GPU运行

需要选择上一步下载的CUDA对应的版本

选择CPU运行

复制Run tis Command 里面的代码,通过pip下载, 正常下载速度会比较慢,建议使用清华源进行下载比较快。

安装TDM-GCC(CPU运行)

如果需要在 cpu 上运行量化后的模型,还需要安装 gcc 与 openmp

TDM-GCC官网下载: Download | tdm-gcc

不要下载最新版本的,因为最新版本中没有集成openmp,点击TDM-GCC files 寻找历史版本,然后下载 tdm64-gcc-5.1.0-2.exe版本。

进行安装时,一定要勾选 gcc下的openmp,否则后续运行会报错。

手动下载训练模型(可选)

建议手动下载训练模型,因为文件体量比较大,如果网络不佳,自动下载的话很有可能会失败。

下载地址:THUDM/chatglm-6b at main

这里有两个可以选的下载版本 main 和 int4,对应不同的量化等级。

main: FP16(无量化) 和 INT8

int4: INT4

根据自己显存的大小进行下载所有文件。然后将文件放置到 “配置项目” 步骤下载的 CHATGLM-6B项目下。

启动CHATGLM-6B

1、命令启动

未手动下载训练模型

FP16(无量化)启动 GPU启动

python

from transformers import AutoTokenizer, AutoModel

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)

model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()

model = model.eval

response, history = model.chat(tokenizer, "你好", history=[])

print(response)

INT8 量化启动

// 这句代码后面添加 quantize(8)
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().quantize(8).cuda()

INT4 量化启动

// THUDM/chatglm-6b 修改为 THUDM/chatglm-6b-int4
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b-int4", trust_remote_code=True)

model = AutoModel.from_pretrained("THUDM/chatglm-6b-int4", trust_remote_code=True).half().cuda()

CPU启动

// 后面修改为float()
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).float()

手动下载了训练模型

python

from transformers import AutoTokenizer, AutoModel

tokenizer = AutoTokenizer.from_pretrained("D:\\work\\ChatGPTDemo\\ChatGLM6B\\chatglm6b", trust_remote_code=True)

model = AutoModel.from_pretrained("D:\\work\\ChatGPTDemo\\ChatGLM6B\\chatglm6b", trust_remote_code=True).half().cuda()

model = model.eval

response, history = model.chat(tokenizer, "你好", history=[])

print(response)

运行效果如下

2、脚本启动

按照需求对改文件修改,然后点击启动即可。

启动效果

tips:

如果出现报错

Torch not compiled with CUDA enabled

表示CUDA 和 Pytorch 对应版本不兼容,需要重新卸载后下载

如果运行 INT4 量化模型时出现错误

文件中的quantization_kernels.c和quantization_kernels_parallel.c这两个文件编译存在问题,需要手动编译

// 进入下载的 INT4量化模型文件夹下
cd D:\work\ChatGPTDemo\ChatGLM6B\chatglm4b

gcc -fPIC -pthread -fopenmp -std=c99 quantization_kernels.c -shared -o quantization_kernels.so

gcc -fPIC -pthread -fopenmp -std=c99 quantization_kernels_parallel.c -shared -o quantization_kernels_parallel.so

在启动前添加一句 手动加载文件

# 手动加载.so文件
model = model.quantize(bits=4, kernel_file="D:\\work\\ChatGPTDemo\\ChatGLM6B\\chatglm4b\\quantization_kernels.so")

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ChatGLM-6B的安装和使用最全面细节讲解 的相关文章

随机推荐

  • linux+查内存数量,检查 Linux 中内存使用情况的 8 条命令

    作为一名 Linux 管理员 知道如何获取当前可用的和已经使用的资源情况 比如内存 CPU 磁盘等 是相当重要的 Magesh Maruthamuthu Linux 并不像 Windows 你经常不会有图形界面可供使用 特别是在服务器环境中
  • 一文2500字使用Python进行GRPC和Dubbo协议的高级测试

    01 GRPC测试 GRPC Google Remote Procedure Call 是一种高性能 开源的远程过程调用 RPC 框架 由 Google开发并基于Protocol Buffers protobuf 进行通信 它使用了HTTP
  • vue 设置下拉框三级联动

    如图中 用vue实现三个选择框是联动关系 首先选择厂商 然后品牌下拉框中出现的品牌是所选厂商包含的品牌 同理 选择完品牌后 车型也是所选品牌中包含的车型 例如有这样的对应关系 厂商 品牌 车型 长城 哈弗 HB01 HB02 HB03 WE
  • 【CTF_流量日志分析】来看看这段日志_提取日志中base64部分解码

    1 打开日志文件url解码进行观察 很明显传输的一段base64编码 随意解码一条发现为 var dump ord file get contents maybeinthisfile php 55 90 即对任意几条进行base64解码发现
  • python 深浅拷贝 赋值

    本质上和语言无关 是三种复制对象的方式 数据在物理地址中的内容 这个物理地址需要用地址寻址 那么复制就有多种办法 例如使两个变量指向同一个地址 或是创建一份新的物理地址存储同样内容 深拷贝 对象的本质是 名称 地址 引用 编程时用名称代替
  • fmp4打包H265视频流

    1 fmp4打包H265视频流 文章目录 1 fmp4打包H265视频流 1 1 码流存储和传输格式介绍 1 1 1 Annex B封装格式 1 1 2 AVCC封装格式 1 1 2 HVCC封装格式 1 2 fmp4封装H265 1 2
  • python相对路径找不到文件_Python 解决相对路径问题:"No such file or directory"

    如果你取相对路径不是在主文件里 可能就会有相对路径问题 No such file or directory 因为 python 的相对路径 相对的都是主文件 如下目录结构 main py conf py start png config t
  • css实现文本超出容器部分显示省略号

    多行 overflow hidden display webkit box webkit line clamp 2 超出行数 webkit box orient vertical 单行 overflow hidden text overfl
  • 抖音壁纸小程序,星光壁纸小程序2.0版本,升级版

    抖音壁纸星光壁纸小程序2 0版本 升级版 引入超多功能 源码获取方式见抖音 星光壁纸 小程序 我的页面 抖音壁纸用户端 以下是创作者系统端
  • excel_IF函数

    IF AND H4 XXXX H5 XXXX H6 XXXXX 1 0 如果满足H4并且满足H5 H6 就为1 否则为0
  • 图遍历

    第七章 图 7 14 Status Build AdjList ALGraph G 输入有向图的顶点数 边数 顶点信息和边的信息建立邻接表 InitALGraph G scanf d v if v lt 0 return ERROR 顶点数
  • 产生死锁的四个必要条件

    1 互斥条件 一个资源每次只能被一个进程使用 2 请求与保持条件 一个进程因请求资源而阻塞时 对已获得资源保持不放 3 不剥夺条件 进程已获得的资源 在未使用完之前 不能强行剥夺 4 循环等待条件 若干进程之间形成一种头尾相接的循环等待资源
  • [Linux用户空间编程-5]:用IPTable实现NAT功能

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 123427800 目录 前言 第1章
  • 5个高清视频素材网站,免费商用,建议收藏~

    1 Mixkit https mixkit co 站内有非常多的高清视频素材 音频素材 视频全部都分类好了 像自然 航拍 科技 人物等等这里都能找到 还有很多视频模板 达芬奇模板全部都是免费 可商用 但每天有限制下载次数 素材的授权方式也不
  • 2022春招前端最新面试题分享(诺亚财富)

    诺亚财富面经 公司及岗位信息 公司 诺亚财富 岗位 前端开发工程师 地点 上海 薪资 10k 15k 14薪 面试结果 三轮技术面全部通过 约了HR面了 一面 2022 04 21 自我介绍 为什么不在实习公司转正 JS常见数据类型 基本类
  • windows Ubuntu loongnix 网络通信

    当我们进行Linux应用开发时 我们面临的首要问题便是如何让windows ubuntu和开发板三者完成通信 以便于代码文件的传输 1 windows和ubuntu 的通信 首先我们在建立ubuntu虚拟机时将其网络适配器模式配置为NAT
  • To create POPUP menu

    To create popupmenu Create new menu as follows Select popup opion Click on define transfer Assign any menu component pag
  • 飞猪单品详情采集

    api detail f ret SUCCESS 调用成功 v 1 0 data sold data sold 月销 5647 笔 soldCount 5647 tag sold pageContainer children detailC
  • python(chapter02)

    字符串 字符串 pystr python iscool is cool print pystr 0 使用切片法来进行字符串的切割 索引是2 到 5 的字符串 print pystr 2 5 索引是0到2的 print iscool 2 索引
  • ChatGLM-6B的安装和使用最全面细节讲解

    ChatGLM 6B是一个基于General Language Model GLM 架构的开源对话语言模型 支持中英双语 该模型使用了和ChatGPT类似的技术进行优化 经过1T标识符的中英双语训练 同时辅以监督微调 反馈自助和人类反馈强化