什么是“LLMOps”?

本篇文章转载、翻译自Weights&Biases’s LLMOps的Introduction并做部分修改

本文探讨了大型语言模型(LLM)是如何改变我们构建人工智能驱动的产品(AI-Native Product)的方式以及机器学习运营(MLOps)的景观。


“Sorry, we can’t ship it like this. It’s just too large…” - Large Language models (LLMs) in production

What is LLMOps?

术语LLMOps是指大型语言模型操作。简短的定义是,LLMOps是针对LLM的MLOps。这意味着LLMOps本质上是一套新的工具和最佳实践,用于管理由LLM驱动的应用程序的生命周期,包括开发、部署和维护。

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

  • LLMs(大型语言模型)是可以产生人类语言输出的深度学习模型(因此被称为语言模型)。这些模型有数十亿个参数,并在数十亿个单词上进行训练(因此被称为大型语言模型)。
  • MLOps(机器学习操作)是一套工具和最佳实践,用于管理由ML驱动的应用程序的生命周期。

Why the Rise of LLMOps?

从ChatGPT出现开始,我们看到了许多利用LLMs力量的不同应用,比如说:

  • 聊天机器人,从著名的ChatGPT到更亲密和个人的聊天机器人(例如,黄美玲与她童年的自己聊天)、
  • 用于编辑或总结的写作助手(如Notion AI)到用于文案写作(如Jasper和copy.ai)或承包的专门助手(如lexion)、
  • 编程助手,从编写和调试代码(如GitHub Copilot),到测试代码(如Codium AI),再到寻找安全威胁(如Socket AI)

随着许多人开发并将由LLM驱动的应用程序投入生产,人们正在分享他们的经验:
“用LLM做一些很酷的东西很容易,但要用它们做一些适合生产的东西却很难。”。

很明显,构建可用于生产的由LLM驱动的应用有其自身的挑战,与用经典ML模型构建AI产品不同。为了应对这些挑战,我们需要开发新的工具和最佳实践来管理LLM应用程序的生命周期。因此,我们看到 "LLMOps "一词的使用越来越多。

What Steps are Involved in LLMOps?

LLMOps涉及的步骤在某些方面与MLOps相似。然而,由于基础模型的出现,构建一个由LLM驱动的应用程序的步骤有所不同。与其说是从头开始训练LLM,不如说是将预先训练好的LLM适应于下游的任务。

早在一年多以前,Andrej Karpathy[3]就已经描述了构建人工智能产品的过程在未来将如何变化:

但最重要的趋势是,在一些目标任务上从头开始训练神经网络的整个设置,由于微调而迅速变得过时,特别是随着GPT等基础模型的出现。这些基础模型仅由少数拥有大量计算资源的机构进行训练,大多数应用是通过对部分网络的轻量级微调提示工程或将数据/模型提炼成更小的、特殊用途推理网络的可选步骤来实现。- Andrej Karpathy [3] 。

这句话在你第一次读的时候可能会让人不知所措。但是它准确地总结了所有的事情,所以让我们在下面的小节中一步一步地解读它。

Step 1: Selection of a foundation model

基础模型是在大量数据上预先训练的LLM,可用于广泛的下游任务。由于从头开始训练基础模型是复杂的、耗时的和极其昂贵的,只有少数机构拥有必要的训练资源[3]。

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

人工智能目前正在经历社区所称的 “Linux时刻”。目前,开发者必须在两种基础模型之间进行选择,基于性能、成本、易用性和灵活性的权衡:专有模式或开源模式。


Proprietary and open-source foundation models (Image by the author, inspired by Fiddler.ai)

专有模型是闭源基础模型,由拥有大型专家团队和大额人工智能预算的公司拥有。它们通常比开源模型更大,并且有更好的性能。它们也是现成的,通常相当容易使用。
专利模型的主要缺点是它们昂贵的API(应用程序接口)。此外,闭源基础模型为开发者提供较少或没有灵活性的适应性。
专有模型供应商的例子有:

开源模型通常在HuggingFace上组织和托管,作为一个社区中心。通常,它们是较小的模型,能力比专有模型低。但从正面看,它们比专有模型更具成本效益,并为开发人员提供更多灵活性。
开源模式的例子有:

Step 2: Adaptation to downstream tasks

一旦你选择了你的基础模型,你就可以通过其API访问LLM。如果你习惯于使用其他API,那么使用LLM的API最初会感觉有点奇怪,因为事先并不清楚什么输入会导致什么输出。给予任何文本提示,API将返回一个文本完成,试图与你的模式相匹配。
下面是一个关于如何使用OpenAI API的例子。你给API输入一个提示,e.g. prompt="把这个改成标准英语:\n\nShe no went to the market"。

import openai


