LLMs之ChatGLM2:ChatGLM2-6B的简介、安装、使用方法之详细攻略

LLMs之ChatGLM2:ChatGLM2-6B的简介、安装、使用方法之详细攻略

导读:2023年06月25日,清华大学开源了 ChatGLM2-6B 模型,是 ChatGLM 模型的升级版本。ChatGLM2-6B 在多个方面有显著提升:模型性能更强,在各种测试集上的表现更好;支持更长的上下文,最大上下文长度提升到 32k;推理速度提高42%,能支持更长的生成;开源许可更加开放,允许商业使用。ChatGLM2-6B在多个维度的能力上取得了巨大提升,包括数理逻辑、知识推理和长文档理解。

模型性能提升主要来自升级的基座模型、混合了 GLM 目标函数、使用 FlashAttention 和Multi-Query Attention 技术。它整合了最新技术,在推理速度、生成长度、知识涵盖等方面取得突破,使人机对话能力更强大。

>> 更强大的性能=混合目标函数+1.4T中英标识符
>> 更长的上下文=Flash Attention技术+上下文长度扩展到32K+8K训练+多轮对话
>> 更高效的推理=Multi-Query Attention技术+INT4量化
>> 更开放的协议

目录

ChatGLM2-6B的简介

ChatGLM2-6B的安装

1、环境安装

(1)、首先需要下载本仓库

(2)、然后使用 pip 安装依赖

ChatGLM2-6B的使用方法

1、基础用法

(1)、代码调用

(2)、从本地加载模型

2、部署应用

T1、网页版 Demo

T2、命令行 Demo

T3、API 部署

3、低成本部署

3,1、模型量化

3.2、CPU 部署

3.3、Mac 部署

3.4、多卡部署


ChatGLM2-6B的简介

          ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性:
>> 更强大的性能=混合目标函数+1.4T中英标识符:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,评测结果显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。
>> 更长的上下文=Flash Attention技术+上下文长度扩展到32K+8K训练+多轮对话:基于 Flash Attention 技术,我们将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练,允许更多轮次的对话。但当前版本的 ChatGLM2-6B 对单轮超长文档的理解能力有限,我们会在后续迭代升级中着重进行优化。
>> 更高效的推理=Multi-Query Attention技术+INT4量化:基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。
>> 更开放的协议:ChatGLM2-6B 权重对学术研究完全开放,在获得官方的书面许可后,亦允许商业使用。如果您发现我们的开源模型对您的业务有用,我们欢迎您对下一代模型 ChatGLM3 研发的捐赠。

GitHub地址:https://github.com/THUDM/ChatGLM2-6B

huggingface地址:https://huggingface.co/THUDM/chatglm2-6b

ChatGLM2-6B的安装

1、环境安装

(1)、首先需要下载本仓库

git clone https://github.com/THUDM/ChatGLM2-6Bcd ChatGLM2-6B

(2)、然后使用 pip 安装依赖

pip install -r requirements.txt

其中 transformers 库版本推荐为 4.30.2,torch 推荐使用 2.0 以上的版本,以获得最佳的推理性能。

ChatGLM2-6B的使用方法

1、基础用法

(1)、代码调用

可以通过如下代码调用 ChatGLM2-6B 模型来生成对话:

>>> from transformers import AutoTokenizer, AutoModel
>>> tokenizer = 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()
>>> response, history = model.chat(tokenizer, "你好", history=[])
>>> print(response)
你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。
>>> response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
>>> print(response)
晚上睡不着可能会让你感到焦虑或不舒服,但以下是一些可以帮助你入睡的方法:1. 制定规律的睡眠时间表:保持规律的睡眠时间表可以帮助你建立健康的睡眠习惯,使你更容易入睡。尽量在每天的相同时间上床,并在同一时间起床。
2. 创造一个舒适的睡眠环境:确保睡眠环境舒适,安静,黑暗且温度适宜。可以使用舒适的床上用品,并保持房间通风。
3. 放松身心:在睡前做些放松的活动,例如泡个热水澡,听些轻柔的音乐,阅读一些有趣的书籍等,有助于缓解紧张和焦虑,使你更容易入睡。
4. 避免饮用含有咖啡因的饮料:咖啡因是一种刺激性物质,会影响你的睡眠质量。尽量避免在睡前饮用含有咖啡因的饮料,例如咖啡,茶和可乐。
5. 避免在床上做与睡眠无关的事情:在床上做些与睡眠无关的事情,例如看电影,玩游戏或工作等,可能会干扰你的睡眠。
6. 尝试呼吸技巧:深呼吸是一种放松技巧,可以帮助你缓解紧张和焦虑,使你更容易入睡。试着慢慢吸气,保持几秒钟,然后缓慢呼气。如果这些方法无法帮助你入睡,你可以考虑咨询医生或睡眠专家,寻求进一步的建议。

