大语言模型兵马未动,数据准备粮草先行

​从OpenAI正式发布ChatGPT开始,大型语言模型(LLM)就变得风靡一时。对业界和吃瓜群众来说,这种技术最大的吸引力来自于理解、解释和生成人类语言的能力,毕竟这曾被认为是人类独有的技能。类似CoPilot这样的工具正在迅速融入开发者的日常工作,而由ChatGPT驱动的应用程序也开始变得日益主流。

大语言模型的流行,另一方面也要归功于普通开发者也能轻松用上这样的技术。随着大量开源模型陆续涌现,每天都有新的科技初创公司提出基于大语言模型的解决方案。

​然而,就算到了AI时代,数据依然是一种“新的石油”。在机器学习领域,数据充当了训练、测试和验证模型的原材料。高质量、多样化、有代表性的数据对于创建准确、可靠和健壮的大语言模型至关重要。

我们在构建自己的大语言模型时可能会面临挑战,特别是在收集和存储数据这方面。大量非结构化数据如何处理,以及该如何存储和管理对数据的访问,这些可能只是各种挑战中的一小部分。

本文将探讨与数据管理有关的挑战,借此让读者清楚了解数据在大语言模型中的关键作用,并在此基础上,为读者在自己的大语言模型项目中有效管理数据提供所需知识。

首先,一起看看有关大语言模型的基础知识吧。

大语言模型的工作原理以及现有模型的选择

从较高层次来看,大语言模型的工作原理很简单:将单词(或句子)转换为一种称为嵌入(Embedding)的数值表达。这些“嵌入”捕获了单词间的语义含义和关系,模型就是借此理解语言的。例如,大语言模型会学习到“狗”和“小狗”这两个词是相关的,并且会将它们放在数值空间中更接近的位置,而“树”这个词则会较远。

​大语言模型最关键的部分是神经网络,这是一类受到人脑功能启发创建出的计算模型。神经网络可以从训练数据中学习这些嵌入及其相互之间的关系。与大多数机器学习应用一样,大语言模型需要大量数据。通常情况下,对于模型训练而言,数据量越大、质量越高,模型的准确性就越高,这意味着我们需要一种良好的方法来管理大语言模型用到的数据。

权衡现有模型时需要考虑的因素

幸运的是,对于开发者而言,目前有很多开源的大语言模型可供选择,其中不乏一些流行的,甚至可商用的,例如Databricks提供的Dolly、Meta提供的Open LLaMA等。

面对如此广泛的选择,想要找到合适的开源大语言模型可能就有些棘手了。我们必须了解大语言模型所需的计算和内存资源。模型的大小(例如输入参数为30亿与70亿之间的模型)会影响运行和使用模型所需的资源量。因此必须考虑选择能与自己能力相匹配的模型。例如,一些DLite模型专门设计为能在笔记本电脑上运行,而不需要高成本的云资源。

在研究每个大语言模型时,一定要注意该模型是如何训练的,以及通常适用于什么样的任务。这些区别也会影响我们的选择。此时的规划工作包括:筛选开源模型,了解每个模型的最佳适用场景,并预测自己将需要为每个模型使用的资源。

根据需要大语言模型的应用程序或环境,我们可以选择从现有大语言模型开始,也可以选择从零开始训练一个自己的大语言模型。对于现成的大语言模型,我们可以直接使用它,或者也可以使用额外的数据对模型进行微调,使其更符合自己所要处理的任务特点。

为了根据需求选择最佳方法,还要求我们对用于训练大语言模型的数据有深入了解。

大语言模型中使用的数据类型

​当涉及到大语言模型的训练时,通常使用的数据是文本数据。然而,这些文本数据的性质可能有很大差异,了解可能遇到的不同类型数据是很重要的。一般来说,大语言模型用到的数据可分为两种类型:半结构化数据和非结构化数据。结构化数据(即以表格数据集形式表示的数据)通常不太可能用在大语言模型的训练工作中。

· 半结构化数据

