一直都想研究玩玩这块,迫于财力有限,今天终于能完整的本地复现这些功能。后续考虑购入四张P40 24G显卡放到服务器,并开放api给大家使用。

本质上这些大语言模型都是大差不差的,本文就以ChatGLM2-6B为例给大家做演示。

简介

ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,相较于第一代,提升流畅性,门槛较低的同时又增加了许多新特性。
项目地址: Github - ChatGLM2-6B

环境配置要求

系统环境

为了快速上手,避免一些问题,本文使用Windows Server 2022纯净系统进行搭建。

推荐使用纯净的系统进行测试。

配置要求

以下是我的配置,括号中表示最低配置

系统:Windows Server 2022(家用Win系统也可以)
CPU:Intel Xeon Platinum 8255C(Intel/AMD 均可,64位,8核心以上最好,不怎么吃CPU)
内存:32G (越大越好,最低16G)
显卡:Nvidia Tesla T4 16G(计算卡一张,内存不低于16g最佳越大越好,最低P4 8G,推荐:P40 24G|T4 16G|A10 24G)

Python环境安装

安装Anaconda

Anaconda介绍及安装Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包。Anaconda包括Conda、Python以及一大堆安装好的工具...

下载地址:Anaconda Download
Anaconda Download
点击Download选择Windows 64bit版本进行下载。

下载完成后,运行安装程序。在安装界面中,选择 All Users 为当前计算机所有用户安装 Anaconda。接下来,选择安装路径,建议使用默认路径。
截屏2023-10-19 15.24.55.png
安装过程可能较慢,耐心等待安装完成即可。

安装完成后,打开Conda命令行,输入 conda --version 检查 Anaconda 是否安装成功。
检查 Anaconda安装状态

NVIDIA配置流程

驱动安装

已经安装驱动的可以跳过此步。避免浪费时间。

驱动下载地址:驱动下载 Download
截屏2023-10-19 15.34.11.png
根据显卡型号 获取驱动程序,进行下载安装。
一路yes/ok/继续/安装,没什么好讲的

设置显卡开发者模式

这个也没什么好讲的,就按照图中显示配置即可。
开启开发者模式
记录版本号,以便用于下载Cuda
12.2.138
这里我的是12.2.138

安装 Cuda

上一步获取到的版本号:12.2.138 后面的数字不需要管,只需要记住 12.2 这个就可以。
打开网站:https://developer.nvidia.com/cuda-toolkit-archive
选择对应的版本下载。
下载12.2

要选与自己显卡相关的版本

选择Windows - 2022系统 下载
一路yes/ok/继续/安装,没什么好讲的

cuDNN安装

下载地址:https://developer.nvidia.com/rdp/cudnn-download 依旧是需要选择对应的版本进行下载。
此处需登陆,没有账号的话注册一个即可,使用邮件地址注册。
选择对应的版本进行下载
下载完之后解压缩,我们将目录名称修改为cudnn
将该cudnn目录,复制到目录 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2 目录下(就是你的CUDA安装地址,前面的目录一般都是有了的,只需要以此点进去即可)。
复制到此

配置环境变量,添加2个环境变量路径,根据你自己的目录修改。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2\cudnn\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2\extras\CUPTI\lib64

修改环境变量

安装Pytorch

地址:https://pytorch.org/
打开网站,下滑,选择需要安装的版本。
选择版本
选择适用于您设备的cuda版本,由于我的是12.2,需要需要使用Preview版本。

conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch-nightly -c nvidia

复制指令,到Anaconda指令窗口执行,请选择适合自己的版本下载,不要复制我的指令。

执行指令

开始跑模型

创建模型虚拟环境

利用conda创建虚拟环境

2023-10-19 16.40.15

打开Conda Shell,执行:

conda create -n ChatGlm python=3.9

创建一个名为ChatGlm的环境,此环境的Python版本为3.9

询问是否继续执行,选择 y回车即可。

激活模型虚拟环境

这里的环境路径C:\ChatGlm是我的路径,请将路径修改成自己的路径。

conda activate ChatGlm
c:
cd C:\ChatGlm

下载ChatGLM2-6B

这里不多赘述,直接Github:https://github.com/THUDM/ChatGLM2-6B
选择Code - 下载zip
下载后将zip内的文件复制到你的环境路径,我的是C:\ChatGlm
目录层级大致这样

安装模型需要的环境

先进入目录,若已经在这个目录下,无需执行这块代码

conda activate ChatGlm
c:
cd C:\ChatGlm

pip改为清华源(避免因网络不良导致报错安装环境失败)【非必需】

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

安装模型需要的环境

pip install -r requirements.txt

pip install

安装过程需要从网络下载资源,所需时间较长,若没有报错耐心等待即可。若安装失败,请将源改为pip改为清华源。

下载模型

原版模型下载[打不开挂科学]:https://huggingface.co/THUDM/chatglm2-6b/tree/main
量化模型下载[小显存使用]:https://huggingface.co/THUDM/chatglm2-6b-int4/tree/main
量化模型下载
因为我的卡是Tesla T4 16G,为了稳定运行,这里我使用Int4量化模型进行测试。模型文件不知道那些有用的话,建议全部下载放到chatglm2-6b文件夹内。
下载后的模型存放到项目目录/model/chatglm2-6b下,例如我的就是C:\ChatGlm\model\chatglm2-6b
如果你使用的是int4量化模型,则路径为/model/chatglm2-6b-int4
模型文件存放路径

运行模型

正常模型

正常模型,请修改路径为绝对路径:
cli_demo.py 第8行:
原代码:

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).cuda()

修改后:

tokenizer = AutoTokenizer.from_pretrained("model\\chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("model\\chatglm2-6b", trust_remote_code=True).cuda()

量化模型

针对量化模型,还需要修改一些代码:
cli_demo.py 第8行
原代码:

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).cuda()

修改后:

tokenizer = AutoTokenizer.from_pretrained("model\\chatglm2-6b-int4", trust_remote_code=True)
model = AutoModel.from_pretrained("model\\chatglm2-6b-int4",trust_remote_code=True).cuda()

运行程序

运行程序有多种方法,这里只使用命令行进行演示

python cli_demo.py

运行示例