基于大语言模型的AI Agents—Part 1
代理(Agent)指能自主感知环境并采取行动实现目标的智能体。基于大语言模型(LLM)的 AI Agent 利用 LLM 进行记忆检索、决策推理和行动顺序选择等,把Agent的智能程度提升到了新的高度。LLM驱动的Agent具体是怎么做的呢?接下来的系列分享会介绍 AI Agent 当前最新的技术进展。
什么是AI Agent?
代理(Agent)这个词来源于拉丁语“agere”,意为“行动”。现在可以表示在各个领域能够独立思考和行动的人或事物的概念。它强调自主性和主动性 (参考链接)。智能代理/智能体是以智能方式行事的代理;Agent感知环境,自主采取行动以实现目标,并可以通过学习或获取知识来提高其性能 (参考链接)。
可以把单个Agent看成是某个方面的专家。
一个精简的Agent决策流程:
Agent:P(感知)→ P(规划)→ A(行动)
其中:
**感知(Perception)**是指Agent从环境中收集信息并从中提取相关知识的能力。
**规划(Planning)**是指Agent为了某一目标而作出的决策过程。
**行动(Action)**是指基于环境和规划 ...
LLM推理加速
本研究的重点是优化延迟的各种方法。具体来说,我想知道哪些工具在优化开源 LLM 的延迟方面最为有效。
🏁mlc 是最快的。这个速度太快了,以至于我都有些怀疑,并且现在我有动力去评估质量(如果我有时间的话)。在手动检查输出结果时,它们似乎与其他方法没有什么不同。
❤️ CTranslate2 是我最喜欢的工具,它是最快的工具之一,也是最容易使用的工具。在我尝试过的所有解决方案中,它的文档是最好的。与 vLLM 不同,CTranslate 似乎还不支持分布式推理。
🛠️ vLLM 确实很快,但 CTranslate 可能更快。另一方面,vLLM 支持分布式推理,而这正是大型模型所需要的。
Text Generation Inference如果想以标准方式部署 HuggingFace LLM,文本生成推理是一个不错的选择(但速度远不及 vLLM)。TGI 有一些不错的功能,如内置遥测(通过 [OpenTelemetry](via OpenTelemetry))以及与 HF 生态系统(如inference endpoints)的集成。值得注意的是,从 2023 年 7 月 ...
GPT最佳实践 - 提升Prompt效果的六个策略
本指南分享了提高GPT的效果的策略和方法。这里描述的方法有时可以结合使用以获得更好的效果。同时鼓励多尝试试验,找到最适合自己的方法。
[TOC]
以下是提高Prompt效果的六个策略:
1. 编写清晰的提示
如果GPT输出的内容过长,可以要求进行简短的回复;如果输出过于简单,可以要求使用专业的写作水准输出内容。如果你不喜欢输出的格式,可以提供自己想要的格式。越是明确表达自己的需求,越有可能得到满意的答案。
具体方法:
在查询中提供更多细节可以获得更相关的答案
可以要求模型采用特定的人设
使用分隔符清楚地指示输入的不同部分
指定完成任务所需的步骤
提供例子
指定所需的输出长度
1.1 在查询中包含详细信息以获得更相关的答案
为了获得高度相关的响应,请确保请求中提供了所有重要的详细信息或上下文。否则,模型将会猜测你的意思,结果的相关度也会降低。
在下面的表格中,右边是推荐的写法,效果会比左边的更好,因为提供了更多具体的细节信息。
更差的
更好的
如何在 Excel 中添加数字?
如何在 Excel 中添加一行美元金额?我想对整张行自动执行此操作,所有总计都在右侧名为“总计 ...
ChatGPT提示快速指南
How Prompt Engineering Works
Rules of Thumb and Examples
Rule #1 – Instructions at beginning and ### or “”" to separate instructions or context
Rule #2 – Be specific and detailed about the desired context, outcome, length, format, and style.
Rule #3 – Give examples of desired output format
Rule #4 – First try without examples, then try giving some examples.
Rule #5 – Fine-tune if Rule #4 doesn’t work
Rule #6 – Be specific. Omit needless words.
Rule #7 – Use leading words to nudge the ...
为什么现在大家都在用 MQA 和 GQA?
GPT,也就是 Transformer Decoder 结构做文本生成时有一个致命问题。先来看看 Encoder 推理是怎么做的,每个 timestep 都能看到所有 timestep ,推理时所有 timestep 一层层向后计算,一把过。于是内存相关开销就是O(N)O(N)O(N) , 而计算相关开销就是O(N2)O(N^2)O(N2) ,其中 N 为序列长度。
而 Decoder 推理时,最大不同在于自回归结构,可以看到图中每个 timestep 的输出都是下一 timestep 的输入,所以无法像 Encoder 一样一次过,每次都要 attend 之前的所有 timestep.
同样计算一下开销,计算开销是 1+(1+2)+(1+2+3)+...+(1+2+...+n)1+(1+2)+(1+2+3)+...+(1+2+...+n)1+(1+2)+(1+2+3)+...+(1+2+...+n) 也就是O(N3)O(N^3)O(N3) ,而内存开销则是 O(N2)O(N^2)O(N2).
大家用 ChatGPT 接口也会有类似感觉,Context 部分成本很低,也很快,因为它做 ...
构建高性能Prompt之路——结构化Prompt
我算是最早在国内提结构化、模板化编写大模型 Prompt 范式的人之一。2023 年 4 月在我自己的个人实践中发现这种结构化、模板化的方式对编写 prompt 十分友好,并且在大多数时候都表现不俗。2023 年 5 月份我将这种方法开源成 LangGPT 项目并在国内写文公开,受到了许多人的认可和喜爱,尤其在 GitHub、即刻、知乎等社区都有不小的反响。由于结构化 Prompt 的出色性能表现,很多朋友都开始在实践中应用这种方法写 Prompt ,其中不乏许多来自网易字节等互联网大厂的朋友。
虽然结构化 prompt 的思想目前已经广为传播并应用,但是缺乏全面系统的资料。虽然也有许多解读文章传播,但内容质量良莠不齐,并且知识也较为破碎。于是写作本文,希望能成为一篇较为系统的高质量的结构化 Prompt 论述文章,为学习 Prompt 编写的朋友提供一些参考借鉴。
什么是结构化 Prompt ?
结构化的思想很普遍,结构化内容也很普遍,我们日常写作的文章,看到的书籍都在使用标题、子标题、段落、句子等语法结构。结构化 Prompt 的思想通俗点来说就是像写文章一样写 Prompt。
为 ...
QLORA:Efficient Finetuning of Quantized LLMs
本文提出了一种高效微调方法QLoRA,通过量化减少显存使用,实现了在单个48G GPU上对65B模型进行微调,仅仅需要在单个GPU上训练24小时就能达到ChatGPT 99.3%的效果。QLoRA引入多项创新,在不牺牲效果的情况下,显著降低了显存占用量:
4-bit NormalFloat(NF4)数据类型
双重量化:Double Quantization
分页优化器:Paged Optimizer。
论文地址: https://arxiv.org/pdf/2305.14314.pdf
代码地址: https://github.com/artidoro/qlora
微调大型语言模型 (LLM) 是提高其性能的一种非常有效的方法。然而,微调非常大的模型非常昂贵; LLAMA 65B 参数模型的常规 16 位微调需要超过 780 GB 的 GPU 内存。虽然最近的量化方法可以减少LLM的内存占用,但这种技术只适用于推断,在训练过程中还是会出现因为资源问题导致训练失败。
本文提出QLoRA方法只要是使用一种新的高精度技术将预训练模型量化为int4,然后添加一小组可学习的低秩适配器权重 ...
问答系统使用 Embedding 召回的局限及解决方案
近期LangChain[1] + LLM 方案高速发展,降低了知识问答等下游应用的开发门槛。但随着业务深入,一些局限性也日渐显露,比如:LLM 意图识别准确性较低,交互链路长导致时间开销大;Embedding 不适合多词条聚合匹配等。本文结合实际案例,分析上述问题存在的根源,并提出基于传统 NLP 技术的解决思路。
背景
以 LLM 为基础的知识问答系统构建方法核心在于:
将用户问题和本地知识进行 Embedding,通过向量相似度(Vector Similarity)实现召回;
通过 LLM 对用户问题进行意图识别;并对原始答案加工整合。
2023 年初 ChatGPT 声名鹊起之时,下游生态链不是很完善,业界一般通过 OpenAI API 和 ChatGPT 直接交互,缺陷也很明显:
上层应用和模型基座绑死。切换模型基座时,上层逻辑不得不大量修改。在 LLM 蓬勃发展的当下,无论是处于成本、License、研究热点还是性能等各方面考虑,基座变更几乎不可避免。
处理环节不完善,开发成本高。比如:向量存储和搜索,LLM 提示词生成,数据链路(导入、分片、加工)等等。如果全部手撸, ...
在单个GPU上基于QLoRA微调LLaMA2模型
2023年7月18日,Meta发布了LLaMA2-最新版本大型语言模型(LLM)。LLaMA2训练使用了2万亿个Tokens,在许多基准测试中(包括推理、编码、熟练度和知识)测试效果优于其他LLM,包括。此次发布有不同的版本,参数大小为7B、13B和70B。这些模型可供商业和研究用途免费使用。
为了满足各种文本生成需求并对这些模型进行微调,我们将使用QLoRA (Efficient Finetuning of Quantized LLMs,这是一种高效的微调技术,它将预训练的LLM量化为仅4位,并添加了小的“低秩适配器”。这种独特的方法可以只使用单个GPU对LLM进行微调!并且PEFT库已支持QLoRA方法。
相关依赖
要成功微调LLaMA 2模型,您需要以下内容:
填写Meta的表格以请求访问下一个版本的Llama。事实上,使用Llama 2受Meta许可证的管理,您必须接受该许可证才能下载模型权重和分词器。
拥有Hugging Face账户(使用与Meta表单中相同的电子邮件地址)。
拥有Hugging Face令牌。
访问LLaMA 2可用模型(7B、13B或70B版本)的页面 ...
使用LLM构建AI Agents的正确姿势
以LLM(大语言模型)作为核心控制器构建智能体是一个很酷的概念。AutoGPT、GPT-Engineer和BabyAGI等几个概念验证演示都是鼓舞人心的示例。LLM的潜力不仅仅限于生成写得好的副本、故事、论文和程序;它可以被视为一个强大的通用问题解决器。
智能体系统概述
在 LLM 支持的自主智能体系统中,LLM 充当智能体的大脑,并由几个关键组件进行补充:
规划
子目标和分解:智能体将大型任务分解为更小的、可管理的子目标,从而能够有效处理复杂的任务。
反思和完善:智能体可以对过去的行为进行自我批评和自我反思,从错误中吸取教训,并针对未来的步骤进行完善,从而提高最终结果的质量。
反思和完善:智能体可以对过去的行为进行自我批评和自我反思,从错误中吸取教训,并针对未来的步骤进行完善,从而提高最终结果的质量。
记忆
短期记忆:认为所有的上下文学习都是利用模型的短期记忆来学习。
长期记忆:这为智能体提供了长时间保留和回忆(无限)信息的能力,通常是通过利用外部向量存储和快速检索。
工具使用
智能体学习调用外部 API 来获取模型权重中缺失的额外信息(通常在 ...