LLMs之ChatGLM3:ChatGLM3/ChatGLM3-6B的简介(多阶段增强+多模态理解+AgentTuning技术)、安装、使用方法之详细攻略

LLMs之ChatGLM3:ChatGLM3/ChatGLM3-6B的简介(多阶段增强+多模态理解+AgentTuning技术)、安装、使用方法之详细攻略

导读:2023年10月27日,智谱AI在2023中国计算机大会上推出了全自研的第三代基座大模型ChatGLM3及其相关系列产品,这是继推出千亿基座的对话模型ChatGLM和ChatGLM2之后的重大突破。ChatGLM3采用了独创的多阶段增强预训练方法,排名国内同尺寸模型中首位。ChatGLM3具备多模态理解、代码生成和执行、网络搜索增强等功能,性能和部署方面也有显著提升。智谱清言作为ChatGLM3的赋能产品,成为国内首个具备代码交互能力的大模型。

>>ChatGLM3的性能突破—排名第一:ChatGLM3采用了独创的多阶段增强预训练方法,使训练更为充分。在44项中英文公开数据集测试中,ChatGLM3在国内同尺寸模型中排名第一。与ChatGLM2相比,ChatGLM3在多个指标上有显著提升,包括MMLU提升36%、CEval提升33%、GSM8K提升179%、BBH提升126%。

>>ChatGLM3的新功能—看齐GPT-4V:ChatGLM3实现了若干全新功能的迭代升级,包括多模态理解能力的CogVLM-看图识语义,在多个国际标准图文评测数据集上取得SOTA;代码增强模块Code Interpreter根据用户需求生成代码并执行,自动完成数据分析、文件处理等复杂任务;网络搜索增强WebGLM-接入搜索增强,能自动根据问题在互联网上查找相关资料并在回答时提供参考相关文献或文章链接。ChatGLM3的语义能力与逻辑能力得到了极大的增强。

>> ChatGLM3采用全新Agent智能体算法:ChatGLM3集成了自研的AgentTuning技术,提升了模型智能体能力,尤其在智能规划和执行方面,相比于ChatGLM2提升了1000%。

>>ChatGLM3的性能和部署—可手机端部署:ChatGLM3还推出了可手机部署的端测模型ChatGLM3-1.5B和ChatGLM3-3B,支持多款手机和车载平台,甚至支持移动平台上CPU芯片的推理,速度可达20 tokens/s

>>ChatGLM3的推理性能:ChatGLM3当前的推理框架在相同硬件、模型条件下,相较于目前最佳的开源实现,推理速度提升了2-3倍,推理成本降低一倍,每千tokens仅0.5分,成本最低。

>>智谱清言的升级:在ChatGLM3的赋能下,生成式AI助手智谱清言成为国内首个具备代码交互能力的大模型产品(Code Interpreter)。智谱清言还具有搜索增强能力,可以整理出相关问题的网上文献或文章链接,并直接给出答案。

目录

ChatGLM3的简介

1、ChatGLM3-6B的特点

2、模型列表

​3、评测结果

(1)、典型任务

(2)、 LongBench评测集的测试

ChatGLM3的安装

1、环境安装

2、基础测试

(1)、调用 ChatGLM 模型来生成对话:自动下载模型实现和参数

(2)、手动下载模型再进行加载

3、命令行demo

4、网页版demo

T1、基于 Gradio 的网页版 demo

T2、基于 Streamlit 的网页版 demo

5、工具调用

6、低成本部署

T1、​模型量化​: 4-bit 量化

T2、CPU 部署:仍需32G

T3、Mac 部署:半精度要 13GB 内存

T4、多卡部署:需先安装accelerate库

ChatGLM3的使用方法

1、基础用法

(1)、在线测试

对话测试

>> 请问,你作为ChatGLM3,和此前的ChatGLM2版本有什么重大区别?

>> 请问,你作为ChatGLM3-6B,你是怎么进行预训练的,主要实现的核心过程包括哪些?

文档提问

帮我梳理整个文档《Baichuan2-technical-report3》

代码测试

帮我写一个冒泡排序算法

2、进阶用法


ChatGLM3的简介

        2023年10月27日,ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。 ChatGLM3 开源模型旨在与开源社区一起推动大模型技术发展,恳请开发者和大家遵守开源协议,勿将开源模型和代码及基于开源项目产生的衍生物用于任何可能给国家和社会带来危害的用途以及用于任何未经过安全评估和备案的服务。目前,本项目团队未基于 ChatGLM3 开源模型开发任何应用,包括网页端、安卓、苹果 iOS 及 Windows App 等应用。
        尽管模型在训练的各个阶段都尽力确保数据的合规性和准确性,但由于 ChatGLM3-6B 模型规模较小,且模型受概率随机性因素影响,无法保证输出内容的准确。同时模型的输出容易被用户的输入误导。本项目不承担开源模型和代码导致的数据安全、舆情风险或发生任何模型被误导、滥用、传播、不当利用而产生的风险和责任。

