NSDT工具推荐Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割

让 GPT-4 证明存在无限素数——同时押韵——并且它做到了。 但如果问它你的团队上个季度的表现与计划相比如何,它就会惨败。 这说明了大型语言模型(“LLM”)的一个根本挑战:他们很好地掌握了一般的公共知识(例如素数论),但完全不知道专有的非公开信息(你的团队上个季度的表现)。 专有信息对于绝大多数企业使用工作流程至关重要。 了解公共互联网的模型很可爱,但其原始形式对大多数组织来说几乎没有用处。

在过去的一年里,我有幸与许多组织合作,将LLM应用于企业用例。 这篇文章详细介绍了任何踏上这一旅程的人都应该了解的关键概念和关注点,以及我认为LLM将如何发展的一些热门观点以及对机器学习产品策略的影响。 它面向产品经理、设计师、工程师和其他对LLM如何“幕后”工作了解有限或一无所知,但有兴趣学习概念而不深入技术细节的读者。

1、四个概念

我们先介绍四个与LLM相关的概念。

  • 检索增强生成(RAG):上下文窗口和嵌入

使 LLM 依据相关数据进行推理的最简单方法是在模型提示中提供专有数据。

大多数LLM可以毫无问题地正确回答以下问题:“我们有 2 个客户,A 和 B,分别花费了 10 万美元和 20 万美元。 谁是我们最大的客户?他们花了多少钱?” 我们刚刚完成了一些基本的提示工程,通过在查询(第二句话)前面添加上下文(第一句话)。

但在现实世界中,我们可能拥有数千或数百万客户。 考虑到上下文中包含的每个单词都要花钱,我们如何决定哪些信息应该进入上下文? 这就是嵌入的用武之地。嵌入是一种将文本转换为数值向量的方法,其中相似的文本生成相似的向量(在 N 维空间中“靠近”的向量)。 我们可能会嵌入网站文本、文档,甚至可能是 SharePoint、Google Docs 或 Notion 中的整个语料库。 然后,对于每个用户提示,我们将其嵌入并从文本语料库中找到与提示向量最相似的向量。

例如,如果我们嵌入关于动物的维基百科页面,并且用户询问有关狩猎的问题,我们的搜索将对有关狮子、斑马和长颈鹿的维基百科文章排名靠前。 这使我们能够识别与提示最相似的文本块 - 因此最有可能回答它。我们将这些最相似的文本块包含在提示前面的上下文中,以便提示有望包含LLM回答问题所需的所有信息。

  • 微调

嵌入的一个缺点是每次调用 LLM 都需要通过提示传递所有上下文。 LLM甚至对最基本的企业特定概念都没有“记忆”。 由于大多数基于云的 LLM 提供商按提示令牌收费,因此这可能会很快变得昂贵。

微调允许LLM理解企业特定的概念,而无需将它们包含在每个提示中。 我们采用一个基础模型,该模型已经编码了数十亿个学习参数的一般知识,并调整这些参数以反映特定的企业知识,同时仍然保留底层的一般知识。 当我们使用新的微调模型进行推理时,我们“免费”获得企业知识。

与底层模型是第三方黑匣子的嵌入/提示工程相比,微调更接近于经典机器学习,即机器学习团队从头开始创建自己的模型。 微调需要带有标记观察结果的训练数据集; 微调模型对训练数据的质量和数量高度敏感。 我们还需要做出配置决策(纪元数、学习率等)、编排长期运行的训练作业并跟踪模型版本。 一些基础模型提供商提供 API 来抽象化部分复杂性,而另一些则没有。

虽然使用微调模型进行推理可能会更便宜,但成本高昂的训练工作可能会抵消这一点。 一些基础模型提供商(如 OpenAI)仅支持落后模型的微调(因此不支持 ChatGPT 或 GPT-4)。

  • 评估

