LLMOps:AIGC时代的AI应用开发平台

来源:金融IT那些事儿

写在前面:这两天参加了A2M大会,主题是最近大热的AIGC,感受到了产业界对于AIGC的重视,很多公司都在尝试搭建大模型,并正在使用大模型来构建自己的AI应用。特别是其中何勉老师演讲的内容让我关注到了AIGC对于产品交互、应用架构的颠覆。目前业界已经出现了LangChain、semantic kernel这样的基于大模型的AI应用开发框架,此类框架也被称作LLMOps。所以此次通过这篇文章来介绍一下LLMOps。原文是英文的,发表在Weights & Biases网站,我进行了翻译。以下是原文链接:

Understanding LLMOps: Large Language Model Operations | Articles – Weights & Biases (wandb.ai)

理解LLMOps:大语言模型操作

作者:Leonie,翻译:Tony

本文探讨了大型语言模型(LLM)如何改变我们构建AI驱动的产品以及机器学习操作(MLOps)的前景。

图 很抱歉,我们无法像这样运输。它太大了... -作者绘制的生产中的大型语言模型(LLM)图像。

似乎OpenAI的ChatGPT的发布已经打开了“生产中的大型语言模型(LLM)的潘多拉魔盒”,不仅你的邻居现在会和你闲聊人工智能,而且机器学习(ML)社区正在谈论另一个新术语:“LLMOps”。

LLMs正在改变我们构建和维护AI驱动产品的方式。这将导致新的工具集和最佳实践用于LLM驱动应用程序的生命周期。

本文首先将解释新出现的术语“LLMOps”及其背景。我们将讨论如何使用LLM与传统ML模型构建AI产品有所不同。基于这些差异,我们将了解MLOps与LLMOps的区别。最后,我们将讨论在不久的将来我们可以期望在LLMOps领域看到哪些发展。

01 什么是LLMOps?

LLMOps是“Large Language Model Operations”的缩写。简单来说,LLMOps是用于管理LLM驱动应用程序的开发、部署和维护的一组新工具和最佳实践,可以看作是LLMs的MLOps。

当我们说“LLMOps是LLMs的MLOps”时,我们需要先定义LLMs和MLOps这两个术语:

  • LLMs(大型语言模型)是可以生成人类语言输出的深度学习模型(因此被称为语言模型)。这些模型具有数十亿个参数,经过数十亿个单词的训练(因此被称为大型语言模型)。

  • MLOps(机器学习运营)是一组工具和最佳实践,用于管理ML驱动的应用程序的生命周期。

了解了这些,让我们进一步了解一下。

02 为什么LLMOps会兴起?

早期的LLMs,如BERT和GPT-2,自2018年以来就已经存在了。然而,现在——几乎五年后——LLMOps的概念才经历了一个流行的崛起。主要原因是LLMs在2022年12月发布了ChatGPT,引起了媒体的极大关注。

图 LLM的出现(图片由作者创作,灵感来源于[1])

自那时起,我们看到了许多不同的应用程序利用LLM的强大功能,例如:

  • 聊天机器人,从著名的ChatGPT到更私人和个性化的机器人(例如,Michelle Huang与她的童年自己聊天)。

  • 写作助手,用于编辑或摘要(例如,Notion AI)以及专门用于文案撰写(例如,Jaspercopy.ai)或合同编写(例如,lexion)。

  • 编程助手,从编写和调试代码(例如,GitHub     Copilot)到测试代码(例如,Codium AI)再到查找安全威胁(例如,Socket AI)。

随着越来越多的人开发和推出LLM驱动的应用程序,人们开始分享他们的经验:

“使用LLM很容易制作出酷炫的东西,但是要使其达到生产级别却十分困难。”- Chip Huyen[2]

很明显,建立生产级别的LLM驱动应用程序具有其自己的一系列挑战,不同于使用传统ML模型构建AI产品。为了解决这些挑战,我们需要开发新的工具和最佳实践来管理LLM应用程序的生命周期。因此,我们看到越来越多的人使用“LLMOps”这个术语。

LLMOps所涉及的步骤在某些方面类似于MLOps。然而,构建基于LLM的应用程序的步骤由于基础模型的出现而有所不同。与从头开始训练LLMs不同,重点是将预训练的LLMs适应下游任务。

已经超过一年了,Andrej Karpathy [3]描述了未来构建人工智能产品的过程会如何改变:

但最重要的趋势是,由于微调,特别是基础模型(如GPT)的出现,从头开始在某些目标任务上训练神经网络的整个设置正在迅速过时。这些基础模型仅由少数具有实质性计算资源的机构进行训练,大多数应用程序通过对网络的部分轻量级微调、提示工程或数据或模型蒸馏成更小的特定推理网络的可选步骤来实现。 [...] - Andrej Karpathy [3]

第一次阅读此引用可能会让人不知所措。但它准确地概括了正在进行的一切,因此让我们在以下子节中逐步解释。

步骤1:选择基础模型

基础模型是在大量数据上预先训练的LLM,可用于各种下游任务。由于从头开始训练基础模型很复杂、耗时、极其昂贵,因此只有少数机构拥有所需的培训资源[3]。

