要进行下面步骤,实现要已经完成了Anaconda软件的安装,以及配置其环境变量,还需要GPU配置
不使用GPU也可以,但是目前博主还没有测试
一·、使用Anaconda创建虚拟环境
运行命令行:cmd
conda create -y -n 虚拟环境名称(自己创建) python=python的版本号
或者是:
conda create --name 虚拟环境名称(自己创建) python=python的版本号
二、初始化环境
初始化Conda环境,防止后续操作可能存在报错等问题。
conda init cmd.exe
三、激活环境
直接win+r 执行cmd
激活conda环境 此时只执行激活环境操作即可
conda activate 虚拟环境名称
此时就会在命令行出现:
带虚拟环境的名称的一个文件地址
此时测试python版本号:
python 看是否和上面创建的版本号是一样的
四、下载chatglm的源码文件
ChatGLM2-6B-main.zip官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘
git https://github.com/THUDM/ChatGLM2-6B.git # 此时可能下载不成功
# 或者是自己下载压缩包zip
此时我改了文件的名称 原文件为ChatGLM2-6B-main 现在ChatGLM2-6B
五、安装程序的环境
将上面的压缩包,解压到一个目录(最后不要有中文目录) 我创建了一个ai目录,将解压的文件放到这,改了一个名称
解压出来叫ChatGLM2-6B-main ,去掉了main
法一:切换盘符到解压至的目录 cd 该目录(此时就是cd E:\ai\ChatGLM2-6B 如果没有切换成功,打一个盘符E: 可能就切换过去了) 在解压好的目录会看到有一个requirements.txt 的文件
法二:直接在解压到的目录敲cmd 然后激活conda环境 conda activate 虚拟环境名称
安装环境需要的包
pip install -r requirements.txt
执行成功以后,继续安装其他包
# 1.更新charset_normalizer依赖库,不然必报错。
pip install --upgrade charset_normalizer
# 2.安装CLI所用到的charset_normalizer依赖库,不然必报错。
pip install pyreadline
# 3.这个不安装也可以,安装也行,也不大 但是如果要访问web页面的话,需要安装
pip install streamlit streamlit-chat
六、安装torch
可以参考:Windows系统安装配置PyTorch和Conda环境教程 - openAI维基百科
查看本地GPU版本 重新一个cmd
mvidia-smi
执行命令
# 根据自己的GPU下载的版本来,可以比自己下载GPU版本低,但一定不能高
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
七、下载模型
模型官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘
下载的模型解压到和刚刚源码文件放在一起
八、创建项目并运行
创建一个文件夹eg:demo,使用pycharm打开,然后配置python解释器,配置为刚刚创建的conda的虚拟环境名称
打开创建的一个文件,然后选择添加解释器
此时会出现一个弹窗,继续进行操作:
此时便可以在这个文件里面去进行操作了
创建一个demo的python文件
from transformers import AutoTokenizer, AutoModel
# 这个r里面的文件地址,就是刚刚我们解压以后的那个模型文件路径
# 字符串前的r表示原始字符串(raw string)。原始字符串会忽略字符串中的转义字符(如\n、\t等),将其视为普通字符。
# 这对于处理文件路径特别有用,因为文件路径中可能包含反斜杠(\),而反斜杠在普通字符串中是转义字符。
tokenizer = AutoTokenizer.from_pretrained(r"D:\openai.wiki\ChatGLM2-6B\THUDM\chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained(r"D:\openai.wiki\ChatGLM2-6B\THUDM\chatglm2-6b", trust_remote_code=True).cuda()
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
print(response)
此时运行可能会去一个问题
控制台最后一行会出现
解决方法如下:
你的Python版本可能大于或等于3.10版本,因为 Python 3.10 版本将collections
等一些属性放到了collections.abc
子模块下。所以会出现collections’ has no attribute
的错误。
如果你非要用Python的3.10及以上版本,也可以考虑找到最后报错的文件,一般是报错出现的最后一个文件。更改collections.attr 为 collections.abc.attr,attr 为报错中没有的属性。
更改方法:此时打开conda的安装目录,进入envs,按照自己刚刚创建的虚拟环境的名称进行查找,找到一个文件叫
py3k_compat.py 修改他
更改方法:此时打开conda的安装目录,进入envs,按照自己刚刚创建的虚拟环境的名称进行查找,找到一个文件叫
py3k_compat.py 修改他
上面所有流程,自己执行成功,博主也遇到过问题,困扰很久,参考另外一个博主的执行流程,有所感悟,这里非常感谢链接: link这篇博客!因为我布置环境,本地部署大部分按照这个博客来的,而且他/她还贴心地帮我把要从huggingface上下载巨慢的内容下载打包好了,真的是爱了!其中使用他的方案成功了,上面自己写的自己的方案也是成功了