ChatGLM-6B 是一种基于 Transformer 架构的对话生成模型,由清华大学开发的一款强大的语言生成模型,它融合了最先进的深度学习技术与海量中文语料的训练成果。
ChatGLM-6B为开源大模型,具有参数量小、适合本地部署等特点,因此适合新手作为入门练习时使用。
一、硬件要求
1、理论需求
2、本人配置
本人针对FP16精度的ChatGLM-6B进行部署,暂未尝试INT8、INT4量化模型。
GPU:NVIDIA GeForce RTX 3090
CPU:Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz
二、软件环境
1、本人配置
ubuntu20.04
python 3.10.13
numpy==1.26.3
cuda:11.3
torch==2.1.2+cu121
transformers==4.37.1(此处有故事,后续说明)
peft==0.3.0(此处有故事,后续说明)
2、搭建过程
a)安装cuda驱动
在命令行输入nvidia-smi,如下图所示,左上角CUDA Version:12.1,说明该显卡最高支持的CUDA版本为12.1,可以选择不高于该版本的进行安装。
到英伟达官网https://developer.nvidia.com/cuda-toolkit-archive,下载合适的驱动。
下载完成后,在下载目录下,打开终端,输入
sudo sh cuda_XXXXXXXX.run
安装完成后,配置环境变量,终端输入sudo gedit ~/.bashrc命令打开文件,在文件结尾输入以下语句(涉及到版本号的要与自己下载安装的保持一致)进行保存。
export PATH=/usr/local/cuda-11.3/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda-11.3
更新环境变量配置
source ~/.bashrc
安装成功后,在终端输入nvcc -V,可以查看cuda信息。
b)安装cuDNN
从CUDA Deep Neural Network (cuDNN) | NVIDIA Developer下载对应版本的cudnn,并解压。
将cuda/include文件夹中所有文件复制到usr/local/cuda/include文件夹,将cuda/lib64下所有文件复制到/usr/local/cuda/lib64文件夹中。
对文件夹中的两个文件添加读取权限:
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
b)安装Anaconda和python
从Anaconda官网下载对应anaconda3的sh文件,通过bash命令安装:
bash Anaconda3-2023.09-0-Linux-x86_6.sh
c)创建虚拟环境
conda create GLM_test -n python=3.10
d)安装pytorch
激活虚拟环境: source activate GLM_test
参考博文https://blog.csdn.net/weixin_41267342/article/details/113878423,安装相应的pytorch。
安装后,在终端输入python进入python环境,验证驱动是否安装成功:
import torch
torch.cuda.is_available()
结果显示True,为安装成功。
在GLM_test虚拟环境中安装:
pip install protobuf==3.20.0 transformers==4.27.1 icetk cpm_kernels
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()
先从网址https://huggingface.co/THUDM/chatglm-6b下载大模型到本地:从 Hugging Face Hub 下载模型需要先[安装Git LFS](https://docs.github.com/zh/repositories/working-with-files/managing-large-files/installing-git-large-file-storage),然后在终端运行git clone https://huggingface.co/THUDM/chatglm-6b。
下载完成后,将命令行中的模型地址更改为本地地址,然后运行。
python
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("/home/ubuntu/Downloads/THUDM/chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("/home/ubuntu/Downloads/THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
model = model.eval()
加载模型后,在终端使用模型,需要按照下面的方式输入命令。
response, history = model.chat(tokenizer, "有是忙碌的一天啊", history=[])
print(response)
加载和使用模型的结果。如下图所示:
从网址(https://github.com/THUDM/ChatGLM-6B)下载ChatGLM-6B-main放在THUDM文件夹下面。
安装环境依赖
pip install -r requirements.txt
运行界面程序
streamlit run web_demo2.py
Ubuntu20.04配置pytorch深度学习环境(亲测有效)_ubuntu 20.04.6 lts安装深度学习-CSDN博客
对 ChatGLM-6B 做 LoRA Fine-tuning_chatglm lora-CSDN博客
LLM - ChatGLM-6B Lora 微调与推理_chatglm2-6b训练lora-CSDN博客
pythorch版本和torchvision版本对应关系及torchvision安装_torch2.0.0对应的torchvision-CSDN博客