仅为了说明问题:根据2020年Lambda Labs的一项研究,使用Tesla V100云实例训练OpenAI的GPT-3(具有1750亿个参数)需要355年和460万美元。

人工智能目前正经历社区称之为其“Linux时刻”的阶段。目前,开发人员必须根据性能、成本、易用性和灵活性之间的权衡选择两种类型的基础模型:专有模型或开源模型。

图 专有和开源基础模型(图片作者,受Fiddler.ai启发)

专有模型是由拥有大型专家团队和庞大人工智能预算的公司拥有的闭源基础模型。它们通常比开源模型更大,性能更好。它们也是现成的,通常比较容易使用。

专有模型的主要缺点是其昂贵的API(应用程序接口)。此外,闭源基础模型为开发人员提供的适应性较少或没有。

专有模型提供商的示例包括:

  • OpenAI(GPT-3、GPT-4)

  • co:here

  • AI21 Labs(Jurassic-2)

  • Anthropic(Claude)

开源模型通常是作为社区中心在HuggingFace上组织和托管的。通常,它们是比专有模型能力更低的较小模型。但好处是,它们比专有模型更具成本效益,并为开发人员提供了更多的灵活性。

开源模型的示例包括:

  • Stable Diffusion by Stability AI

  • BLOOM by BigScience

  • LLaMA或OPT by Meta AI

  • Flan-T5 by Google

  • GPT-JGPT-NeoPythia by Eleuther AI

步骤2:适应下游任务

一旦您选择了基础模型,就可以通过其 API 访问 LLM。如果您习惯使用其他 API,那么使用 LLM API 最初会感到有些奇怪,因为不清楚什么样的输入会导致什么样的输出。对于任何文本提示,API 都会返回一个文本完成,试图匹配您的模式。

这是一个使用 OpenAI API 的示例。您将 API 输入作为提示,例如,prompt="Correct this to standard English:\n\nShe no went to the market."。

API 将输出一个响应,其中包含完成的响应 response['choices'][0]['text'] = "She did not go to the market."。

主要挑战是 LLM 并非万能的,尽管它们很强大,因此关键问题是:如何让 LLM 给出您想要的输出?

LLM in production survey [4]中,受访者提到的一个问题是模型准确性和幻觉。这意味着从 LLM API 获取您期望的格式的输出可能需要一些迭代,并且如果它们没有所需的特定知识,LLMs 可能会产生幻觉。为了解决这些问题,您可以通过以下方式使基础模型适应下游任务:

  • 提示工程 [2、3、5] 是一种调整输入以使输出符合您期望的技术。您可以使用不同的技巧来改进提示(请参见OpenAI Cookbook)。一种方法是提供一些期望输出格式的示例。这类似于零样本或少样本学习环境 [5]。像LangChain     或 HoneyHive 这样的工具已经出现,以帮助您管理和版本化您的提示模板 [1]。

图 提示工程(作者根据 Chip Huyen [c] 的灵感创作的图像)

  • 精调预训练模型 [2、3、5] 是机器学习中已知的一种技术。它可以帮助提高模型在特定任务上的性能。尽管这将增加训练工作量,但可以减少推理成本。LLM API 的成本取决于输入和输出序列长度。因此,减少输入标记的数量会降低     API 成本,因为您不再需要在提示中提供示例 [2]。

图 精调 LLM(作者根据 Chip Huyen [2] 的灵感创作的图像)

  • 外部数据:基础模型经常缺乏上下文信息(例如,无法访问某些特定文档或电子邮件),并且可能很快过时(例如,GPT-4 是在 2021 年 9 月之前 的数据上进行训练的)。因为如果它们没有足够的信息,LLMs 可能会产生幻觉,我们需要能够让它们访问相关的外部数据。已经有一些工具,例如 LlamaIndex(GPT Index)LangChain     或 DUST 可以作为中央接口连接(“链接”)LLMs 到其他代理和外部数据 [1]。
  • 嵌入:另一种方法是从 LLM APIs 中提取嵌入形式的信息(例如电影摘要或产品描述)并在其上构建应用程序(例如搜索、比较或推荐)。如果     np.array 不足以存储您的嵌入以进行长期记忆,您可以使用向量数据库,例如PineconeWeaviate     或 Milvus [1]。
  • 替代品:由于这个领域正在快速发展,有许多其他方法可以利用 AI 产品中的 LLMs。一些例子是 instruction tuning/prompt     tuning 和模型蒸馏 [2、3]。

步骤3:评估

在经典的MLOps中,使用一个指示模型性能的度量标准对模型在保留验证集[5]上进行验证。但是,如何评估LLM的性能?如何确定回复是好还是坏?目前,组织似乎正在进行A/B测试[5]。

为了帮助评估LLM,出现了像HoneyHive或HumanLoop这样的工具。

步骤4:部署和监控

LLM的完成情况在发布之间可能会发生巨大变化[2]。例如,OpenAI已更新其模型以减轻不当内容的生成,例如仇恨言论。因此,在Twitter上搜索短语“作为AI语言模型”现在会显示无数个机器人。

