本文作为ChatGLM系列的第三篇,主要讲到ChatGLM3做出的优化与改进;也会补充ChatGLM2和ChatGLM3与GLM1的区别(这些内容在笔者的博客中确实存在遗漏)。
ChatGLM系列解析(一)—— ChatGLM开篇之作_chatglmforconditiongeneration-CSDN博客
ChatGLM系列解析(二)—— ChatGLM2_chatglm glm2-CSDN博客
个人认为ChatGLM3的技术核心特色是自研的AgentTuning、多模态能力CogVLM和独创的多阶段增强预训练方法和更丰富的训练数据。
在能力层面的特色可以总结4点:引入特定prompt,自闭环方式解决安全注入问题;增加模型‘函数调用’和‘agent 调用’能力;代码能力;能力对齐和安全对齐。
我们先来讲下技术核心特色——AgentTuning(其余核心技术后续更新)
一、AgentTuning
1.1 motivation
LLM是可以作为Agent的,在作为Agent时,起到完成任务规划、记忆和使用对应工具的作用,这需要细粒度的Prompt方法,又需要LLM自身具备强大的性能(上下文理解、推理等能力)。
现有针对LLM Agent能力的研究主要关注设计提示(如Prompt) or 构建框架(COT、TOT)来完成某一特定代理任务,而没有从根本上提升LLM自身的通用Agent能力(笔者的理解:外在依赖为主)。
还有一些工作专注于提升LLM在某些特定方面的能力,如代码编写、论文阅读等,这通常以牺牲其通用能力和泛化能力为代价。针对上述问题,清华大学和智谱AI提出了AgentTuning。
1.2 AgentTuning作用与两步走流程
AgentTuning是一种简单而通用的方法,既可以增强LLM的Agent能力,有可以同时保持其通用LLM能力。
对于一个Agent任务,LLM代理的‘交互轨迹’可以记录为多轮对话历史(u1,a1,…,un,an)。考虑到现有的对话模型通常包括两个角色,用户和模型,ui表示来自用户的输入,ai表示来自的响应模型。每个轨迹都有一个最终奖励r∈[0,1],反映了任务的完成情况。
AgentTuning,主要包含两个步骤:
1. 构建一个覆盖多种代理任务、包含高质量交互轨迹的轻量级指令调优数据集