0 写在前面
我们首先来看一下ChatGLM2-6B
模型的requirements
:
protobuf
transformers==4.30.2
cpm_kernels
torch>=2.0
gradio
mdtex2html
sentencepiece
accelerate
sse-starlette
streamlit>=1.24.0
可以看到,要求torch>=2.0
,这就产生了一个问题:torch
与cuda
版本的匹配问题。本地机器中CUDA=10.0
,于是在费了半天时间配置好ChatGLM2-6B
所需环境,从github
和huggingface
下载好了ChatGLM2-6B
模型,但是在run
的过程中报错Torch not compiled with CUDA enabled
,于是不得不卸载并重新安装CUDA
。因此提醒各位看官,在配置前,请一定检查torch和cuda版本是否匹配**。torch2.0
所需的版本为cuda 11.x
,其中cuda 11.7
和cuda 11.8
都是可以的。
所以我们先从CUDA卸载与安装说起,如果不存在cuda版本匹配问题,可以略过此步。
1 CUDA卸载与安装
1.1 cuda版本查看
查看本机所支持的最高版本:cmd
->nvidia-smi
,其中红色框中的是本机支持的最高版本的cuda
查看本机当前版本:cmd
->nvcc --version
,可以看到,当前版本为cuda_11.8
(这是升级更新以后的结果)
1.2 cuda卸载
用windows的控制面板进行卸载,搜索cuda(右上角),把和cuda相关的都卸载掉,注意只卸载cuda
相关程序,NVIDIA
相关的驱动等,如果拿不准,建议不要动,维持原状。
1.3 cuda安装:
cuda
官网下载地址:https://developer.nvidia.com/cuda-downloads
这里我选择11
->exe(local)
,如果想要查看下载所有历史版本,可以点击Archive of Previous CUDA Releases
以管理员身份运行cuda_11.8.0_522.06_windows.exe
,过程中可以选择自定义安装
,由于我只卸载了cuda
,因此也只安装cuda
,其他的几个选项勾选掉了。安装路径为C:\Program Files\NVIDIA GPU Computing Toolkit
安装过程大约10分钟左右,中途出现了以下问题,原因是安装过程中需要在系统环境变量path
变量中写入以下路径,但由于我的path
变量超限,写不进去,于是安装程序提示让在安装完成后手动在path
变量中写入这两个路径。
由此引发另一个问题:path
变量超限问题,关于这个问题,网上有说修改注册表的,有说直接在注册表中的path
中写入路径的,最后采用的是这个方法,亲测有效。
环境变量问题解决掉后,重启电脑,打开cmd
测试一下,如果cmd
->nvidia-smi
和cmd
->nvidia-smi
可用并且显示相关信息,说明cuda
升级更新成功!
2 ChatGLM2-6B
下载
B站有一个官网的教程可参考:视频教程
从github
上把项目拖下来,然后在项目所在路径下面,创建虚拟环境venv
,在该环境下安装项目所需的依赖requirements.txt
,这两步怎么做,可以参考我以前的教程Anaconda3安装配置/创建删除虚拟环境/在特定虚拟环境下安装库,以及这里
值得注意的是:torch的安装
,建议用官网给的命令:https://pytorch.org/get-started/pytorch-2.0/#faqs,以避免不必要的麻烦。
即:
pip3 install numpy --pre torch torchvision torchaudio --force-reinstall --index-url https://download.pytorch.org/whl/nightly/cu118
文件有2.7GB大小,下载略慢,如下图。
项目路径D:\Code\ChatGLM2-6B
,文件结构如下,其中THUDM
文件夹和venv
文件夹是自己创建的,THUMD
用于存放从预训练模型。
3 从Huggingface下载预训练模型
下载预训练模型,有3种方式:
3.1. 方式1:代码直接调用
方式1:代码直接调用,前提是可以(科学上网)访问Huggingface
3.2. 方式2:手动从Huggingface上下载
Huggingface上的项目地址:https://huggingface.co/THUDM/chatglm2-6b
Huggingface上面,项目的完整目录如图
3.3. 方式3:从清华云盘下载
从清华云盘将所有下面的文件下载下来,放进D:\Code\ChatGLM2-6B\THUDM\chatglm2-6b
这个目录,THUDM\chatglm2-6b
这个目录是自己创建的。
这还不够,需要从Huggingface项目地址中,将其余的一些配置文件下载补全,一起放进D:\Code\ChatGLM2-6B\THUDM\chatglm2-6b
这个目录。(为什么一部分从清华云盘下,一部分从huggingface下??因为内网从huggingface下载的速度非常非常慢,所以几个大的1G以上的文件从清华云盘下载了,但清华云盘上没有给所需的配置文件如config.json
,导致模型跑不起来,所以一些小的几个KB的配置文件从huggingface下载了,嗯…就这么回事)。
3.4 检查目录结构
检查一下自己的存放预训练模型的文件夹结构,如下:
4 运行与测试ChatGLM2-6B
在pycharm中打开该项目,写了一个很简单的测试脚本Test.py
,向它提问晚上睡不着该咋办
,运行项目后,ChatGLM2-6B给出答案,在这个过程中,加载模型的checkpoints
需要约半分钟时间,模型推理需要约半分钟时间才能给出答案(台式机,一张NVIDIA GeForce RTX 2080Ti显卡,16GB内存)
再测试一个,向它提问:飞机是怎么装配的
,回答如下
5. 写在后面
安装过程中的bug
总结如下:
cannot import name 'deprecated' from 'typing_extensions'
cannot import name 'Doc' from 'typing_extensions'
以上两个bug
是由于ChatGLM2-6B
项目需要typing_extensions>4.8.0
,按要求安装即可:pip install typing_extensions==4.8
-----------------------------------------------------------------The End!---------------------------------------------------------------------------------