阿里云人工智能平台PAI部署开源大模型chatglm3之失败记录--update:最后成功了!

想学习怎么部署大模型,跟着网上的帖子部署了一个星期,然而没有成功。失败的经历也是经历,记在这里。

我一共创建了3个实例来部署chatglm3,每个实例都是基于V100创建的(当时没有A10可选了),其显存只有16G。每个实例分配的系统存储盘有100G。

这三个实例,每个实例都有不一样的失败原因。

更新:

由于在上面花了一周时间,啥都没做出来,实在不甘心,于是我又部署了第四个实例。它用的显卡是A10。

实例一

实例一挂在了下载模型权重文件这一步

python 复制代码
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

到这一步的时候系统盘莫名其妙的满了,导致下载模型权重文件报错。

实例二

由于第一次系统盘早早地满了,第二次部署的时候我就跳过了前期的一些操作,其中包括配置环境变量这一步。

python 复制代码
# 印象中不创建账号好像就没有bashrc的文件
vim ~/.bashrc
# 末尾添加anaconda3所在路径,和第六步路径一致
export PATH=/root/anaconda3/bin:$PATH
# 修改终端的默认 python 为 anaconda,否则会报错找不到命令activate
source /root/anaconda3/bin/activate
# 使环境变量的修改立即生效
source ~/.bashrc                        

这导致后面在运行模型的时候一直报错。

  1. 运行cli_demo.py文件报AttributeError
markup 复制代码
(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'?
  1. 运行web_demo_gradio.py报ImportError。我尝试对这些错误进行修改,发现每修改好一个,就报下一个类似的错误。后来意识到应该是前期环境变量没有配置好,导致了了路径错误。
markup 复制代码
    from gradio.exceptions import ComponentDefinitionError
ImportError: cannot import name 'ComponentDefinitionError' from 'gradio.exceptions' (/root/anaconda3/lib/python3.11/site-packages/gradio/exceptions.py)
markup 复制代码
    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)
markup 复制代码
    from gradio.events import Events
ImportError: cannot import name 'Events' from 'gradio.events' (/root/anaconda3/lib/python3.11/site-packages/gradio/events.py)

实例三

第三次部署我老老实实跟着教程设置了环境变量,最后模型看似能运行,但是还是出了问题。

  1. cli_demo.py运行
    最开始是我输入对话语句,模型报UnicodeDecodeError,并反馈Could not find TensorRT。
markup 复制代码
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,但是都没有成功。

今天在写这个失败记录的时候,再试着运行了一次,报内存溢出的错误。

  1. web_demo_gradio.py运行
    在最开始提醒我安装gradio和peft,安装好之后要注意更新gradio的环境变量,不然会导致无法成功import。
    后面运行时生成的local url一直打不开,我跟在chat-gpt将web_demo_gradio.py中的.laucn()函数的share属性由false改成了true.
python 复制代码
iface.launch(share=True)

运行代码时有提醒我要安装frpc_linux_amd64_v0.2。

markup 复制代码
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,可以打开网页了。

输入对话,但是模型并不能生成回答。

我猜原因可能是显卡内存不足。

实例四

实例四的部署过程和本文前贴的教程的过程一样。最后在运行的时候报了bug,但是,我改好了!!!

  1. cli_demo.py运行
    和第三次部署一样,还是报的UnicodeDecodeError。
markup 复制代码
File "/usr/local/lib/python3.10/subprocess.py", line 1031, in _translate_newlines
data = data.decode(encoding, errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)

这一次我仔细看了看traceback,报错的地方应该是/usr/local/lib/python3.10路径下的subprocess.py文件的第1031行。问了问Chat-GPT,它建议我直接对Python 3.10中的特定函数进行修改。

python 复制代码
#退出原目录
cd
# 进入Python 3.10所在路径
cd /usr/local/lib/python3.10
# 使用修改subprocess.py文件
vi subprocess.py

将其第1031行修改为如下。然后保存。

退出Python 3.10所在路径,重新进入模型权重文件所在路径,运行cli_demo.py文件。

这次终于可以顺利地和模型聊天了。

  1. web_demo_gradio.py运行
    报ModuleNotFoundError,可能跟Transformers的版本有关。

    在Hugging Face上找到了对gemma的介绍,先记在这里,后面再看看如何对这个Bug进行修改。
相关推荐
古希腊掌管学习的神19 分钟前
[机器学习]XGBoost(3)——确定树的结构
人工智能·机器学习
ZHOU_WUYI1 小时前
4.metagpt中的软件公司智能体 (ProjectManager 角色)
人工智能·metagpt
靴子学长1 小时前
基于字节大模型的论文翻译(含免费源码)
人工智能·深度学习·nlp
AI_NEW_COME2 小时前
知识库管理系统可扩展性深度测评
人工智能
海棠AI实验室3 小时前
AI的进阶之路:从机器学习到深度学习的演变(一)
人工智能·深度学习·机器学习
hunteritself3 小时前
AI Weekly『12月16-22日』:OpenAI公布o3,谷歌发布首个推理模型,GitHub Copilot免费版上线!
人工智能·gpt·chatgpt·github·openai·copilot
IT古董3 小时前
【机器学习】机器学习的基本分类-强化学习-策略梯度(Policy Gradient,PG)
人工智能·机器学习·分类
centurysee4 小时前
【最佳实践】Anthropic:Agentic系统实践案例
人工智能
mahuifa4 小时前
混合开发环境---使用编程AI辅助开发Qt
人工智能·vscode·qt·qtcreator·编程ai
四口鲸鱼爱吃盐4 小时前
Pytorch | 从零构建GoogleNet对CIFAR10进行分类
人工智能·pytorch·分类