1.环境说明
开源地址:https://github.com/THUDM/ChatGLM-6B
目的:为了本地部署LLM模型,此次选用了ChatGLM-6B
,但是由于设备的限制所以使用量化模型int4
的版本也就是ChatGLM-6B-int4
模型下载地址:https://huggingface.co/THUDM/chatglm-6b-int4
代码下载地址用以上Github的即可
Gcc下载地址:https://jmeubank.github.io/tdm-gcc/
- Gcc安装的时候一定要勾选opengcc
还需要 VS 依赖的.Net Framework 的版本下载地址:https://support.microsoft.com/zh-cn/topic/%E9%80%82%E7%94%A8%E4%BA%8E-windows-%E7%9A%84-microsoft-net-framework-4-8-%E8%84%B1%E6%9C%BA%E5%AE%89%E8%A3%85%E7%A8%8B%E5%BA%8F-9d23f658-3b97-68ab-d013-aa3c3e7495e0
rust的环境下载:https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe
环境 | 版本 |
---|---|
python | Python 3.12.4 |
Gcc | 10.3.0 |
.Net Framework | 4.8.2 |
cargo | cargo 1.79.0 (2024-06-03) |
2.安装所需要的包
这些包是隐含的,可能高版本会有问题,低版本又不适配,所以这里需要更上步骤走。
Github代码Clone下来后,目录会有requirements.txt
文件,在此目录下cmd
pip install -r requirements.txt
- 然后删除新版本的transformers,安装指定版本
> pip uninstall transformers
> pip install transformers==4.34.0
- 删除高版本的gradio,安装指定版本的gradio
> pip uninstall gradio
> pip install gradio==3.39.0
- 安装streamlit,streamlit_chat
> pip install streamlit,streamlit_chat
- 安装cpm_kernels
> pip install cpm_kernels
3.更改配置文件
这里需要更改的配置文件是模型文件下的tokenization_chatglm.py
中的222行,需要对齐注释,然后移到init上方,具体原因是会报错,报错参考别人的文档改的:https://blog.csdn.net/Tink_bell/article/details/137942170
要是不改的话,就得换版本,且会遇到别的环境的问题,很麻烦。
self.sp_tokenizer = SPTokenizer(vocab_file, num_image_tokens=num_image_tokens)
super().__init__(
do_lower_case=do_lower_case,
remove_space=remove_space,
padding_side=padding_side,
bos_token=bos_token,
eos_token=eos_token,
end_token=end_token,
mask_token=mask_token,
gmask_token=gmask_token,
pad_token=pad_token,
unk_token=unk_token,
num_image_tokens=num_image_tokens,
**kwargs
)
self.do_lower_case = do_lower_case
self.remove_space = remove_space
self.vocab_file = vocab_file
self.bos_token = bos_token
self.eos_token = eos_token
self.end_token = end_token
self.mask_token = mask_token
self.gmask_token = gmask_token
#self.sp_tokenizer = SPTokenizer(vocab_file, num_image_tokens=num_image_tokens)
4.更改执行文件代码
这里更改的是web_demo2.py
中的路径部分
@st.cache_resource
def get_model():
tokenizer = AutoTokenizer.from_pretrained("下载下来的模型的路径", trust_remote_code=True)
# 这里是GPU
# model = AutoModel.from_pretrained("下载下来的模型的路径", trust_remote_code=True).half().cuda()
# 这里是CPU
model = AutoModel.from_pretrained("下载下来的模型的路径", trust_remote_code=True).float()
model = model.eval()
return tokenizer, model
5.执行程序且看程序
执行程序需要在web_demo2.py
的目录下cmd执行
streamlit run web_demo2.py
会自动跳出窗口,此次CPU部署ChatGlm-6b-int模型结束
6.吐槽
CPU是真的慢啊!!!!!