赞
踩
咳咳,工作需要,我一个Unity程序员去做AI相关的研究。从一开始的调用文心一言接口到现在自己部署ChatGLM2-6B并且通过Api调用。记录一下这个过程。
首先要保证自己的显卡有6G。这是最基础的要求,说白了就是GTX1060或者1660。玩AI都是用N卡,哎~我的6700XT… 期待战未来。
首先,先安装python,版本的话,在写这个文章的时候我用的是3.8.0。够用就好,太新怕有莫名其妙的BUG。
anconda不同版本、不同系统、不同配置 会产生 各种 奇葩问题,这里只说明笔者遇到的一些问题,文中没有涉及到的请自行百度
笔者版本:Anaconda3-2019.03-Windows-x86_64
Python&aconda系列:Anacond、Miniconda的下载安装配置教程详解 中的 一. Anacond下载安装配置教程详解
这种问题多出现于 aconda 卸载重装时 和之前安装的路径不是同一路径
Python&aconda系列:cmd/powershell/anaconda prompt提示“系统找不到指定的路径”(亲测有效)
Python&aconda系列:启动Anaconda,一直卡在loading applications或弹出There is an instance of anaconda navigator alr
python&anconda系列:无法加载文件C:\Users\xxx\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本
python&anconda 系列:ValueError: greenlet.greenlet size以及keras保存的h5模型加载时出现“AttributeError: ‘str‘ object
python&anconda 系列:ERROR: Could not build wheels for pycocotools which use PEP 517的N中解决方法
python&anconda 系列:Pycharm在debug问题的N种解决方案(一般程序、web方向、人工智能方向)
Python系列:pycharm 远程连接服务器并且debug, 支持torch.distributed.launch debug
Python&aconda系列:关于Anaconda:conda在Powershell上激活(assert last_idx is not None)
python&anconda系列:Invoke-Expression ,Invoke-Expression -Command $activateCommand或power shell激活虚拟环境报错失
Python&aconda系列:Unable to create process using ‘D:\Anaconda3\python.exe D:\Anaconda3\Scripts\conda-s
Python&aconda系列:【python环境搭建】conda 安装过程中无法激活 python 虚拟环境问题
Python&aconda系列:conda踩坑记录1.An unexpected error has occurred. Conda has prepared the above report
Python&aconda系列:conda踩坑记录2.UnsatisfiableError: The following specifications were found to be incompa
Python&aconda系列:conda踩坑总结(deeptools 篇)
powershell Prompt和 pycharm Timinal都会报错,暂时无解
Prompt可以正常使用
也就是说现在有一个窗口可以正常切换环境、下载等东西,其他的目前也可以正常使用
python&anconda系列(亲测有效):window11系统CUDA、cuDNN 安装以及环境变量配置
首先创建虚拟环境!
按照上面步骤安装完了anaconda之后,按住win + R输入cmd。输入以下命令,新建一个名字为ChatGLM2B的环境。
这里的版本都可以自定义,这就是anaconda厉害的地方,只要你输入的正确,他都会把你下载下来,不需要管地址,这里–name 后面跟着的参数就是虚拟环境的名字,python==版本号
conda create --name ChatGLM2B python==3.8.10
这里的创建了一个叫amalaawei的虚拟环境。
这里创建到的一半的时候会出现一个选择,输入y以继续。就是安装一些必要的环境包。
看到最后是这样的说明成功了。下面还很贴心的提示了如何使用:
conda activate amalaawei(虚拟环境名)----------这句代码的意思就是激活这个虚拟环境,意思就是选中,在多个虚拟环境之间切换的时候,就可以根据激活不同的虚拟环境来达到选择的目的。
这里我记录几句刚学的conda咒语。
conda activate [虚拟环境的名称] 激活某一个虚拟环境
conda env list 查看虚拟环境列表
conda remove --name [虚拟环境的名称] --all 删除虚拟环境
可以看到我在激活虚拟环境后,前面会有一个括号,说明已经进入到虚拟环境了。
主角登场!ChatGLM2-6B 链接:GitHub - THUDM/ChatGLM2-6B: ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型
根据下图操作下载zip。
下载好后就解压咯,放哪都可以,看你心情。在ChatGLM2-6B文件夹下创建一个文件夹叫model,用于等等存放模型使用。
打开链接把所有模型文件都下载下来放在model中。
THUDM/chatglm2-6b at main (huggingface.co)
暂时没有找到一次性打包下载,只能一个一个的这样下载(因为此网涉及到科学上网,所以建议只下载除模型外的东西,模型下载请访问 清华大学云盘 (tsinghua.edu.cn),如果条件不具备科学上网,那么请访问https://download.csdn.net/download/weixin_54626591/88668707或者私信或者底下评论)
当然这里要是用的6GB的显卡的话,建议下载量化模型。链接在下面:
这里我选用的是chatglm2-6b-int4,这已经是最小的了- -。
当然这种方法只是其中一种,还有一种是用git lfs下载大文件。但是我觉得吧,对新手来说步骤越简单越好。万一网络不给力呢,是吧~
把huggingface、清华大学云盘 中下载的所有文件都放在 新创建的文件夹model里面
接下来呢,使用命令行进入到ChatGLM2-6B文件夹。我这里是放在D盘,我做个演示。
就是这么简单,然后接着在虚拟环境下安装依赖,记得要先进入虚拟环境哦,不记得了的去上面看如何进入~
pip install -r requirements.txt
在一系列的加载下载以后
最后出现了Successfully 就算成功。
我有的小伙伴一定会疑问,为什么我不用web_demo.py,而用demo2,因为不知道为啥我用web_demo发送问题以后没有响应,有懂的小伙伴可以留言告诉我哈。
进入ChatGLM2-6B文件夹下找到web_demo2.py打开,你用啥打开就行,我这里用的是vscode。
这里其他py文件同理,只要路径指向没错就好了。
然后将这里的路径“THUDM/chatglm2-6b”改成自己存放模型的路径。
这里有的人说要根据显存进行量化。这个就根据自己的需要选择啦。
# 6G
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(4).cuda()
# 10G
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(8).cuda()
不知道是不是没按照 requirements 这个文件下载,记着明明安按照这个文件下载了
下面是跑不起来遇到的各种问题
有可能问题会循环,可能安装了一个包,这个包相关的依赖也会安装,如果已有环境与依赖有冲突,之前安装的包可能被卸载
在运行ChatGLM2-6B大语言模型和使用P-Tuning训练的时候,出现如下错误
cannot import name 'Doc' from 'typing_extensions'
因为安装的typing_extensions版本不正确,需要重新安装
运行: pip install typing_extensions==4.8.0
如果出现: Requirement already satisfied: typing_extensions==4.8.0 in /xxx
需要运行: pip install typing_extensions==4.8.0 --force-reinstall
–force-reinstall参数会先缷载再重新安装
根据提供的引用内容,出现ImportError: cannot import name ‘_illegal’ from 'sympy.core.numbers’
错误可能是由于sympy库版本不兼容或安装不完整导致的。解决此问题的方法是重新安装或升级sympy库。
你可以尝试以下解决方案:
卸载sympy库:
pip uninstall sympy
重新安装sympy库:
pip install sympy
如果上述方法无效,可以尝试升级sympy库:
pip install --upgrade sympy
请注意,确保你的Python环境中没有其他与sympy库相关的问题,例如依赖项缺失或其他冲突的库。
DLL load failed while importing _imaging: 找不到指定的模块的解决方法
卸载当前版本,安装6.2.1版本
pip uninstall pillow
pip install pillow==6.2.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/****
Python 文件命名引发的"module has no attribute"错误
保存py文件命名时,一定要注意,不能与导入的模块重名
因为import dgl,会先在当前目录下查找有没有dgl模块,即dgl.py文件。找到了就导入,也就是说这里导入的就是自己。自然就无法使用turtle模块的对象。
报错信息
ModuleNotFoundError: No module named 'chardet'
通过如下命令安装chardet模块:
pip install chardet
运行上面的命令后如果出现以下错误,多数被墙
手动下载chardet模块,下载地址如下:
https://github.com/chardet/chardet
通过命令行进入到chardet目录,执行setup.py文件进行安装,命令如下:
python setup.py install
安装结束后,查看是否已经安装成功
pip list
我们在部署chatglm2-b的时候可能出现’Textbox’ object has no attribute 'style
’的问题
这是因为安装的第三方库gradio版本太高,降低版本即可。
pip uninstall gradio
pip install gradio==3.50.0
安装3.50.0或者3.49.0都可以。
说明你显卡不够,需要改web_demo文件里面的内容
# 6G
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(4).cuda()
# 10G
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(8).cuda()
同样适用于web_demo2文件
可能有的小伙伴显卡的内存是8G或其他,然后自动做聪明改成了以下内容
# 8G
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(6).cuda()
然后会报这个错,其实只能是4或8,源码里有写,否则会报错
同样适用于web_demo2文件
这是最后一个问题,也是令很多人特别头疼的一个问题
Python&anconda系列(亲测有效):安装pytorch以及报错AssertionError: Torch not compiled with CUDA enabled解决方法
Python&aconda系列:Torch not compiled with CUDA enabled 报错的归纳总结
出页面了,但是提出了问题,回答空白
笔者猜测可能和科学上网有点儿关系
只是一闪,还是空白(这是笔者尝试了好多次抓的截图),可能笔者用的是免费的科学上网工具吧
使用demo2.py需要先安装依赖。
pip install streamlit streamlit-chat
然后通过命令行去启动!
streamlit run web_demo2.py
总体感觉不如chatgpt
使用api.py需要先安装依赖
pip install fastapi uvicorn
然后python api.py启动!启动成功以后,可以使用Postman等工具进行测试。
AttributeError: 'Textbox' object has no attribute 'style'. Did you mean: 'scale'
当启动web_demo.py出现上面这个错误的时候,其实是gradio的问题,版本太高了。个人猜测可能是pip默认安装最新版本,新版本中api有变化,所以识别不了。
所以只需要卸载当前版本,安装旧版就好了哈。
pip uninstall gradio
pip install gradio==3.39.0
公司做技术储备,今天来分享一下微调的流程,当然也算是自己加深印象。
除了安装ChatGLM2-6B的依赖之外,还需要安装以下依赖:
pip install rouge_chinese nltk jieba datasets transformers[torch] -i https://pypi.douban.com/simple/
在ChatGLM2-6B文件夹下进入ptuning文件夹。
里面有train.json、dev.json,这两个json文件,都用同一份数据就好了。
格式如下:
这里的prompt和response是自定义的Key主键,在train.sh中会有表现。
但是呢,官方提供的shell脚本,在Windows下不能直接使用。
根据一个大佬的做法,把代码改成Bat使用,改写成如下:
可以看到红框中圈出的部分就是刚才json数据中使用到的主键Key
将–train_file与validation_file的路径改成自己本地json文件的路径。
–model_name_or_path改为自己的离线模型路径。
–output_dir 改为自己预想的训练模型后的输出路径。
都改好了以后就运用train.bat。就会自动开始微调了。
完成后,就可以进行推理了。
打开ptuning文件夹下的evaluate.sh设置相应的参数,这里由于Windows下不支持shell,依旧改成bat进行运行。
–validation_file改成自定义的json路径
–test_file改成自定义的json路径
–model_name_or_path 的路径改为模型的本地路径。
–ptuning_checkpoint 的路径改为训练好的微调模型的路径。
运行这个evaluate.bat,完成以后
说实话好像推理这个步骤无所谓。
全都完成以后呢复制一个web_demo.sh,改成web_demo.bat。
将路径改为自己的本地路径。
–model_name_or_path的路径改为本地模型路径。
–ptuning_checkpoint的路径就是微调后的模型的路径。
OK了以后呢就可以运行web_demo.bat了,启动!
然后等一等就会弹出网页端,就可以进行测试啦。
返回ChatGLM2-6B文件夹,复制一个api.py进行修改。
修改成如下这样:
其实就是在原来的基础上加上微调模型。
这样就可以通过api进行调用啦。用法在上一篇文章有说到,需要的小伙伴自己查阅哈。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。