大规模语言模型(LLM)的出现对自然语言处理领域带来了变革,然后大模型的训练,部署,推理都需要占用大量的计算资源。针对这一问题,一些参数,体积相对小的开源模型出现,如LLama-,vicuna,chatglm出现,同时为了进一步方便部署,降低硬件要求,推出了量化版模型chatglm2-6b-int4。
GPU
GPU: Telsa T4 RAM16G
资源消耗:系统的RAM4G,GPU的RAM6G
# 安装transformers等包
!pip install protobuf transformers==4.30.2 cpm_kernels torch>=2.0 gradio mdtex2html sentencepiece accelerate
# 导入AutoTokenizer, AutoModel
from transformers import AutoTokenizer, AutoModel
# 设置模型名称,选择THUDM/chatglm2-6b-int4模型,
# AutoTokenizer从huggingface中导入THUDM/chatglm2-6b-int4模型的tokenizer
model_id = "THUDM/chatglm2-6b-int4"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
# 输出“你今天吃了吗?”的tokenizer编码
encoding = tokenizer("你今天吃了吗?")
encoding
# 使用AutoModel加载模型model,从huggingface下载
# half()参数将模型数据从float32改为float16,缩小模型尺寸,加速模型
# cuda()将模型加载到GPU上,使用GPU的并行处理进行加速
# model.eval()运行在eval模式,关闭dropout等操作,更准确的输出
model = AutoModel.from_pretrained(model_id, trust_remote_code=True).half().cuda()
print(model.__class__)
model = model.eval()
# 进行推理
# prompt是输入
# response是推理的结果
# 模型model通过chat类得到结果
prompt = "你好"
response, history = model.chat(tokenizer, prompt, history=[])
response
你好!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。
耗时33秒
问:请讲个笑话
答:
耗时24秒
问:做一个游玩中国的计划
耗时17秒
问:晚上睡不着怎么办
在cpu下运行
资源消耗:RAM大概7G
# 安装transformers等包
!pip install protobuf transformers==4.30.2 cpm_kernels torch>=2.0 gradio mdtex2html sentencepiece accelerate
# 导入AutoTokenizer, AutoModel
from transformers import AutoTokenizer, AutoModel
# 设置模型名称,选择THUDM/chatglm2-6b-int4模型,
# AutoTokenizer从huggingface中导入THUDM/chatglm2-6b-int4模型的tokenizer
model_id = "THUDM/chatglm2-6b-int4"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
# 输出“你今天吃了吗?”的tokenizer编码
encoding = tokenizer("你今天吃了吗?")
encoding
# 使用AutoModel加载模型model,从huggingface下载
# float()在CPU上运行
# model.eval()运行在eval模式,关闭dropout等操作,更准确的输出
model = AutoModel.from_pretrained(model_id,trust_remote_code=True).float()
print(model.__class__)
model = model.eval()
# 进行推理
# prompt是输入
# response是推理的结果
# 模型model通过chat类得到结果
prompt = "你好"
response, history = model.chat(tokenizer, prompt, history=[])
response
你好!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。
耗时4分钟
问:你好
答:你好!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。
耗时17分钟
问:晚上睡不着应该怎么办
答:以下时是一些有助于晚上睡觉的技巧:
1. 创建一个睡眠友好的环境:确保房间安静tricm温馨,温度适宜,并且没有任何噪音。
2. 规律的睡眠时间:尽量在同一时间入睡和起床,即使周末也要遵循这个规律。
3. 放松身心:在睡觉前数绵羊或听轻柔的音乐有助于放松身心。
4. 避免刺激:避免在睡觉前看电视或使用电脑等电子设备,因为这些设备会刺激大脑。
5. 远离咖啡因:避免在睡觉前数小时内摄入咖啡因,因为咖啡因是一种刺激药物。
6. 锻炼身体:适量的运动可以帮助你入睡,但要避免在睡觉前做剧烈运动。
7. 远离酒精:避免在睡觉前数小时内饮酒或饮酒,因为酒精是一种镇静剂,会让你在晚上醒来时感到疲倦。
如果你仍然睡不着或者有长期的失眠问题,建议咨询医生或睡眠专家以获取更好的帮助。
耗时15分钟
问:介绍一下中国
答:中国是一个位于亚洲东部的国家,是世界上第三大国家,人口众多,拥有960万平方公里的土地。中国有着悠久的历史和文化,拥有许多著名的历史遗迹和世界文化遗产。
中国是一个社会主义国家,由中国共产党领导,经济以制造业为主,是世界上最大的出口国之一。中国也是世界上最大的工业和科技中心之一,拥有广阔的科技和人才资源。
中国的文化包含了悠久的历史和传统,包括儒家文化、道家文化、佛教文化和民俗风情等。中国也是世界上茶文化、丝绸文化、陶瓷文化等的中心,拥有丰富的文化遗产。
中国是一个充满活力和发展潜力的大国,近年来取得了很多成就,吸引了越来越多的人前来旅游、学习和生活工作。
耗时17分钟
问:什么是量子化?
答:量子化是一种将物理问题分解为更小部分的方法,即将一个复杂的物理系统分解为更简单的组成部分。量子化通常涉及将一个连续的、连续的函数分解为一个或多个离散的、离散的函数。
在量子力学中,量子化通常是指将一个未知的、复杂的物理量分解为更简单的组成部分。例如,量子力学中的波函数就是将一个未知的物理量分解为更简单的组成部分的例子。量子力学中的波函数和它们的平方根被用来描述粒子在空间中的位置和动量,而这些物理量是不能直接测量的。
量子化还可以用于描述一些经典物理学中未解决的问题,例如量子场论和量子引力。在这些领域中,物理学家将复杂的物理系统分解为更简单的组成部分,并用量子力学的方法来描述它们的行为。
总结:THUDM/chatglm2-6b-int4运行,GPU上最低需要GPU的RAM约6G,系统的RAM约4G。在CPU,最低需要约系统RAM约7G。chatglm2-6b-int4性能差别不明显,CPU运行,一个问题的推理时间以分钟为单位,好在只需7G的系统RAM即可体验,有兴趣的话可以试一试。在GPU上推理速度明显提升,十几秒就能响应,消费级显卡即可体验。
遇到的错误:NotImplementedError: A UTF-8 locale is required. Got ANSI_X3.4-1968
解决方法:
import locale
locale.getpreferredencoding = lambda: "UTF-8"
源自:https://github.com/googlecolab/colabtools/issues/3409
积累:
Jupyter Notebook查看使用的Python版本
import sys
print(sys.version)
print(sys.executable)