1 ChatGLM2-6B介绍
ChatGLM是清华技术成果转化的公司智谱AI研发的支持中英双语的对话机器人。ChatGLM基于GLM130B千亿基础模型训练,它具备多领域知识、代码能力、常识推理及运用能力;支持与用户通过自然语言对话进行交互,处理多种自然语言任务。比如:对话聊天、智能问答、创作文章、创作剧本、事件抽取、生成代码等等
ChatGLM2-6B升级亮点
ChatGLM-6B的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,又增加许多新特性:
(1)更强大的性能
基于ChatGLM初代模型的开发经验,全面升级了ChatGLM2-6B的基座模型。ChatGLM2-6B使用了GLM的混合目标函数,经过了1.4T中英标识符的预训练与人类偏好对齐训练。评测结果显示,与初代模型相比,ChatGLM2-6B在MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。
(2)更长的上下文
基于 FlashAttention 技术,研究人员将基座模型的上下文长度由 ChatGLM-6B 的2K扩展到了32K,并在对话阶段使用8K的上下文长度训练,允许更多轮次的对话。但当前版本的ChatGLM2-6B对单轮超长文档的理解能力有限,会在后续迭代升级中着重进行优化。
(3)更高效的推理
基于 Multi-Query Attention 技术,ChatGLM2-6B有更高效的推理速度和更低的显存占用。在官方的模型实现下,推理速度相比初代提升了42%,INT4量化下,6G显存支持的对话长度由1K提升到了8K。
(4) 更开放的协议
ChatGLM2-6B权重对学术研究完全开放,在获得官方的书面许可后,亦允许商业使用。
相比于初代模型,ChatGLM2-6B在数理逻辑、知识推理、长文档理解等多个维度的能力上,都取得了巨大的提升。
2 ChatGLM2-6B本地部署
2.1 conda环境准备
conda环境准备详见:annoconda
2.2 运行环境安装
conda create -n chatglm python=3.9
conda activate chatglm git clone https://github.com/THUDM/ChatGLM2-6B
cd ChatGLM2-6Bpip install -r requirements.txtmkdir THUDM
cd THUDM
git clone https://huggingface.co/THUDM/chatglm2-6b
上面步骤完成后,查看已经下载的模型,显示如下:
[root@localhost ChatGLM2-6B]# ll THUDM/chatglm2-6b/
总用量 12195716
-rw-r--r-- 1 root root 1263 8月 2 10:42 config.json
-rw-r--r-- 1 root root 2304 8月 2 10:42 configuration_chatglm.py
-rw-r--r-- 1 root root 51910 8月 2 10:42 modeling_chatglm.py
-rw-r--r-- 1 root root 4198 8月 2 10:42 MODEL_LICENSE
-rw-r--r-- 1 root root 1827780615 8月 2 10:45 pytorch_model-00001-of-00007.bin
-rw-r--r-- 1 root root 1968299005 8月 2 10:48 pytorch_model-00002-of-00007.bin
-rw-r--r-- 1 root root 1927414561 8月 2 10:51 pytorch_model-00003-of-00007.bin
-rw-r--r-- 1 root root 1815225523 8月 2 10:53 pytorch_model-00004-of-00007.bin
-rw-r--r-- 1 root root 1968299069 8月 2 10:56 pytorch_model-00005-of-00007.bin
-rw-r--r-- 1 root root 1927414561 8月 2 10:59 pytorch_model-00006-of-00007.bin
-rw-r--r-- 1 root root 1052808067 8月 2 11:01 pytorch_model-00007-of-00007.bin
-rw-r--r-- 1 root root 20645 8月 2 11:01 pytorch_model.bin.index.json
-rw-r--r-- 1 root root 14880 8月 2 11:01 quantization.py
-rw-r--r-- 1 root root 8175 8月 2 11:01 README.md
-rw-r--r-- 1 root root 10318 8月 2 11:01 tokenization_chatglm.py
-rw-r--r-- 1 root root 256 8月 2 11:01 tokenizer_config.json
-rw-r--r-- 1 root root 1018370 8月 2 11:01 tokenizer.model
2.3 更改代码
[root@localhost ChatGLM2-6B]# vi web_demo.py
最后一行代码,更改为share=True,更改后如下所示:
demo.queue().launch(share=True, inbrowser=True)
2.4 启动web
[root@localhost ChatGLM2-6B]# python web_demo.py
看到如下画面,表示启动成功
Loading checkpoint shards: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:06<00:00, 1.13it/s]
/root/anaconda3/envs/chat/lib/python3.9/site-packages/gradio/components/textbox.py:259: UserWarning: The `style` method is deprecated. Please set these arguments in the constructor instead.warnings.warn(
Running on local URL: http://127.0.0.1:7860
Running on public URL: https://ac0a819376990775ad.gradio.liveThis share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces)
通过启动返回的地址进行局域网访问
https://ac0a819376990775ad.gradio.live
启动界面如下:
3 ChatGLM2-6B使用
3.1 web问答
3.1.1 知识问答
3.1.2 文本生成
3.1.3 数理逻辑
3.1.4 语言理解
3.1.5 常识问题
3.1.6 代码生成
3.1.7 医疗问题
3.1.8 内容总结
3.2 通过代码调用chatglm
代码保存在根目录的test.py文件中
from transformers import AutoTokenizer, AutoModeltokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True, device='cuda')
model = model.eval()question = '肿瘤居家营养应该注意什么?'
response, history = model.chat(tokenizer, question, history=[])
print(response)
代码执行后,打印输出如下:
[root@localhost ChatGLM2-6B]# python test.py Loading checkpoint shards: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:08<00:00, 1.26s/it]
肿瘤患者在居家护理过程中,饮食是非常重要的一环,以下是一些肿瘤居家营养应该注意的事项:1. 均衡饮食:肿瘤患者需要摄入足够的蛋白质、维生素、矿物质和纤维素等营养物质,以支持身体恢复和预防并发症。建议患者多吃蔬菜、水果、全谷类、豆类、坚果和种子等富含营养的食物。2. 控制热量和脂肪:肿瘤患者需要控制卡路里摄入量,以避免体重增加和影响治疗效果。建议减少高热量和高脂肪的食物,如油炸食品、甜点和高脂肪的肉类等。3. 增加蛋白质的摄入:蛋白质是身体所需的重要营养物质,对于肿瘤患者来说,摄入足够的蛋白质可以帮助身体修复和恢复。建议患者增加蛋白质摄入,包括豆类、肉类、鱼类和蛋白质粉等。4. 控制钠的摄入:肿瘤患者需要控制钠的摄入量,以避免血压升高和影响治疗效果。建议减少盐的摄入,包括海盐、盐和其他高钠食品等。5. 避免刺激性食物:一些肿瘤患者可能会出现恶心、呕吐等症状,这些食物可能会加重症状。建议患者避免吃辛辣、油腻、咖啡、酒等刺激性食物。6. 注意饮食卫生:肿瘤患者需要保持饮食卫生,以避免食物中毒和其他感染性疾病的发生。建议患者勤洗手、生熟分开、储存食物规范等。肿瘤患者在居家护理过程中,饮食需要遵循医生或营养师的建议,以支持身体恢复和预防并发症。