​半结构化数据会以某种预定义的方式组织,并遵循某种模型。这种组织方式使得数据的搜索和查询变得相当简单直接。在大语言模型领域,半结构化数据的类型有很多,例如文本语料库,其中的每一项都与某些标签或元数据相关联。半结构化数据的其他例子包括:

  • 新闻文章,每篇文章都与一个类别(如体育、政治或技术)相关联。
  • 用户评论,每条评论都与评分和产品信息相关联。
  • 社交媒体帖子,每个帖子都与发布者、发布时间和其他元数据相关联。

在这些情况下,大语言模型可能会根据新闻文章预测类别,根据评论文本预测评分,或根据内容预测社交媒体帖子蕴含的情绪。

· 非结构化数据

另一方面,非结构化数据缺乏预定义的组织或模型。这些数据通常以文本为主,并且可能包含日期、数字和事实,这使得它更加复杂,难以处理和分析。在大语言模型领域,非结构化数据非常普遍,例如:

  • 书籍、文章和其他长篇内容
  • 从采访或播客中提取的文本记录
  • 网页或文档

由于缺乏明确的标签或组织标记,非结构化数据对大语言模型的训练更具挑战性。然而,这类数据也可以产生更通用的模型。例如,用大量书籍语料库训练出的模型可能会学会生成逼真的散文,就像GPT-3那样。

可想而知,数据是大语言模型的核心。但这些数据如何从原始状态转换为大语言模型可以使用的格式?让我们将焦点转移到其中涉及的关键过程上。

大语言模型的数据管道和数据摄入

用于获取和处理大语言模型数据的基本构件在于数据管道(Data pipeline)和数据摄入(Data ingestion)的概念。

1.数据管道是什么?

数据管道在原始的非结构化数据与完全训练好的大语言模型之间形成了一个通道,借此确保数据被正确地收集、处理和准备,使其能够在大语言模型构建过程的训练和验证阶段顺利使用。

数据管道是一组流程,可将数据从源头移动到一个可以存储和分析的目的地。通常情况下,其中包括:

  • 数据提取:从源头提取数据,这个源头可以是数据库、数据仓库,甚至外部API。
  • 数据转换:原始数据需要经过清洗和转换,以便转换为适合分析的格式。转换包括处理缺失值、纠正不一致的数据、转换数据类型或对类别变量进行独热编码(One-hot encoding)。
  • 数据加载:转换后的数据被加载到存储系统(例如数据库或数据仓库)。这些数据随后可以立即用于机器学习模型中。

当谈论数据摄入时,我们指的是这些管道过程的前端,即数据的获取和为后续使用所进行的准备。

2.大语言模型的数据管道是什么样子的?

虽然大语言模型的数据管道在一般情况下可能与数据团队使用的大多数管道有所相似,但大语言模型为管理的数据提出了一些独特的挑战。例如:

  • 数据提取:语言模型的数据提取通常更复杂、多样化且计算密集。由于数据来源可能是网站、书籍、文本记录或社交媒体,每个来源都有自己的细微差别,需要独特的方法。
  • 数据转换:由于大语言模型的数据来源范围非常广泛,每种类型数据的每个转换步骤都将不同,需要独特的逻辑将数据处理成大语言模型可以用于训练的更标准化的格式。
  • 数据加载:在许多情况下,数据加载的最后一步可能需要使用非常规的数据存储技术。非结构化文本数据可能需要使用NoSQL数据库,而不像很多数据管道那样使用关系型数据存储。

大语言模型的数据转换过程包括了与自然语言处理(NLP)中类似的技术:

  • 词元化:将文本分解为单个单词或词元(Token)。
  • 停用词去除:消除常用词如“and”、“the”和“is”。然而,根据大语言模型所训练任务的不同,有时候这类停用词可能会被保留,这可能是为了保留重要的句法和语义信息。
  • 词形还原:将单词减少到其基本形式或词根形式。