(2)、从本地加载模型

以上代码会由 transformers 自动下载模型实现和参数。完整的模型实现在 Hugging Face Hub。如果你的网络环境较差,下载模型参数可能会花费较长时间甚至失败。此时可以先将模型下载到本地,然后从本地加载。

从 Hugging Face Hub 下载模型需要先安装Git LFS,然后运行

git clone https://huggingface.co/THUDM/chatglm2-6b

如果你从 Hugging Face Hub 上下载 checkpoint 的速度较慢,可以只下载模型实现

GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm2-6b

然后从这里手动下载模型参数文件,并将下载的文件替换到本地的 chatglm2-6b 目录下。

将模型下载到本地之后,将以上代码中的 THUDM/chatglm2-6b 替换为你本地的 chatglm2-6b 文件夹的路径,即可从本地加载模型。

模型的实现仍然处在变动中。如果希望固定使用的模型实现以保证兼容性,可以在 from_pretrained 的调用中增加 revision="v1.0" 参数。v1.0 是当前最新的版本号,完整的版本列表参见 Change Log。

2、部署应用

T1、网页版 Demo

首先安装 Gradio:pip install gradio,然后运行仓库中的 web_demo.py:

python web_demo.py

程序会运行一个 Web Server,并输出地址。在浏览器中打开输出的地址即可使用。

默认使用了 share=False 启动,不会生成公网链接。如有需要公网访问的需求,可以修改为 share=True 启动。

感谢 @AdamBear 实现了基于 Streamlit 的网页版 Demo web_demo2.py。使用时首先需要额外安装以下依赖:

pip install streamlit streamlit-chat

然后通过以下命令运行:

streamlit run web_demo2.py

经测试,如果输入的 prompt 较长的话,使用基于 Streamlit 的网页版 Demo 会更流畅。

 

T2、命令行 Demo

运行仓库中 cli_demo.py:

python cli_demo.py

程序会在命令行中进行交互式的对话,在命令行中输入指示并回车即可生成回复,输入 clear 可以清空对话历史,输入 stop 终止程序。

 

T3、API 部署

首先需要安装额外的依赖 pip install fastapi uvicorn,然后运行仓库中的 api.py:

python api.py

默认部署在本地的 8000 端口,通过 POST 方法进行调用

curl -X POST "http://127.0.0.1:8000" \-H 'Content-Type: application/json' \-d '{"prompt": "你好", "history": []}'

得到的返回值为

{"response":"你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。","history":[["你好","你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。"]],"status":200,"time":"2023-03-23 21:38:40"
}

感谢 @hiyouga 实现了 OpenAI 格式的流式 API 部署,可以作为任意基于 ChatGPT 的应用的后端,比如 ChatGPT-Next-Web。可以通过运行仓库中的openai_api.py 进行部署:

python openai_api.py

进行 API 调用的示例代码为

import openai
if __name__ == "__main__":openai.api_base = "http://localhost:8000/v1"openai.api_key = "none"for chunk in openai.ChatCompletion.create(model="chatglm2-6b",messages=[{"role": "user", "content": "你好"}],stream=True):if hasattr(chunk.choices[0].delta, "content"):print(chunk.choices[0].delta.content, end="", flush=True)

3、低成本部署

3,1、模型量化

默认情况下,模型以 FP16 精度加载,运行上述代码需要大概 13GB 显存。如果你的 GPU 显存有限,可以尝试以量化方式加载模型,使用方法如下:

# 按需修改,目前只支持 4/8 bit 量化
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).quantize(8).cuda()

模型量化会带来一定的性能损失,经过测试,ChatGLM2-6B 在 4-bit 量化下仍然能够进行自然流畅的生成。

如果你的内存不足,可以直接加载量化后的模型:

model = AutoModel.from_pretrained("THUDM/chatglm2-6b-int4",trust_remote_code=True).cuda()

3.2、CPU 部署

如果你没有 GPU 硬件的话,也可以在 CPU 上进行推理,但是推理速度会更慢。使用方法如下(需要大概 32GB 内存

model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).float()

如果你的内存不足的话,也可以使用量化后的模型

model = AutoModel.from_pretrained("THUDM/chatglm2-6b-int4",trust_remote_code=True).float()

在 cpu 上运行量化后的模型需要安装 gcc 与 openmp。多数 Linux 发行版默认已安装。对于 Windows ,可在安装 TDM-GCC 时勾选 openmp。 Windows 测试环境 gcc 版本为 TDM-GCC 10.3.0, Linux 为 gcc 11.3.0。在 MacOS 上

