国产大语言模型之光—Chatglm3-6B Chat/Base保姆级本地部署以及工具调用
文章目录
开发背景
随着2024的到来,2023已经成为了过去式,LLM的时代在此开启了,本博主是一名软件工程的大二学生,趁着寒假的时间,对于在大二上接触LLM一些应用进行了总结,向大家分享一下。
为官方进行宣传一波,最新的ChatGLM4
将于2024.1.16进行公布,届时小编会跟踪最新消息,为大家提供最新的技术支持。
如果本博客有什么地方说的不对,请大家进行批评指正,谢谢大家
本博主大语言模型系列如下:
国产大模型LLM 魔搭社区|阿里云服务器部署
0基础快速上手—大语言模型微调(web端)
0基础快速上手—大语言模型微调(shell版)
硬件支持
对于部署阶段需要你拥有一张强力的显卡,本人使用的是RTX4090,模型推理消耗最低GPU显存是6G,推荐大家使用显存大于等于13G的显卡,这样对于显卡不会造成过大的消耗,还可以保证模型的质量
模型权重下载
Chatglm3-6B Chat模型下载地址(可能速度较慢):Hugging Face官网
Chatglm3-6B Chat模型下载地址:魔搭社区官网
Chatglm3-6B Base模型下载地址(可能速度较慢):Hugging Face官网
Chatglm3-6B Base模型国内下载地址:魔搭社区官网
重要的事说三遍
一定要注意对于模型的全部文件进行下载
一定要注意对于模型的全部文件进行下载
一定要注意对于模型的全部文件进行下载
模型部署
接下来开始对于模型的部署与简单的推理使用
代码的准备
git clone https://github.com/THUDM/ChatGLM3
cd ChatGLM3
依赖的安装
pip install -r requirements.txt
其中对于torch的安装本人使用的是torch2.0.1+cuda11.8,一定要注意torch与自己安装cuda的兼容性,否则在运行时候会出现no torch这个报错
pytorch官方下载链接
模型的加载
tokenizer = AutoTokenizer.from_pretrained("MODEL_PATH", trust_remote_code=True)
model = AutoModel.from_pretrained("MODEL_PATH", trust_remote_code=True)
注意的是,MODEL_PATH 一定对应自己下载完事模型之后的路径
chatglm3-6b模型进行推理经过测试至少需要使用13.1G显存。如果显存不够的话,可以开启量化,经过测试对于模型进行int4的量化需要的显存是6G。
需要进行开启模型量化请使用下面的代码进行模型的加载
tokenizer = AutoTokenizer.from_pretrained("MODEL_PATH", trust_remote_code=True)
model = AutoModel.from_pretrained("MODEL_PATH", trust_remote_code=True).quantize(4).cuda()
模型的推理
单次对话模型调用
对于chatglm-chat模型的调用
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True, device='cuda')
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
#你好👋!我是人工智能助手ChatGLM3 - 6B, 很高兴见到你, 欢迎问我任何问题。
response, history = model.chat(tokenizer, "辽宁的省会是哪里?", history=history)
print(response)
对于chatglm-base模型的调用
>> > from transformers import AutoTokenizer, AutoModel
>> > tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
>> > model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True, device='cuda')
>> > model = model.eval()
>> > response, history = model.chat(tokenizer, "湖北的省会是武汉,辽宁的省会->", history=[])
>> > print(response)
命令行版模型多轮对话
python cli_demo.py
调用cli_demo.py文件,可以在命令行上面调用
网页版模型多轮对话
python web_demo_gradio.py
web_demo_gradio文件,可以基于gradio在网页上面进行模型的多轮对话
API本地模型的调用
在openai_api_demo这个包下面,openai_api.py对于本地模型进行加载<