可想而知,将所有这些步骤结合起来,从各种来源摄取海量数据,可能会导致一个非常复杂且庞大的数据管道。为了顺利完成任务,我们需要适合的工具和资源。

数据摄入的常见工具

数据工程领域有几个极其流行的工具可以帮助我们处理构成数据管道的一部分复杂数据摄入过程。如果正在构建自己的大语言模型,我们的大部分开发时间将用于收集、清理和存储用于训练的数据。那些能够帮助我们管理大语言模型数据的工具可以按以下方式加以分类:

  1. 管道编排:用于监视和管理数据管道中过程的平台。
  2. 计算:处理大规模数据所用的资源。
  3. 存储:用于存储有效大语言模型训练所需的大量数据的数据库。

让我们详细看看这三类工具。

1.管道编排

​Apache Airflow是一个流行的开源平台,可用于以编程方式编写、调度和监视数据工作流。它可以帮助我们使用基于Python的编程接口创建复杂数据管道,这种接口不仅功能丰富,而且易于使用。Airflow中的任务可以组织成有向无环图(DAG),其中每个节点代表一个任务,边表示任务之间的依赖关系。

Airflow已被广泛用于数据提取、转换和加载操作,它已经成为数据摄入过程中的宝贵工具。Linode Marketplace提供了Apache Airflow,用户可以借此通过简单的设置快速上手使用。

2.计算

除了使用诸如Airflow之类的工具进行管道管理,我们还需要能够可靠地运行大规模处理所需的计算资源。随着摄入大量文本数据并从许多来源进行下游处理,我们的任务将需要能够根据需求扩展计算资源,最好是以水平的方式进行扩展。


Kubernetes是一种流行的可扩展计算选项。Kubernetes带来了灵活性,能与许多工具(包括Airflow)很好地集成。通过利用托管的Kubernetes,我们可以快速、简单地启动灵活的计算资源。

3.存储

数据库对于数据摄入过程至关重要,它可充当经过清理和转换后摄入数据的主要目的地。我们可以采用各种类型的数据库。具体使用哪种类型,这取决于数据的性质和用例的具体要求:

  • 关系型数据库用表格结构来存储和表示数据。它适用于具有清晰关系和数据完整性至关重要的数据。尽管我们的大语言模型将依赖于非结构化数据,但像PostgreSQL这样的关系型数据库也可以处理非结构化数据类型。
  • NoSQL数据库:NoSQL数据库包括面向文档的数据库,它不使用表格结构来存储数据,适用于处理大量非结构化数据,可提供高性能、高可用性和易扩展性。​

作为大语言模型数据存储的替代方案,一些工程师更喜欢使用分布式文件系统,例如AWS S3或Hadoop。虽然分布式文件系统是存储大量非结构化数据的好选择,但需要额外的工作来组织和管理大型数据集。

在Linode Marketplace提供的各种存储选项中,我们可以看到托管的PostgreSQL和托管的MySQL。这两个选项都易于设置,可与大语言模型数据管道连接。

虽然小型大语言模型可能会使用较少的数据进行训练,并且可以使用较小的数据库(如单个PostgreSQL节点),但更重的用例将需要处理大量数据。在这些情况下,我们可能需要类似PostgreSQL Cluster的东西来支持将要处理的数据量,并为大语言模型管理数据以及可靠地提供数据服务。

在选择用于管理大语言模型数据的数据库时,别忘了考虑数据的性质和具体要求。我们摄入的数据类型将决定哪种数据库最适合自己的需求。当然,实际用例要求(如性能、可用性和可扩展性)也是重要的考虑因素。

有效和准确地摄入数据对大语言模型的成功至关重要。通过正确使用工具,我们可以为自己的管道构建可靠、高效的数据摄入过程,处理大量数据,并确保大语言模型具备学习和提供准确结果所需的一切。

总结

大语言模型的迅猛崛起在技术领域开辟了新的大门。这项技术对开发者来说易于访问,但如何管理大语言模型的数据以及利用数据来训练新的大语言模型或调整现有大语言模型,将决定开发者能否在长期范围内持续获得成功。

