文章目录
- 0.前言
- 1.模型下载
- 2.配置环境
- 2.1 下载项目文件
- 2.2 配置环境
- 3.开始推理
- 4.总结
0.前言
本博客将介绍ChatGLM3-6B大模型在Ubuntu上的本地部署教程
1.模型下载
-
由于毛毛张的服务器服务无法科学上网,所以模型的相关文件必须现在本地下载好,再上传到服务器上,目前有两个开源的比较好的下载模型文件的地方:Huggineg Face(需要科学上网)和Model Scope(中国网站)
-
传送门:
- Hugging Face ChatGLM3-6B 下载地址
- ModelScope ChatGLM3-6B 下载地址
-
然后最近看到网上说大模型的模型文件使用git-lfs来进行下载,可以理解为用来下载大文件的git,需要自己单独安装,但是毛毛张不推荐
- 原因1:毛毛张测试了一下,还不如用自己的下载器手动下载,因为大模型的权重文件基本上都很大,用这个命令安装也不会告诉你用多久才能下载完
- 原因2:官网的模型权重文件一般都存在两种格式,一个是适用于pytorch的(下图红色方框2),一个是适用于tensorflow的(下图红色方框1),没必要全部下载,自己需要哪一个就下载哪一个就行了,具体的大模型的模型文件中各个文件的作用请参照毛毛张的这篇博客:大模型中的模型文件的说明
- 所以下载过程毛毛张就不过多赘述了
2.配置环境
2.1 下载项目文件
- ChatGLM3-6B有一个非常详细的本地部署项目文件,里面已经做好了集成,大家只需要本地下载好,然后修改相应的路径调用即可
- 传送门:https://github.com/zzx030702/ChatGLM3
2.2 配置环境
-
又到了头疼的一步,不同的人和电脑会出现不同的配置环境报错的问题,只有一步一步见到什么问题解决什么问题了
-
大家把模型文件下载和官网的微调项目文件下载之后就可以将文件传送到服务器上
-
并在项目文件中新建一个model文件夹,然后将模型文件移动到改文件夹下,如下图所示
-
接下来就可以开始配置环境了
-
大模型本地部署的所需要的环境配置已经全部保存在requirements.txt文件当中
-
配置命令:
$ conda create -n chatglm python==3.10 # 创建虚拟环境 $ cd ~/mySata/zzx/ChatGLM3 # 虚拟环境创建完毕之后就可以使用cd命令到大模型项目文件夹下 $ conda activate chatglm # 激活虚拟环境 $ pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 并在虚拟环境中安装本地推理需要的包
-
3.开始推理
-
在使用大模型进行推理的时候要确保自己的电脑有足够的显存,CPU调用需要32G内存, GPU调用方式需要13G显存
-
环境配置成功后,大家可以新建一段test.py代码感受一下chatglm3-6b的推理能力
from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("./model/chatglm3-6b", trust_remote_code=True) model = AutoModel.from_pretrained("./model/chatglm3-6b", trust_remote_code=True, device='cuda') model = model.eval() response, history = model.chat(tokenizer, "你好", history=[]) print(response) response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history) print(response)
-
但是大家这一步运行之后绝对不会那么顺利,毛毛张部署的时候出现了一个报错:
The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/home/flyvideo/mySata/zzx/ChatGLM3/test.py", line 2, in <module> tokenizer = AutoTokenizer.from_pretrained("./model/chatglm3-6b", trust_remote_code=True) File "/home/flyvideo/anaconda3/envs/toolbench/lib/python3.10/site-packages/transformers/models/auto/tokenization_auto.py", line 719, in from_pretrained tokenizer_class = get_class_from_dynamic_module(class_ref, pretrained_model_name_or_path, **kwargs) File "/home/flyvideo/anaconda3/envs/toolbench/lib/python3.10/site-packages/transformers/dynamic_module_utils.py", line 485, in get_class_from_dynamic_module final_module = get_cached_module_file( File "/home/flyvideo/anaconda3/envs/toolbench/lib/python3.10/site-packages/transformers/dynamic_module_utils.py", line 292, in get_cached_module_file resolved_module_file = cached_file( File "/home/flyvideo/anaconda3/envs/toolbench/lib/python3.10/site-packages/transformers/utils/hub.py", line 469, in cached_file raise EnvironmentError( OSError: We couldn't connect to 'https://huggingface.co' to load this file, couldn't find it in the cached files and it looks like THUDM/chatglm3-6b is not the path to a directory containing a file named tokenization_chatglm.py. Checkout your internet connection or see how to run the library in offline mode at 'https://huggingface.co/docs/transformers/installation#offline-mode'
-
关键信息是:
OSError: We couldn't connect to 'https://huggingface.co' to load this file, couldn't find it in the cached files and it looks like THUDM/chatglm3-6b is not the path to a directory containing a file named tokenization_chatglm.py.
-
报错原因找不到下载的Tokenizer文件,经过毛毛张排查这个应该是官方文件的一个bug
-
解决办法:修改
tokenizer_config.json
文件中的THUDM/chatglm3-6b--tokenization_chatglm.ChatGLMTokenizer
为tokenization_chatglm.ChatGLMTokenizer
,修改后如下图所示
-
-
下面是毛毛张在实际推理过程中的显存截图:
4.总结
- 大模型在本地部署的时候会出现各种各样的报错,除了上面那个报错问题之外,还有一些包的版本问题,或者环境配置问题,各种各样的,所以大家尽量按照官网的说明去配置环境
- 大家配置完毕之后就可以开始看项目文件中的
README.md
文件进行微调或者其它的任务了,毛毛张任务那个文件对于ChatGLM的推理和微调的一些代码执行说明的非常详细,再说就是废话了