这展示了构建基于LLM的应用程序需要监控底层API模型的变化。

已经出现了监控LLM的工具,例如[Whylabs](https://whylabs.ai/)或[HumanLoop](https://humanloop.com/)。

03 LLMOps与MLOps有何不同?

MLOps和LLMOps之间的差异是由于我们如何使用传统ML模型和LLM构建AI产品的差异引起的。这些差异主要影响数据管理,实验,评估,成本和延迟。

数据管理

在经典的MLOps中,我们习惯于需要大量数据的ML模型。从头开始训练神经网络需要大量标记数据,即使是微调预训练模型,也需要至少几百个样本。虽然数据清理对ML开发过程至关重要,但我们知道并接受大型数据集存在缺陷。

在LLMOps中,微调类似于MLOps。但是Prompt工程是零射或少量射学习设置。这意味着我们只有少量但是经过精心挑选的样本[5]。

实验

在MLOps中,无论是从头开始训练模型还是微调预训练模型,实验看起来都很相似。在这两种情况下,您将跟踪输入,例如模型架构、超参数和数据增强,以及输出,例如指标。

但在LLMOps中,问题是进行Prompt工程还是进行微调[2, 5]。虽然在LLMOps中微调看起来与MLOps相似,但Prompt工程需要不同的实验设置,包括Prompt的管理。

评估

在经典的MLOps中,模型的性能是在一个保留的验证集[5]上使用评估指标进行评估的。由于LLMs的性能更难以评估,目前组织似乎正在使用A/B测试[5]。

成本

传统的MLOps的成本通常在于数据收集和模型训练,而LLMOps的成本则在于推理[2]。尽管我们可以预计在实验过程中使用昂贵的API会产生一些成本[5],但Chip Huyen[2]表明,长提示的成本在于推理。

延迟

LLM生产调查[4]中受访者提到的另一个问题是延迟。LLM完成长度显着影响延迟[2]。尽管MLOps中也必须考虑延迟问题,但在LLMOps中更为突出,因为这对于开发中的实验速度[5]和生产中的用户体验都是一个重大问题。

04 LLMOps的未来

LLMOps是一个新兴领域。由于这个领域的快速发展,做出任何预测都很困难。甚至不确定“LLMOps”这个术语是否会长期存在。我们只知道我们将看到许多LLM的新用例以及管理LLM生命周期的工具和最佳实践。

人工智能领域正在快速发展,可能会使我们现在写的任何内容在一个月内就过时了。我们仍处于将LLM驱动的应用程序引入生产的早期阶段。有许多问题我们无法回答,只有时间才能告诉我们事情会如何发展:

  • “LLMOps”这个术语是否会长期存在?-在MLOps的光环下,LLMOps会如何发展?它们会融合在一起,还是会成为独立的操作集?-人工智能的“Linux时刻”会如何发展?

我们可以肯定地说,我们预计将很快看到许多发展和新的工具和最佳实践出现。此外,我们已经看到为基础模型降低成本和延迟的努力正在进行中[2]。这绝对是有趣的时代!

05 总结

自从OpenAI的ChatGPT发布以来,LLM目前是人工智能领域中的热门话题。这些深度学习模型可以生成人类语言的输出,使它们成为任务,如对话AI、写作助手和编程助手的强大工具。

然而,将LLM驱动的应用程序引入生产中提出了其自己的一套挑战,这导致了一个新术语的出现,“LLMOps”。它指的是用于管理LLM驱动的应用程序的生命周期的一组工具和最佳实践,包括开发、部署和维护。

LLMOps可以看作是MLOps的一个子类别。然而,构建LLM驱动的应用程序所涉及的步骤与构建具有传统ML模型的应用程序的步骤不同。

重点不是从头开始训练LLM,而是适应下游任务的预训练LLM。这涉及到选择基础模型,使用下游任务中的LLM,评估它们,以及部署和监控模型。

虽然LLMOps仍然是一个相对较新的领域,但随着LLM在人工智能行业中变得更加普遍,它预计将继续发展和演变。总体而言,LLM和LLMOps的兴起代表了构建和维护AI驱动产品的重大转变。

关于LLMOps的推荐阅读

1. W&B's LLM Whitepaper
Current Best Practices for Training LLMs from Scratch
2. Setting Up GPT-4 In Python Using the OpenAI API
Getting set up and running GPT-4 on your machine in Python using the OpenAI API.

参考资料

[1] D. Hershey and D. Oppenheimer (2023). DevTools for language models-predicting the future (accessed April 14th, 2023)
[2] C. Huyen (2023). Building LLM applications for production (accessed April 16th, 2023)
[3] A. Karpathy (2022). Deep Neural Nets: 33 years ago and 33 years from now (accessed April 17th, 2023).
[4] MLOps Community (2023). LLM in production responses (accessed April 19th, 2023)
[5] S. Shankar (2023). Twitter Thread (accessed April 14th, 2023)

请使用浏览器的分享功能分享到微信等