如果你最近刚开始进行大语言模型项目的相关工作,那么需要在深入研究前先了解基础知识。为了有效使用大语言模型,我们需要摄入大量非结构化数据,这个过程包括从来源中提取、预处理、转换和导入。执行这些任务需要Airflow和Kubernetes这样的工具来进行管道编排和实现可扩展的计算资源。此外,用于大语言模型训练的数据通常具有非结构化的特性,因此需要像PostgreSQL这样的数据存储选项,通过集群可靠地进行规模化运行。

整个数据摄入流程中,大部分环节用到的工具,都已经发布到Linode Marketplace,有需要的用户只需轻点鼠标即可快速部署并运行。用最短时间完成所有准备工作,然后开始基于大语言模型进行创新吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/952281.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】Python与C的区别

文章目录 语句结束符代码块表示变量声明函数定义注释格式Python的标识符数据输入input()函数数据输出print()函数 语句结束符 C 语言 C 语言中每条语句必须以分号;结束。例如,int a 10;、printf("Hello, World!");。分号是语句的一部分,用于…

167.两数之和II-输出有序数组

给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &#xff0c;则 1 < index1 < index2 < numbers…

【江协STM32】10-4/5 I2C通信外设、硬件I2C读写MPU6050

1. I2C外设简介 STM32内部集成了硬件I2C收发电路&#xff0c;可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能&#xff0c;减轻CPU的负担支持多主机模型支持7位/10位地址模式支持不同的通讯速度&#xff0c;标准速度(高达100 kHz)&#xff0c;快速…

继续坚持与共勉

经过期末考试后&#xff0c;又要开始学习啦。 当时一直在刷算法题就很少写博客了&#xff0c;现在要继续坚持写博客&#xff0c;将每天对于题的感悟记录下来。 同时我将会在学习Linux操作系统&#xff0c;对于过去学习的内容进行回顾&#xff01;&#xff01; 在此&#xff…

vue elemnt-ui自定义时间日期选择