openai.api_key = ...


response = openai.Completion.create(
	engine = "text-davinci-003",
	prompt = "Correct this to standard English:\n\nShe no went to the market.",
	# ...
	)

The main challenge is that LLMs aren’t almighty despite being powerful and thus, the key question is: How do you get an LLM to give the output you want?

在生产中的LLM调查[4]中,受访者提到的一个担忧是模型的准确性幻觉。这意味着以你想要的格式从LLM API获得输出可能需要一些迭代,而且,如果LLM没有所需的特定知识,他们也会产生幻觉。为了解决这些问题,你可以通过以下方式使基础模型适应下游的任务:

PromptEngineering 是一种调整输入的技术,使输出符合你的期望。你可以使用不同的技巧来改进你的提示(见OpenAI Cookbook)。一种方法是提供一些预期输出格式的例子。这类似于零次或少数次的学习设置[5]。像LangChain或HoneyHive这样的工具已经出现了,可以帮助你管理和版本你的提示模板。

FinueTuning 训练的模型是ML中的一种已知技术。它可以帮助提高你的模型在特定任务上的性能。虽然这将增加训练的工作量,但它可以降低推理的成本。LLM API的成本取决于输入和输出序列的长度。因此,减少输入令牌的数量,减少API的成本,因为你不必再在提示中提供例子

ExternalData/Embedding:基础模型往往缺乏上下文信息(例如,访问一些特定的文件或电子邮件),并可能迅速过时(例如,GPT-4是在2021年9月之前的数据上训练的)。因为LLM们如果没有足够的信息就会产生幻觉,我们需要能够让他们获得相关的外部数据。目前已经有一些工具,如LlamaIndex(GPT Index)、LangChain或DUST,可以作为中心接口,将LLM与其他代理和外部数据连接(“连锁”)。

Step 3: Evaluation

在经典的MLOps中,ML模型是在一个保留的验证集上进行验证的,用一个指标来表示模型的性能。但是你如何评估LLM的性能?你如何决定一个反应是好是坏?目前,似乎各组织正在对其模型进行A/B测试。

:sunny: To help evaluate LLMs, tools like HoneyHive or HumanLoop have emerged.

Step 4: Deployment and Monitoring

LLMs的完成度在不同的版本之间会发生巨大的变化[2]。例如,OpenAI已经更新了它的模型,以减轻不适当内容的产生,例如仇恨言论。因此,在Twitter上搜索 "作为人工智能语言模型 "这一短语,现在可以看到无数的机器人。

这表明,构建以LLM为动力的应用程序需要监测底层API模型的变化。已经有一些监测LLM的工具出现了,比如Whylabs或HumanLoop。

The Future of LLMOps

LLMOps是一个新兴领域。随着这个领域的发展速度,做出任何预测都是困难的。甚至不确定 "LLMOps "这个词是否会继续存在。我们只能确定,我们将看到很多新的LLM使用案例,以及管理LLM生命周期的工具和最佳实践。

人工智能领域正在迅速发展,有可能使我们现在写的任何东西在一个月内过时。我们仍然处于将由LLM驱动的应用程序推向生产的早期阶段。有许多问题我们还没有答案,只有时间能告诉我们事情会如何发展:

  • LLMOps "一词是否会继续存在?
  • 鉴于MLOps,LLMOps将如何发展?它们会一起蜕变,还是会成为独立的业务集?
  • AI的 "Linux时刻 "将如何发展?

我们可以肯定地说,我们期望看到许多发展和新的工具和最佳实践很快出现。另外,我们已经看到了为降低基础模型的成本和延迟而做出的努力[2]。这绝对是一个有趣的时代!

Summary

自从OpenAI的ChatGPT发布以来,LLMs目前是人工智能领域的一个热门话题。这些深度学习模型可以生成人类语言的输出,使其成为对话式人工智能、写作助手和编程助手等任务的有力工具。

然而,将由LLM驱动的应用程序带到生产中去有其自身的挑战,这导致了一个新术语 "LLMOps "的出现。它指的是用于管理LLM驱动的应用程序的生命周期的一套工具和最佳做法,包括开发、部署和维护

LLMOps可以被看作是MLOps的一个子类别。然而,建立一个由LLM驱动的应用所涉及的步骤与建立经典ML模型的应用不同。

与其说是从头开始训练LLM,不如说是将预先训练好的LLM调整到下游任务中。这涉及到选择一个基础模型,在下游任务中使用LLM,对其进行评估,以及部署和监测该模型。

虽然LLMOps仍然是一个相对较新的领域,但随着LLMs在人工智能行业的普及,预计它将继续发展和演变。总的来说,LLMs和LLMOps的兴起代表了构建和维护AI-Native的产品的一个重大转变。

References

[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)