GitHub地址:GitHub - THUDM/ChatGLM3: ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型

1、ChatGLM3-6B的特点

ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:

  • 更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base 具有在 10B 以下的基础模型中最强的性能
  • 更完整的功能支持: ChatGLM3-6B 采用了全新设计的 Prompt 格式,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。
  • 更全面的开源序列: 除了对话模型 ChatGLM3-6B 外,还开源了基础模型 ChatGLM3-6B-Base、长文本对话模型 ChatGLM3-6B-32K。以上所有权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用

ChatGLM3-6B地址:https://huggingface.co/THUDM/chatglm3-6b

2、模型列表

ModelSeq LengthDownload
ChatGLM3-6B8kHuggingFace | ModelScope
ChatGLM3-6B-Base8kHuggingFace | ModelScope
ChatGLM3-6B-32K32kHuggingFace | ModelScope

​3、评测结果

(1)、典型任务

我们选取了 8 个中英文典型数据集,在 ChatGLM3-6B (base) 版本上进行了性能测试。

ModelGSM8KMATHBBHMMLUC-EvalCMMLUMBPPAGIEval
ChatGLM2-6B-Base32.46.533.747.951.750.0--
Best Baseline52.113.145.060.163.562.247.545.8
ChatGLM3-6B-Base72.325.766.161.469.067.552.453.7

Best Baseline 指的是模型参数在 10B 以下、在对应数据集上表现最好的预训练模型,不包括只针对某一项任务训练而未保持通用能力的模型。

对 ChatGLM3-6B-Base 的测试中,BBH 采用 3-shot 测试,需要推理的 GSM8K、MATH 采用 0-shot CoT 测试,MBPP 采用 0-shot 生成后运行测例计算 Pass@1 ,其他选择题类型数据集均采用 0-shot 测试。

(2)、 LongBench评测集的测试

我们在多个长文本应用场景下对 ChatGLM3-6B-32K 进行了人工评估测试。与二代模型相比,其效果平均提升了超过 50%。在论文阅读、文档摘要和财报分析等应用中,这种提升尤为显著。此外,我们还在 LongBench 评测集上对模型进行了测试,具体结果如下表所示

Model平均SummarySingle-Doc QAMulti-Doc QACodeFew-shotSynthetic
ChatGLM2-6B-32K41.524.837.634.752.851.347.7
ChatGLM3-6B-32K50.226.645.846.156.261.2

65

ChatGLM3的安装

1、环境安装

下载项目文件

首先需要下载本仓库:

git clone https://github.com/THUDM/ChatGLM3

cd ChatGLM3

安装依赖

然后使用 pip 安装依赖:

pip install -r requirements.txt

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

2、基础测试

(1)、调用 ChatGLM 模型来生成对话:自动下载模型实现和参数

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

(2)、手动下载模型再进行加载

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

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

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

如果从你从 HuggingFace 下载比较慢,也可以从 ModelScope 中下载。

Hugging Face地址:https://huggingface.co/THUDM/chatglm3-6b

ModelScope地址:https://modelscope.cn/models/ZhipuAI/chatglm3-6b

3、命令行demo

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

python cli_demo.py

4、网页版demo

网页版 demo 会运行一个 Web Server,并输出地址。在浏览器中打开输出的地址即可使用。 经测试,基于 Streamlit 的网页版 Demo 会更流畅

T1、基于 Gradio 的网页版 demo

python web_demo.py

T2、基于 Streamlit 的网页版 demo

streamlit run web_demo2.py

5、工具调用

关于工具调用的方法请参考 工具调用。

地址:https://github.com/THUDM/ChatGLM3/blob/main/tool_using/README.md

6、低成本部署

地址:https://github.com/THUDM/ChatGLM3/blob/main/DEPLOYMENT.md

T1、​模型量化​: 4-bit 量化

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

model = AutoModel.from_pretrained("THUDM/chatglm3-6b",trust_remote_code=True).quantize(4).cuda()

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

T2、CPU 部署:仍需32G

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

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

T3、Mac 部署:半精度要 13GB 内存

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

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

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