model = AutoModel.from_pretrained("your local path", trust_remote_code=True).to('mps')

请参考 Q1。

3.3、Mac 部署

对于搭载了 Apple Silicon 或者 AMD GPU 的 Mac,可以使用 MPS 后端来在 GPU 上运行 ChatGLM2-6B。需要参考 Apple 的 官方说明 安装 PyTorch-Nightly(正确的版本号应该是2.x.x.dev2023xxxx,而不是 2.x.x)。

目前在 MacOS 上只支持从本地加载模型。将代码中的模型加载改为从本地加载,并使用 mps 后端:

加载半精度的 ChatGLM2-6B 模型需要大概 13GB 内存。内存较小的机器(比如 16GB 内存的 MacBook Pro),在空余内存不足的情况下会使用硬盘上的虚拟内存,导致推理速度严重变慢。 此时可以使用量化后的模型 chatglm2-6b-int4。因为 GPU 上量化的 kernel 是使用 CUDA 编写的,因此无法在 MacOS 上使用,只能使用 CPU 进行推理。 为了充分使用 CPU 并行,还需要单独安装 OpenMP。

3.4、多卡部署

如果你有多张 GPU,但是每张 GPU 的显存大小都不足以容纳完整的模型,那么可以将模型切分在多张GPU上。首先安装 accelerate: pip install accelerate,然后通过如下方法加载模型:

from utils import load_model_on_gpus
model = load_model_on_gpus("THUDM/chatglm2-6b", num_gpus=2)

即可将模型部署到两张 GPU 上进行推理。你可以将 num_gpus 改为你希望使用的 GPU 数。默认是均匀切分的,你也可以传入 device_map 参数来自己指定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/7360.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac电脑启动出现空白屏幕的解决办法

Mac电脑启动的时候出现空白屏幕该怎么办?怎么解决Mac电脑出现空白屏幕的情况?macw小编为大家带来解决办法,遇到这种情况的朋友可以一试。 尝试从 macOS 恢复功能启动 如果您的 Mac 似乎已开启,但显示屏上没有显示任何内容,请确…

MAC安装ChatGLM-6B报错:Unknown platform: darwin

安装启动后报错如下: 翻一下issue,找到解决方法: RuntimeError: Unknown platform: darwin Issue #6 THUDM/ChatGLM-6B GitHub

在M1芯片的Macbook上使用docker-compose启动mysql,并利用 NaviCat Premium 客户端进行连接

在M1芯片的Macbook上使用docker-compose启动mysql,并利用 NaviCat Premium 客户端进行连接 1、查看芯片版本 先打开控制台,使用 uname -m 来查看自己CPU芯片的架构 yourPrj % uname -marm64 苹果的M系列芯片使用的是ARM64架构,因此&#xff0…

GPT4All 一个开源 ChatGPT

ChatGPT 正在迅速发展与传播,新的大型语言模型 (LLM) 正在以越来越快的速度开发。就在过去几个月,有了颠覆性的 ChatGPT 和现在的 GPT-4。明确定义,GPT 代表(Generative Pre-trained Transformer),是底层语…

PrivateGPT(如何部署及使用感受)

前言 最近在GitHub上出现了一个名为PrivateGPT的开源项目。该项目旨在为面临敏感数据、涉密信息或个人隐私问题的用户提供一种新的聊天工具。PrivateGPT具备完整的数据控制能力,使用户能够在本地环境中与强大的语言模型进行交互,无需上传数据到互联网或…

LLaMA的解读与其微调:Alpaca-LoRA/Vicuna/BELLE/中文LLaMA/姜子牙/LLaMA 2

