新手在消费级GPU上本地部署chatGLM-6B

       ChatGLM-6B 是一种基于 Transformer 架构的对话生成模型,由清华大学开发的一款强大的语言生成模型,它融合了最先进的深度学习技术与海量中文语料的训练成果。

       ChatGLM-6B为开源大模型,具有参数量小、适合本地部署等特点,因此适合新手作为入门练习时使用。

一、硬件要求

1、理论需求

  1. 硬盘空间:可用空间不小于40G;
  2. 显存要求:本人选用的ChatGLM-6B是FP16精度的,运行代码需要不少于14G的显存;后续要进行进一步的LoRA微调的话,显存最好不小于24G。如果硬件条件受限的话,可以考虑下载INT8或INT4量化后的ChatGLM-6B模型。

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,可以选择不高于该版本的进行安装。

新手在消费级GPU上本地部署chatGLM-6B_第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,为安装成功。

新手在消费级GPU上本地部署chatGLM-6B_第2张图片

  • 部署过程

在GLM_test虚拟环境中安装:

pip install protobuf==3.20.0 transformers==4.27.1 icetk cpm_kernels
  1. 模型调用
  1. 从网络直接加载模型(网络环境好的情况下可采用)

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()
  1. 从本地加载模型

先从网址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()
  1. 使用模型

加载模型后,在终端使用模型,需要按照下面的方式输入命令。

response, history = model.chat(tokenizer, "有是忙碌的一天啊", history=[])

print(response)

加载和使用模型的结果。如下图所示:

新手在消费级GPU上本地部署chatGLM-6B_第3张图片

  1. 安装界面

从网址(https://github.com/THUDM/ChatGLM-6B)下载ChatGLM-6B-main放在THUDM文件夹下面。

安装环境依赖

pip install -r requirements.txt

运行界面程序

streamlit run web_demo2.py

新手在消费级GPU上本地部署chatGLM-6B_第4张图片

  • 参考文档

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博客

你可能感兴趣的:(大模型,语言模型,pytorch,持续部署)