LLM提出的新颖且重大的挑战之一是衡量复杂输出的质量。 经典的机器学习团队拥有经过验证的方法来测量简单输出的准确性,例如数值预测或分类。 但LLM的大多数企业用例都涉及生成数万到数千字的回复。 复杂到需要十多个单词的概念通常可以用多种方式表达。 因此,即使我们有经过人类验证的“专家”响应,将模型响应与专家响应进行精确字符串匹配也是一项过于严格的测试,并且会低估模型响应的质量。

OpenAI 开源的 Evals 框架是解决这一问题的一种方法。 该框架需要一个标记的测试集(其中提示与“专家”响应相匹配),但它允许在模型和专家响应之间进行广泛类型的比较。 例如,模型生成的答案是:专家答案的子集还是超集; 事实上等同于专家的答案; 比专家的答案更简洁还是更不简洁? 需要注意的是,Evals 使用 LLM 执行这些检查。 如果“检查器”LLM 存在缺陷,评估结果本身可能不准确。

  • 对抗性例子

如果您在生产中使用法LLM,你需要相信它能够安全地处理误导或恶意的用户输入。 对于大多数企业来说,出发点是确保模型不会传播虚假信息。 这意味着一个系统知道自己的局限性以及何时说“我不知道”。 这里有很多战术方法。 这可以通过提示工程来完成,使用提示语言,例如“如果上面提供的上下文无法回答问题,请回答‘我不知道’”)。 可以通过提供超出范围的培训示例来进行微调,而专家的回答是“我不知道”。

企业还需要防范恶意用户输入,例如 提示黑客攻击。 限制系统可接受的输入和输出的格式和长度可以是一个简单而有效的开始。 如果您只为内部用户提供服务,那么预防措施是个好主意;如果您为外部用户提供服务,那么预防措施就很重要。

2、三个担忧

在企业应用LLM的三个担忧如下:

  • 偏见持续存在

最受欢迎的LLM(OpenAI / GPT-4、Google / Bard)的开发人员煞费苦心地将他们的模型与人类偏好保持一致,并部署复杂的调节层。 如果你要求 GPT-4 或Bard给你讲一个种族主义或厌恶女性的笑话,他们会礼貌地拒绝。

那是好消息。 坏消息是,这种针对社会偏见的温和措施并不一定能防止制度偏见。 想象一下,我们的客户支持团队有对特定类型的客户粗鲁的历史。 如果历史客户支持对话被天真地用于构建新的人工智能系统(例如,通过微调),该系统可能会复制这种偏见。

如果你使用过去的数据来训练人工智能模型(无论是经典模型还是生成模型),请仔细检查你希望哪些过去的情况延续到未来,哪些不希望在未来延续。 有时,不直接使用过去的数据,设定原则并据此开展工作(例如,通过即时工程)会更容易。

  • 模型锁定

除非你一直生活在岩石下,否则你就会知道生成式人工智能模型正在以惊人的速度发展。 给定一个企业用例,今天最好的LLM可能不是六个月内的最佳解决方案,而且几乎肯定不会是六年内的最佳解决方案。 聪明的机器学习团队知道他们在某个时候需要切换模型。

但还有另外两个主要原因是为了方便LLM“交换”。 首先,许多基础模型提供商一直在努力支持呈指数级增长的用户量,从而导致服务中断和降级。 在您的系统中构建后备基础模型是一个好主意。 其次,在系统中测试多个基础模型(“赛马”)以了解哪个模型表现最好是非常有用的。 根据上面有关评估的部分,通常很难通过分析来衡量模型质量,因此有时您只想运行两个模型并定性比较响应。

  • 数据泄露

阅读你正在考虑使用的任何基础模型的条款和条件。 如果模型提供者有权使用用户输入来进行未来的模型训练,那就令人担忧了。 LLM 是如此之大,以至于特定的用户查询/响应可能会直接编码在未来的模型版本中,然后该版本的任何用户都可以访问。 想象一下您组织中的用户询问“如何清理执行 XYZ 操作的代码? [此处是您的专有机密代码]”如果模型提供商随后使用此查询来重新训练其 LLM,则新版本的 LLM 可能会了解到您的专有代码是解决用例 XYZ 的好方法。 如果竞争对手询问如何做 XYZ,LLM可能会“泄露”您的源代码或非常类似的东西。