前言 近期,除了研究ChatGPT背后的各种技术细节 不断看论文(至少100篇,100篇目录见此:ChatGPT相关技术必读论文100篇),还开始研究一系列开源模型(包括各自对应的模型架构、训练方法、训练数据、本地私有化部署、硬件配置要求、微调…

M1 Macbook Pro编译vim插件YouCompleteMe指南

M1 Macbook Pro编译vim插件YouCompleteMe指南(亲测有效!) 1.前言 (系统Monterey 12.6.5) 之前一直按照网上的教程,通过执行python3 install.py 加–clang-completer或–all等后缀来编译,但最后都失败了。后来发现是python的版本…

《微SaaS创富周刊》第3期:GPT-3\ChatGPT、Stable Diffusion等AI模型驱动的微SaaS创意盘点

大家新年好!第3期《微SaaS创富周刊》问世啦!本周刊面向独立开发者、早期创业团队,报道他们主要的产品形态——微SaaS如何变现的最新资讯和经验分享等。所谓微SaaS,就是“针对利基市场的SaaS”,特点是一般由个人或者小团…

chatgpt赋能python:Python如何在MacBook上打开shell窗口

Python如何在MacBook上打开shell窗口 作为一名有10年Python编程经验的工程师,我认为了解基本的命令行工具是非常重要的。在MacBook上,您可以使用终端打开shell窗口,执行Python代码并运行脚本。 这篇文章将介绍如何打开shell窗口,…

和ChatGPT-4聊完后,我觉得一切可能已经来不及了

了然无味,晴空万里!和ChatGPT-4开始了一场坦诚的沟通,它全程都表现出高情商,以及不断尽量安抚我的情绪,而这,恰恰令我脊背发凉。 部分文字截取 ZM:我能不能理解每次对话就是一次你的“生命” G&…

目录导航《100天精通Python丨快速入门到黑科技》

文章目录 一、100 天精通 Python 丨基础知识篇基础知识篇 —— 01、C 站最全 Python 标准库总结基础知识篇 —— 02、Python 和 Pycharm(语言特点、学习方法、工具安装)基础知识篇 —— 03、Pycharm 快捷操作和配置指南(磨刀不误砍柴工&#…

Autogpt手把手安装配置与使用超详细,使用云托管平台,轻量不会污染本地环境,10分钟带你完成傻瓜式超简单安装!!!

文章目录 AutoGPT简介一、安装流程fork项目注册登录gitpod.io平台开始配置 二、Auto-gpt的使用测试1.初始化使用重要参数讲解及扩展正确的使用Auto-GPT演示启动Auto-gpt 注意事项 总结 本文将采用超详细的步骤,即使小白也可以配置使用。 记录一下中间踩过的坑&#…

ChatGPT 速通手册——文本生成及概要提取,让 ChatGPT 自动总结中心大意

文本生成 文本生成任务,是大语言模型最基础的功能,自然也是 ChatGPT 的最基础功能。我们从这里开始,尝试第一个独立的 ChatGPT 对话。再强调一次:ChatGPT 生成的结果有随机性,每次运行未必一样。因此,本书…

百度版ChatGPT:文心一言发布会盛大召开!

今天下午2点,万众期待的百度版ChatGPT:文心一言发布会召开了。(图一) 投资者对这个发布会的反应非常直接:股价当场断崖式下跌。(图二) 和ChatGPT发布会上现场功能演示不同,百度发布会…

手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

大家好,我是微学AI,今天教你们本地CPU环境部署清华大ChatGLM-6B模型,利用量化模型,每个人都能跑动大模型。ChatGLM-6B是一款出色的中英双语对话模型,拥有超过62亿个参数,可高效地处理日常对话场景。与GLM-1…

我也尝试了下chatGPT,效果惊艳

我也尝试了下chatGPT,效果惊艳,2023会是人工智能的元年。能根据上下文进行对话,能写作文改进作文、写代码改BUG、做题目改作业。 写作文 让它以熬夜为主题写篇100字的作文,开始时只是一段很普通的流水。让它继续改进&#xff0c…

ChatGPT 引领的 AI 革命爆发了,一起上车吧!

文章目录 1. AI 革命爆发了2. 回顾 AI 历史3. 什么是 ChatGPT?4. 为什么你应该学习 AI ?5. 我们该如何学习 AI5.1 第一点是你要多尝试运行代码和修改代码。5.2 第二点是你要多去体验各类 AI 的应用5.3 第三点做头脑风暴,创造有趣新产品 6. 我…

ChatGPT的“N宗罪”?|AI百态(上篇)

AI诞生伊始,那是人人欣喜若狂的科技曙光,深埋于哲学、想象和虚构中的古老的梦,终于成真,一个个肉眼可见的智能机器人,在复刻、模仿和服务着他们的造物主——人类。 但科技树的点亮,总会遇到一些经典的迷思…

chatGPT怎么用?AI提示词工程师是什么

近几个月来,人工智能(AI)热度空前,甚至催生了一个新职业——AI提示词工程师(PromptEngineer)。 这一职业最早出现在美国求职网站Indeed上,Anthropic这家AI初创公司在其招聘信息中明确提到“AI提…

生物科学大模型调研

生物大模型竞品调研 1 概念分类 大模型:大模型通常指的是参数量较大、层数较深的机器学习模型,例如深度神经网络。这些模型具有大量的可训练参数,通过在大规模数据集上进行训练,能够更好地捕捉数据中的复杂模式和特征。大模型在各…