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

​从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,有需要的用户只需轻点鼠标即可快速部署并运行。用最短时间完成所有准备工作,然后开始基于大语言模型进行创新吧!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Network Compression(李宏毅)机器学习 2023 Spring HW13 (Boss Baseline)

1. Introduction to Network Compression 深度学习中的网络压缩是指在保持神经网络性能的同时,减少其规模的过程。这非常重要,因为深度学习模型,尤其是用于自然语言处理或计算机视觉的大型模型,训练和部署的计算成本可能非常高。网络压缩通过降低内存占用并加快推理速度,…

UnityDots学习(二)

在一里已经概述了什么是Dots,已经如果使用它,我们要做的思维转变。 简单总结下: Dots使用了计算器多核,已经3级缓存的优势,在此基础上使用Brust编译器对各个平台实现了代码优化。从而达到了加速提升的效果。 我们要…

Linux (CentOS) 安装 Docker 和 Docker Compose

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …

c++ 预备

目录 前言 一,知识点的补充 二,c语言与c 三,面向对象的三大特点 前言 将进入c的学习,接下来是对于c的预备和c的一些预习 一,知识点的补充 1 标识符 标识符不能为关键字 标识符只能由下划线,数字&#xf…

SpringBoot项目实战(41)--Beetl网页使用自定义函数获取新闻列表

在Beetl页面中可以使用自定义的函数从后台新闻列表中获取新闻数据展示到页面上。例如我们可以从后台新闻表中获取新闻按照下面的格式展示&#xff1a; <li><a href"#">东亚非遗展即将盛妆亮相 揭起盖头先睹为快</a></li><li><a hre…

从零开始开发纯血鸿蒙应用之多签名证书管理

从零开始开发纯血鸿蒙应用 一、前言二、鸿蒙应用配置签名证书的方式1、自动获取签名证书2、手动配置签名证书 三、多签名证书配置和使用四、多证书使用 一、前言 由于手机操作系统&#xff0c;比电脑操作系统脆弱很多&#xff0c;同时&#xff0c;由于手机的便携性&#xff0c…

数据结构初阶---排序

一、排序相关概念与运用 1.排序相关概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的…

系统看门狗配置--以ubuntu为例

linux系统配置看门狗 以 ubuntu 系统配置看门狗为例 配置看门狗使用的脚本文件&#xff0c;需要使用管理员权限来执行&#xff1a; 配置是&#xff1a;系统每 30S 喂一次狗&#xff0c;超过 60S 不进行投喂&#xff0c;就会自动重启。 1. 系统脚本内容&#xff1a; #!/bin/b…

opencv的NLM去噪算法

NLM&#xff08;Non-Local Means&#xff09;去噪算法是一种基于图像块&#xff08;patch&#xff09;相似性的去噪方法。其基本原理是&#xff1a; 图像块相似性&#xff1a;算法首先定义了一个搜索窗口&#xff08;search window&#xff09;&#xff0c;然后在该窗口内寻找…

Docker运维高级容器技术知识点总结

1、虚拟机部署和容器化部署的区别是什么&#xff1f; 1、技术基础&#xff1a; <1>.虚拟化技术在物理硬件上创建虚拟机&#xff0c;每台虚拟机运行自己完整的操作系统、从而实现资源隔离。 <2>.容器化技术&#xff1a;将应用程序打包在容器内&#xff0c;在进程空间…

双模充电桩发展前景:解锁新能源汽车未来的金钥匙,市场潜力无限

随着全球能源转型的浪潮席卷而来&#xff0c;新能源汽车行业正以前所未有的速度蓬勃发展&#xff0c;而作为其坚实后盾的充电基础设施&#xff0c;特别是双模充电桩&#xff0c;正逐渐成为推动这一变革的关键力量。本文将从多维度深入剖析双模充电桩的市场现状、显著优势、驱动…

python3GUI--大屏可视化-传染病督导平台 By:PyQt5

文章目录 一&#xff0e;前言二&#xff0e;预览三&#xff0e;软件组成&开发心得1.样式&使用方法2.左侧表格实现3.设计4.学习5.体验效果 四&#xff0e;代码分享1.环形渐变进度组件2.自定义图片的背景组件 五&#xff0e;总结 大小&#xff1a;60.9 M&#xff0c;软件…

某漫画网站JS逆向反混淆流程分析

文章目录 1. 写在前面1. 接口分析2. 反混淆分析 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Pyth…

ffmpeg aac s16 encode_audio.c

用ffmpeg库时&#xff0c;用代码对pcm内容采用aac编码进行压缩&#xff0c;出现如下错误。 [aac 000002bc5edc6e40] Format aac detected only with low score of 1, misdetection possible! [aac 000002bc5edc8140] Error decoding AAC frame header. [aac 000002bc5edc81…

深度学习的原理和应用

一、深度学习的原理 深度学习是机器学习领域的一个重要分支&#xff0c;其原理基于多层神经网络结构和优化算法。以下是深度学习的核心原理&#xff1a; 多层神经网络结构&#xff1a;深度学习模型通常由多层神经元组成&#xff0c;这些神经元通过权重和偏置相互连接。输入数据…

mv指令详解

&#x1f3dd;️专栏&#xff1a;计算机操作系统 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 基本语法 主要功能 常用选项详解 1. 移动文件或目录 2. 重命名文件或目录 3. -i&am…

5 分布式ID

这里讲一个比较常用的分布式防重复的ID生成策略&#xff0c;雪花算法 一个用户体量比较大的分布式系统必然伴随着分表分库&#xff0c;分机房部署&#xff0c;单体的部署方式肯定是承载不了这么大的体量。 雪花算法的结构说明 如下图所示: 雪花算法组成 从上图我们可以看…

怎么实现Redis的高可用?

大家好&#xff0c;我是锋哥。今天分享关于【怎么实现Redis的高可用&#xff1f;】面试题。希望对大家有帮助&#xff1b; 怎么实现Redis的高可用&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 为了实现 Redis 的高可用性&#xff0c;我们需要保证在发…

牛客网刷题 ——C语言初阶(6指针)——BC106 上三角矩阵判定

1. 题目描述——BC106 上三角矩阵判定 牛客网OJ题链接 描述 KiKi想知道一个n阶方矩是否为上三角矩阵&#xff0c;请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵&#xff0c;主对角线为从矩阵的左上角至右下角的连线。 示例 输入&#xff1a; 3 1 2 3 0 4 5 0 0…

H266/VVC 帧内预测中 ISP 技术

帧内子划分 ISP ISP 技术是在 JVET-2002-v3 提案中详细介绍其原理&#xff0c;在 VTM8 中完整展示算法。ISP是线基内预测&#xff08;LIP&#xff09;模式的更新版本&#xff0c;它改善了原始方法在编码增益和复杂度之间的权衡&#xff0c;ISP 算法的核心原理就是利用较近的像…