大型语言模型(LLM)风靡全球,尤其是 OpenAI 的最新发展。LLMs 的魅力来自于其理解、解释和生成人类语言的能力,而这曾被认为是人类的专属领域。像 CoPilot 这样的工具正在迅速融入开发人员的日常生活,而以 ChatGPT 为动力的应用也正日益成为主流。
LLM 的流行还源于其对普通开发人员的可及性。随着许多开源模型的出现,每天都有新的科技初创公司推出某种基于 LLM 的问题解决方案。
数据被称为 “新石油”。在机器学习中,数据是用于训练、测试和验证模型的原材料。要创建准确、可靠和稳健的 LLM,高质量、多样化和具有代表性的数据必不可少。
建立自己的 LLM 可能具有挑战性,尤其是在收集和存储数据方面。处理大量非结构化数据、存储这些数据并管理访问权限,只是您可能面临的部分挑战。在本篇文章中,我们将探讨这些数据管理挑战。具体来说,我们将探讨
我们的目标是让您清楚地了解数据在LLM中的关键作用,让您掌握在自己的LLM项目中有效管理数据的知识。
首先,让我们对LLM有一个基本的了解。
在高层次上,LLM 的工作原理是将单词(或句子)转换为称为嵌入的数字表示。这些嵌入可以捕捉词的语义和词与词之间的关系,使模型能够理解语言。例如,LLM 可以了解到 “dog “和 “puppy “这两个词之间的关系,并将它们在数字空间中的位置靠得更近,而 “tree”(树)这个词则离得更远。
LLM 最关键的部分是神经网络,它是一种受人脑功能启发的计算模型。神经网络可以从训练数据中学习这些嵌入及其关系。与大多数机器学习应用一样,LLM 模型需要大量数据。通常情况下,用于模型训练的数据越多、质量越高,模型的准确性就越高,这意味着你需要一个管理 LLM 数据的好方法。
对于开发人员来说,幸运的是,目前有许多 LLM 的开源选项,其中有几种流行的选项可以用于商业用途,包括:
面对如此广泛的可选列表,选择合适的开源 LLM 模型可能很棘手。了解 LLM 模型所需的计算和内存资源非常重要。模型大小(例如,30 亿个输入参数与 70 亿个输入参数)会影响运行和演练模型所需的资源量。请根据您的能力考虑这一点。例如,有几个 DLite 模型可以专门在笔记本电脑上运行,而不需要高成本的云资源。
在研究每种 LLM 时,重要的是要注意模型是如何训练的,以及它一般面向哪种任务。这些区别也会影响您的选择。在规划 LLM 工作时,您需要筛选开源模型选项,了解每个模型的最佳优势,并预测每个模型需要使用的资源。
根据您需要 LLM 的应用或环境,您可以从现有的 LLM 开始,也可以选择从头开始训练 LLM。对于现有的 LLM,您可以原封不动地使用它,也可以使用能代表您所考虑的任务的其他数据对模型进行微调。
要选择最适合您需要的方法,就必须充分了解用于训练 LLM 的数据。
在训练 LLM 时,使用的数据通常是文本数据。然而,这些文本数据的性质可能千差万别,因此了解可能遇到的不同类型数据至关重要。一般来说,LLM 数据可分为两类:半结构化数据和非结构化数据。结构化数据,即以表格数据集表示的数据,不太可能用于 LLM。
半结构化数据以某种预定义的方式组织起来,并遵循一定的模型。这种组织方式允许对数据进行直接搜索和查询。就 LLM 而言,半结构化数据的一个例子可能是文本语料库,其中每个条目都与某些标签或元数据相关联。半结构化数据的例子包括
在这种情况下,LLM 可能会根据新闻文章来预测类别,根据评论文本来预测评分,或者根据社交媒体帖子的内容来预测帖子的情感。
另一方面,非结构化数据缺乏预定义的组织或模型。这种数据通常文字较多,还可能包含日期、数字和事实,因此处理和分析起来更加复杂。在LLM中,非结构化数据非常常见。非结构化数据的例子包括
由于没有明确的标签或组织标记,非结构化数据对于 LLM 训练来说更具挑战性。不过,它也能产生更通用的模型。例如,在大量书籍语料库中训练出来的模型可以学会生成逼真的散文,GPT-3 就是这种情况。
我们已经看到,数据是 LLM 的核心,但这些数据是如何从原始状态转变为 LLM 可以使用的格式的呢?让我们把注意力转移到所涉及的关键流程上来。
获取和处理 LLM 数据的基本要素在于数据管道和数据摄取的概念。
数据管道是原始、非结构化数据与经过全面训练的 LLM 之间的通道。它们能确保数据得到正确的收集、处理和准备,使其为 LLM 建立过程中的训练和验证阶段做好准备。
数据管道是一套将数据从源头传输到目的地并进行存储和分析的流程。通常包括
当我们谈到数据摄取时,我们指的是这些管道流程的前端,处理数据的获取和使用准备。
虽然 LLM 的数据管道可能与数据团队使用的大多数管道大致重叠,但 LLM 在管理数据方面引入了某些独特的挑战。例如
LLM 的数据转换过程包括与自然语言处理(NLP)类似的技术:
可以想象,将所有这些步骤结合起来,从各种来源摄取海量数据,会形成一个极其复杂和庞大的数据管道。为了帮助您完成任务,您需要好的工具和资源。
数据工程领域有几款非常流行的工具可以帮助您完成复杂的数据摄取过程,这些过程构成了数据管道的一部分。如果您正在构建自己的 LLM,那么大部分开发时间都将用于收集、清理和存储用于训练的数据。 帮助您管理 LLM 数据的工具可分为以下几类:
让我们逐一详细了解一下。
Apache Airflow是一个流行的开源平台,用于以编程方式编写、调度和监控数据工作流。通过它基于Python 的编码界面,您可以创建复杂的数据管道,该界面用途广泛且易于使用。Airflow 中的任务是以有向无环图(DAG)的形式组织的,其中每个节点代表一个任务,边代表任务之间的依赖关系。
Airflow 广泛用于数据提取、转换和加载操作,是数据摄取过程中的重要工具。Linode 的Marketplace 提供Apache Airflow,便于设置和使用。
除了使用 Airflow 等工具进行管道管理外,您还需要能够可靠地大规模运行的充足计算资源。当您从多个来源摄取大量文本数据并进行下游处理时,您的任务将需要能够按需扩展的计算资源–最好是横向扩展。
Kubernetes 是可扩展计算的热门选择之一。Kubernetes 具有灵活性,并能与包括 Airflow 在内的许多工具很好地集成。通过利用托管的 Kubernetes,您可以快速、简单地启动灵活的计算资源。
数据库是数据采集过程中不可或缺的部分,是采集数据经过清理和转换后的主要目的地。可以使用各种类型的数据库。使用哪种类型取决于数据的性质和使用案例的具体要求:
作为数据库存储 LLM 数据的替代方法,一些工程师喜欢使用分布式文件系统。例如AWS S3 或Hadoop。虽然分布式文件系统是存储大量非结构化数据的不错选择,但它需要额外的精力来组织和管理大型数据集。
对于来自Marketplace 的存储选项,您可以找到托管 PostgreSQL和托管 MySQL。这两个选项都很容易设置并插入到 LLM 数据管道中。
虽然小型 LLM 可以使用较少的数据进行训练,也可以使用较小的数据库(如单个 PostgreSQL 节点),但较重的用例需要处理大量数据。在这种情况下,您可能需要一个PostgreSQL 集群来支持大量数据,为 LLM 管理数据,并可靠地提供数据。
在为LLM选择管理数据的数据库时,要考虑数据的性质和案例的要求。您采集的数据类型将决定哪种数据库最适合您的需求。您的用例要求(如性能、可用性和可扩展性)也是重要的考虑因素。
有效、准确地摄取数据对于 LLM 的成功至关重要。通过适当使用这些工具,您可以为您的管道建立可靠、高效的数据摄取流程,处理大量数据,确保您的 LLM 拥有学习和提供准确结果所需的内容。
LLM如雨后春笋般涌现,为科技领域打开了一扇新的大门。开发人员很容易获得这项技术,但他们管理 LLM 数据和利用数据来培训新的 LLM 或微调现有 LLM 的能力将决定他们的长期成功。
如果您正在开始一个 LLM 项目,那么在进入深水区之前,您需要了解一些基本知识。为了达到最佳效果,LLM 需要摄取大量非结构化数据,这一过程包括从源数据中提取、预处理、转换和导入。执行这些任务需要 Airflow 和 Kubernetes 等工具进行管道协调,并需要可扩展的计算资源。此外,LLM 培训常用数据的非结构化性质需要 PostgreSQL 等数据存储选项,这些选项可以通过集群可靠地大规模使用。