想学习怎么部署大模型,跟着网上的帖子部署了一个星期,然而没有成功。失败的经历也是经历,记在这里。
我一共创建了3个实例来部署chatglm3,每个实例都是基于V100创建的(当时没有A10可选了),其显存只有16G。每个实例分配的系统存储盘有100G。
这三个实例,每个实例都有不一样的失败原因。
实例一
实例一挂在了下载模型权重文件这一步
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
到这一步的时候系统盘莫名其妙的满了,导致下载模型权重文件报错。
实例二
由于第一次系统盘早早地满了,第二次部署的时候我就跳过了前期的一些操作,其中包括配置环境变量这一步。
# 印象中不创建账号好像就没有bashrc的文件
vim ~/.bashrc
# 末尾添加anaconda3所在路径,和第六步路径一致
export PATH=/root/anaconda3/bin:$PATH
# 修改终端的默认 python 为 anaconda,否则会报错找不到命令activate
source /root/anaconda3/bin/activate
# 使环境变量的修改立即生效
source ~/.bashrc
这导致后面在运行模型的时候一直报错。
- 运行cli_demo.py文件报AttributeError
(base) root@dsw-403691-6867f64799-5t2cz:/opt/chatglm3/ChatGLM3/basic_demo# sudo python cli_demo.py
报错:
File "/root/.cache/huggingface/modules/transformers_modules/ChatGLM-6B/tokenization_chatglm.py", line 244, in vocab_size
return self.sp_tokenizer.num_tokens
AttributeError: 'ChatGLMTokenizer' object has no attribute 'sp_tokenizer'. Did you mean: '_tokenize'?
- 运行web_demo_gradio.py报ImportError。我尝试对这些错误进行修改,发现每修改好一个,就报下一个类似的错误。后来意识到应该是前期环境变量没有配置好,导致了了路径错误。
from gradio.exceptions import ComponentDefinitionError
ImportError: cannot import name 'ComponentDefinitionError' from 'gradio.exceptions' (/root/anaconda3/lib/python3.11/site-packages/gradio/exceptions.py)
from gradio.utils import no_raise_exception
ImportError: cannot import name 'no_raise_exception' from 'gradio.utils' (/root/anaconda3/lib/python3.11/site-packages/gradio/utils.py)
from gradio.events import Events
ImportError: cannot import name 'Events' from 'gradio.events' (/root/anaconda3/lib/python3.11/site-packages/gradio/events.py)
实例三
第三次部署我老老实实跟着教程设置了环境变量,最后模型看似能运行,但是还是出了问题。
- cli_demo.py运行
最开始是我输入对话语句,模型报UnicodeDecodeError,并反馈Could not find TensorRT。
2024-07-04 21:08:47.391139: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)
我尝试安装bazel及tensorflow,但是都没有成功。
今天在写这个失败记录的时候,再试着运行了一次,报内存溢出的错误。
- web_demo_gradio.py运行
在最开始提醒我安装gradio和peft,安装好之后要注意更新gradio的环境变量,不然会导致无法成功import。
后面运行时生成的local url一直打不开,我跟在chat-gpt将web_demo_gradio.py中的.laucn()函数的share属性由false改成了true.
iface.launch(share=True)
运行代码时有提醒我要安装frpc_linux_amd64_v0.2。
Could not create share link. Missing file: /root/anaconda3/envs/chatglm3_test/lib/python3.11/site-packages/gradio/frpc_linux_amd64_v0.2.
于是我将该文件下载到本地,又跟着教程上传到服务器,成功安装了frpc_linux_amd64_v0.2。
在此运行模型,使用public url,可以打开网页了。
输入对话,但是模型并不能生成回答。
我猜原因可能是显卡内存不足。