如图 先写个日期组件 DateRangePicker/index.vue <script> import { DatePicker, DatePickerOptions } from element-ui import { calendarShortcuts } from /utils/shortcutsexport default {name: DateRangePicker,mixins: [DatePicker],props: {type: {type: String…

了解Node.js

Node.js是一个基于V8引擎的JavaScript运行时环境&#xff0c;它允许JavaScript代码在服务器端运行&#xff0c;从而实现后端开发。Node.js的出现&#xff0c;使得前端开发人员可以利用他们已经掌握的JavaScript技能&#xff0c;扩展技能树并成为全栈开发人员。本文将深入浅出地…

双系统解决开机提示security Policy Violation的方法

最近&#xff0c;Windows系统更新后&#xff0c;发现电脑开机无法进入桌面&#xff0c;显示“Verifiying shim SBAT data failed: security Policy Violation; So mething has gone seriously Wrong: SBAT self-check failed: Security Policy Violation”的英文错误信息。为了…

关于扫描模型 拓扑 和 传递贴图工作流笔记

关于MAYA拓扑和传递贴图的操作笔记 一、拓扑低模: 1、拓扑工作区位置: 1、准备出 目标 高模。 (高模的状态如上 ↑ )。 2、打开顶点吸附,和建模工具区,选择四边形绘制. 2、拓扑快捷键使…

工业 4G 路由器赋能远程医疗,守护生命线

在医疗领域&#xff0c;尤其是偏远地区的医疗救治场景中&#xff0c;工业 4G 路由器正发挥着无可替代的关键作用&#xff0c;宛如一条坚韧的 “生命线”&#xff0c;为守护患者健康持续赋能。 偏远地区医疗资源相对匮乏&#xff0c;常常面临着专业医生短缺、诊疗设备有限等困境…

MT6835天玑6100平台规格参数_MTK联发科安卓核心板方案定制开发

联发科MT6835平台集成了蓝牙、FM、WLAN 和 GPS 模块&#xff0c;是一个高度集成的基带平台。该芯片集成了两个 Arm Cortex-A76 内核&#xff08;运行频率高达 2.2GHz&#xff09;、六个 Arm Cortex-A55 内核&#xff08;运行频率高达 2.0 GHz&#xff09;和强大的多标准视频编解…

【Linux】Linux软件包管理

一、deb格式安装包 1.1 使用dpkg命令安装.deb安装包 deb格式的安装包通常用于Ubuntu操作系统&#xff0c;可以通过dpkg命令安装deb文件 我们当前目录下有一个QQ音乐的.deb安装包&#xff0c;我们通过dpkg命令安装一下 sudo dpkg -i qqmusic_88724.deb 安装完成后&#xff0…

使用Docker模拟PX4固件的无人机用于辅助地面站开发

前言 最近在制作鸿蒙无人机地面站&#xff0c;模仿的是QGroundControl&#xff0c;协议使用mavlink&#xff0c;记录一下本地模拟mavlink协议通过tcp/udp发送 废话不多说直接上命令 1.启动docker的桌面端 启动之后才能使用docker命令来创建容器 docker run --rm -it jonas…

Reinforcement Learning (李宏毅) 机器学习 2023 Spring HW12 (Boss Baseline)

1. Reinforcement Learning (强化学习)简介 1.1 什么是强化学习 强化学习是一种机器学习方法,它训练智能体在环境中采取行动,以最大化累积奖励。智能体通过试错与环境互动,学习哪些行动会带来奖励(正反馈),哪些行动会导致惩罚(负反馈)。通过不断地学习和调整策略,…

# Java 发送电子邮件示例

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

滤波电路学习笔记(一)——速通低通、高通、带通、带阻等滤波电路的基本认知

前言 &#xff1a;原稿写了一大段&#xff0c;感觉车轱辘话太多了&#xff0c;还是速通一下吧&#xff0c;本文作为初学者笔记内容&#xff0c;供遗忘时查阅&#xff0c;有不足或侵权之处&#xff0c;敬请指出。 一、基本概念与作用 滤波电路&#xff1a;对于信号频率具有选择…

Unity打包+摄像机组件

转换场景 使用程序集&#xff1a;using UnityEngine.SceneManagement; 切换场景相关代码&#xff1a;SceneManager.LoadScene(1);//括号内可放入场景名称&#xff0c;场景索引等 //Application.LoadLevel(""); 老版本Unity加载场景方法 打包相关 Bundle Identi…

【游戏设计原理】58 - 主题

一、理解这里的游戏主题 1. 什么是游戏的主题呢&#xff1f;用一句话描述。 游戏主题是游戏所要传达的中心思想。 2. Theme 和 Message 的区别 特性主题&#xff08;Theme&#xff09;主旨&#xff08;Message&#xff09;定义是游戏围绕的上下文或背景&#xff0c;指游戏的…

26、【OS】【Nuttx】用cmake构建工程

背景 之前wiki 14、【OS】【Nuttx】Nsh中运行第一个程序 都是用 make 构建&#xff0c;准备切换 cmake 进行构建&#xff0c;方便后续扩展开发 Nuttx cmake 适配 nuttx项目路径下输入 make distclean&#xff0c;清除之前工程配置 adminpcadminpc:~/nuttx_pdt/nuttx$ make …

donet (MVC)webAPI 的接受json 的操作

直接用对象来进行接收&#xff0c;这个方法还不错的。 public class BangdingWeiguiJiluController : ApiController{/// <summary>/// Json数据录入错误信息/// </summary>/// <param name"WeiguiInfos"></param>/// <returns></r…

从预训练的BERT中提取Embedding

文章目录 背景前置准备思路利用Transformer 库实现 背景 假设要执行一项情感分析任务&#xff0c;样本数据如下 可以看到几个句子及其对应的标签&#xff0c;其中1表示正面情绪&#xff0c;0表示负面情绪。我们可以利用给定的数据集训练一个分类器&#xff0c;对句子所表达的…