ChatGLM

一、基本流程

0、学习初衷

1、ChatGLM简介

github地址:https://github.com/THUDM/ChatGLM-6B
ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。

2、流程

2.0 基础

  1. 安装好了git,能访问GitHub。(会使用基本git命令行)
  2. 安装好了anaconda。(会基本的pip、conda命令行)

如果你的电脑完全没有配置过python环境,你需要先学会如何安装Anaconda等来配置python环境,这里因为我以前已经安装过,所以直接从搭建PyTorch环境开始。

  1. 合适的显卡驱动版本

显卡驱动,我以前玩游戏更新过,按理说有显卡的电脑都会有,可以更新一下。

2·1 搭建PyTorch环境

官方文档是默认你配置好环境了的。

我是先看官方文档把文件clone后,跑代码时报错

Torch not compiled with CUDA enabled

搜索知道,没安装环境


2·1·1 安装CUDA
  • 这里CUDA的版本建议先去PyTorch官网(https://pytorch.org/get-started/locally/)上查看。

chatgpt网页免费_chatgpt网页免费

  • 这里找到PyTorch有CUDA11.8版本,所以建议下载11.8版本(CUDA按理说是向下兼容的,但直接下对应版本会更保险一点吧)。

CUDA安装时如果已经安装了高版本,想降版本时,可以直接下载低版本的CUDA,按流程走一次就行。

  • 去到CUDA官网下载对应版本CUDA https://developer.nvidia.com/cuda-toolkit-archive
    下载后是一个安装程序(安装步骤可以看参考安装办法下载2<>)
2.1.2 安装CuDNN
  • CuDNN下载后是一个一个压缩包,使用步骤看参考安装办法下载2
2.1.3 用conda创建新的环境安装对应环境

这里注意python的版本选择

  • 使用anaconda prompt创建环境。(之前用vscode的终端键入指令,不太好使)
  • chatgpt网页免费_python_02

  • 创建新环境conda create -n 环境名字(按喜好,用英文) python=版本号
  • 激活 conda activate 环境名字
2.1.4 最后安装PyTorch

pytorch选择对应版本的指令然后键入激活环境后的anaconda prompt中,等待下载(如果慢,可以找找换源,或者尝试参考网站1的办法)

chatgpt网页免费_CUDA_03

安装完成后
运行py脚本测试安装结果

import torch
print(torch.__version__)
print("是否可用:", torch.cuda.is_available())        # 查看GPU是否可用


如果是否可用返回true,则安装成功。如果返回false,可能是安装成了cpu版本的Pytorch(我就是)。可以卸载Pytorch后重新安装(可以看参考网站3)

2.1.5 参考网站(驱动问题可以看这个)
  • 防坑指南-pytorch-GPU下载安装 https://zhuanlan.zhihu.com/p/454839461
  • Cuda和cuDNN安装教程(超级详细)
  • pytorch安装及卸载

2·2 安装 ChatGLM

如果安装好pytorch环境之后跟着官网的流程来就行,是中文的,对中国人非常友好

全程都下载在新环境里面。

  • 下载代码
    git clone到文件夹

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


运行结束后,在终端切换到对应文件夹里面

  • 安装Gridio

# 安装gradio用于启动图形化web界面 pip install gradio


  • 安装依赖(会自动下载ChatGLM-6B文件里面requirements.txt里的依赖,注意要切换到ChatGLM文件里面)

# 安装运行依赖 pip install -r requirements.txt


  • 运行效果
    我使用的时vscode编译python

vs code切换环境按shift+ctrl+p,点击pyton解释器,选择之前创建的环境(切换到对应的环境才能使用环境里面下载的包)

直接运行web_demo.py等待一段时间后就可以使用了

上网时无法运行

  • GPU运行、CPU运行
    可能会遇见显存不够的报错。这里可以切换model更改代码的
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()


GPU

# FP16精度加载,需要13G显存
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
 
# int8精度加载,需要10G显存
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().quantize(8).cuda()
 
# int4精度加载,需要6G显存
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().quantize(4).cuda()

CPU

#32G内存
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).float()
 
#16G内存
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).bfloat16()


  • 结果
    打开生成的网址就可以开始问问题了。

二、难点

1、显卡驱动的更新、CUDA、CuDNN版本的选择

2、下载GPU版本的PyTorch(使用GPU跑代码时需要)

3、网络问题

三、拓展知识

1、GLM模型

2、PyTorch是什么

3、CUDA、CuDNN是什么

4、Gridio是什么

5、ChatGLM的更多了解

四、疑惑

日后将进一步阅读代码
1、运行chatglm后会在用户目录下出现一个大的缓存文件.cache里面有一个叫 huggingface的文件,会特别占用C盘内存。
测试后是,每回答一个问题就会消耗内存。
2、过几天后突然报错cchadet库,pip下载后解决,换源下载