OpenAI 现在允许用户选择不使用他们的数据来训练模型,这是一个很好的先例,但并不是每个模型提供商都效仿他们的做法。 一些组织还在探索在自己的虚拟私有云中运行LLM; 这是人们对开源LLM感兴趣的一个关键原因。

3、两个热门话题

关于LLM的两个热门话题如下:

  • 提示工程设计将主导微调

当我第一次开始将LLM应用于企业用途时,我对微调比提示工程更感兴趣。 微调感觉就像它遵循了我所习惯的经典机器学习系统的原则:整理一些数据,生成训练/测试数据集,开始训练工作,等待一段时间,根据某些指标评估结果。

但我开始相信,对于大多数企业用例来说,提示工程(带有嵌入)是更好的方法。

首先,提示工程的迭代周期比微调要快得多,因为没有模型训练,这可能需要数小时或数天。 更改提示并生成新的响应可以在几分钟内完成。 相反,微调对于模型训练来说是一个不可逆的过程; 如果你使用了不正确的训练数据或出现了更好的基础模型,则需要重新启动微调工作。

其次,提示工程需要的机器学习概念知识要少得多,例如神经网络超参数优化、训练作业编排或数据整理。 微调通常需要经验丰富的机器学习工程师,而提示工程通常可以由没有机器学习经验的软件工程师完成。

第三,提示工程更适合快速增长的模型链策略,其中复杂的请求被分解为更小的组成请求,每个请求都可以分配给不同的LLM。 有时最好的“构成模型”是经过微调的模型。 但企业的大部分增值工作是(i)弄清楚如何分解问题,(ii)为每个组成部分编写提示,以及(iii)为每个部分确定最佳的现成模型 ; 这不是创建他们自己的微调模型。

随着时间的推移,提示工程的优势可能会扩大。 如今,提示工程需要冗长且昂贵的提示(因为每个提示中必须包含上下文)。 但我打赌每个token的成本会迅速下降,因为模型提供商领域的竞争变得更加激烈,并且提供商会弄清楚如何以更便宜的方式培训LLM。 如今,提示工程也受到最大提示大小的限制 - 但是,OpenAI 已经接受 GPT-4 每个提示 32K 令牌(平均英文文本约 40 页),而 Anthropic 的 Claude 接受 100K 令牌(约 15 页)。 我打赌在不久的将来会出现更大的上下文窗口。

  • 数据不再是曾经的护城河

由于LLM在产生人类可解释的推理方面变得更加出色,因此考虑人类如何使用数据进行推理以及这对LLM意味着什么是很有用的。 人类实际上并没有使用太多数据! 大多数时候,我们进行“零样本学习”,这意味着我们在回答问题时没有附带一组示例问答对。 提问者只是提出问题,我们根据逻辑、原则、启发式、偏见等进行回答。

这与几年前的LLM不同,后者只擅长几次学习,你需要在提示中包含一些示例问题答案对。 它与传统的机器学习有很大不同,传统的机器学习模型需要在数百、数千或数百万个问答对上进行训练。

我坚信,越来越多的LLM用例将是“零样本”。 LLM无需用户提供任何示例即可回答大多数问题。 他们需要以指令、策略、假设等形式进行及时的工程设计。例如,这篇文章使用 GPT-4 来审查代码中的安全漏洞; 该方法不需要有关过去易受攻击代码实例的数据。 拥有明确的指示、政策和假设将变得越来越重要,但拥有大量高质量、有标签的专有数据将变得不那么重要。


原文链接:Applying LLMs to Enterprise Data: Concepts, Concerns, and Hot-Takes

BimAnt翻译整理,转载请标明出处