加载半精度的 ChatGLM3-6B 模型需要大概 13GB 内存。内存较小的机器(比如 16GB 内存的 MacBook Pro),在空余内存不足的情况下会使用硬盘上的虚拟内存,导致推理速度严重变慢。

T4、多卡部署:需先安装accelerate库

如果你有多张 GPU,但是每张 GPU 的显存大小都不足以容纳完整的模型,那么可以将模型切分在多张GPU上。首先安装 accelerate: 

pip install accelerate

然后通过如下方法加载模型:

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

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

ChatGLM3的使用方法

1、基础用法

(1)、在线测试

测试地址:https://chatglm.cn/main/code

对话测试
>> 请问,你作为ChatGLM3,和此前的ChatGLM2版本有什么重大区别?

>> 请问,你作为ChatGLM3-6B,你是怎么进行预训练的,主要实现的核心过程包括哪些?

文档提问
帮我梳理整个文档《Baichuan2-technical-report3》

代码测试
帮我写一个冒泡排序算法

def bubble_sort(arr):n = len(arr)for i in range(n):swapped = Falsefor j in range(0, n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]swapped = Trueif not swapped:breakreturn arr

2、进阶用法

更新中……

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

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

相关文章

科技联众,互利共赢 | 卡驰科技(深圳)有限公司CEO张倍铭博士到访拓世科技集团,共探跨境电商,海外拓展无限可能

在创新的浪潮中,人工智能以其强大的能量持续推动着各行各业的进步,拓世科技集团作为人工智能领域的引领者,通过不断合作和交流,与众多领域的佼佼者共同探讨数字时代的无限可能。卡驰科技(深圳)有限公司作为…

代码随想录打卡第五十三天|309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费

309.最佳买卖股票时机含冷冻期 题目: 给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 卖…

轻量封装WebGPU渲染系统示例<2>-彩色立方体(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/version-1.01/src/voxgpu/sample/VertColorCube.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据和渲染机制分离。 5. …

2023年清洁电器行业数据分析:洗地机市场规模持续倍增,进入赛点

洗地机作为清洁电器领域的明星品类,正在成为继扫地机器人之后拉动清洁电器市场大盘的又一核心动力。 在清洁电器领域,扫地机器人、洗地机和吸尘器是三大热门品类。截至今年9月份,根据鲸参谋平台的数据显示,吸尘器的规模继续大幅下…

简化路径(C++解法)

题目 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 / 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身&#xff1…

uni-app:实现picker下拉列表的默认值设置

效果 分析 1、在data中将index8的初始值设置为-1,表示未选择任何选项: index8: -1, //选择的下拉列表下标 2、在bindPickerChange8事件处理函数中添加条件判断。如果选择的值是-1,则将this.index8设置为"请输入",否则将…

Docker 容器服务的注册、发现及Docker安全

目录 Docker容器服务的注册和发现 1、什么是服务注册与发现? 2、什么是consul consul的部署 1、环境准备 2、部署consul服务器 1)建立 Consul 服务 2)设置代理,在后台启动 consul 服务端 3)查看集群信息 4&a…

有线网卡通过无线网卡使其它设备上网

我现在的网络是无线路由器连接公网,电脑上的无线网卡连接路由器使电脑上网,这是完全正常的连接方式。 我现在又有了一台嵌入式设备,它只有有线网口,所以就只能用有线的方式连网,但是我的无线路由器不在电脑旁边&#x…

力扣在线OJ——栈和队列

目录 🍁一、用两个队列实现栈 🌕(一)、题目(力扣链接:用队列实现栈 ) 🌕(二)、注意 🌕(三)、解答 ⭐️1.注意事项 ⭐…

社区迭代|ETLCloud社区新增“论坛”啦!

ETLCloud社区是谷云科技RestCloud旗下面向开发工程师、集成研发人员等技术人员提供全方位交流和学习的开放式平台,也是ETLCloud在产品生态赋能上的一大亮点,旨在能够帮助更多的用户更快捷高效的掌握技能,也为企业提供集成人才培养赋能&#x…

TensorFlow学习:使用官方模型和自己的训练数据进行图片分类

前言 教程来源:清华大佬重讲机器视觉!TensorFlowOpencv:深度学习机器视觉图像处理实战教程,物体检测/缺陷检测/图像识别 注: 这个教程与官网教程有些区别,教程里的api比较旧,核心思想是没有变…

使用一个Series序列减去另一个Series序列Series.subtract()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 求两个序列中对应位置 的各元素的差 a.subtract(b) [太阳]选择题 关于以下代码的说法中正确的是? import pandas as pd a pd.Series([1,2,3]) print("【显示】a:\n",a) b pd.Seri…