ChatGLM2-6b 避坑指南
ChatGLM在[2023/06/25]发布新一代GLM模型 ChatGLM2-6b,经过实测,语言能力较上代强了不少,生成速度也快许多。在 Nvidia GeForce 4060 laptop 8G+i913900HX 配置下进行INT8量化下推理的ChatGLM2-6b,展现出让我震惊不已的能力:
经过了艰难的探索,把该跳的一些坑都跳了个遍)
于是做这期避坑指南,方便大家尽快用上新一代语言模型,在此也将最好的祝福给到chatGLM,希望国产AI越走越远!
前期工作
一般来说,为了更好使用不同版本的Python,而不至于出现兼容性等问题,我们需要安装如Anaconda等的Python“管理工具”,到官网下载Anaconda。
一路Next,注意需要将Anaconda添加到环境变量中,方便在命令行中直接调用。
打开Anaconda Navigator(直接在菜单中搜索),选择Environments
点击Create,
新建一个 环境,名字自取,这里以 chatglm 为例,创建好以后,等待Anaconda配置好环境,这时候需要给这个新建的环境安装 CUDA ,进入官网,点击Download Now,然后按照电脑版本选择你下载的CUDA版本,另外注意,本指南只适用于NVIDIA GPU用户,对于使用AMD的,请自行探索)(似乎只能用CPU推理)
这个下载大概有三个多G,完成后点击安装,一路选择Default(默认)的即可。
安装完后,对新建的环境安装相应的PyTorch,进入官网,如果你在CUDA环节安装的是版本号为12.1的CUDA,请按下面选择:
如果不是12.1版本,请按所对应版本安装相应版本的PyTorch,
复制下面的代码,在此贴一个:
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch-nightly -c nvidia
现在,打开Anaconda Prompt(菜单直接搜索),输入conda activate chatglm(刚刚设置的环境名)
当出现类似下面这种情况时即可:
然后添加清华源方便下载:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
然后运行刚刚在PyTorch网站复制的代码,可能需要等待一会。
到此配置环境就算完成了。
方法一
直接下载ChatGLM2-6B包,然后等待脚本自动下载模型。
具体做法:
打开上面的网站,点击Code:
点击Download ZIP,下载完后,解压到一个路径下,(最好是全英文路径),大概是这样子(不是完全一样)
然后,再次打开Anaconda Prompt,换成刚刚的环境,输入 cd 你解压的路径(如D:\Chatglm2\ChatGLM)
如果你解压的路径不在C盘,则需要输入 你的盘符:(如 D:)
将出现类似以下界面:
运行
pip install -r requirements.txt
等待下载完成。
然后,直接运行
python web_demo.py
会自动下载模型,大约11.6G,全部下载完毕,即会自动运行。
如果你网络环境不好,可以参考方法二
方法二
进入ChatGLM2-6B官方网站,找到这里:
点击 这里,选择:
下载里面的所有文件。
下面需要一个Hugging Face Hub上的文件,如果你有git可以运行第二个指令:
如果没有,这里提供 百度网盘 的链接,大家可以直接下载,
提取码:1voi
解压压缩包到刚刚解压的那个文件夹(有web_demo.py那个),然后将刚刚下载好的模型移动到这个压缩包解压后的文件夹,该文件夹中文件大概为:
然后,回到上级文件夹,打开 web_demo.py
将这两行改为如图:
(我使用INT8量化,如不需要,可将quantize(8)删去)
如果需要使用到命令行(即cli_demo.py文件)或web_demo2.py,类似上面修改即可,
保存,即可运行web_demo.py。
放张图:
另外,如果在web_demo.py中将这里修改,我们甚至可以通过手机远程访问,并进行提问:
注意,这里我使用的是移动数据,因此猜测gradio充当了一个远程服务器,沟通起电脑与手机,这样使得我们可以从互联网访问。