使用 Snorkel 和 MinIO 的以数据为中心的 AI

如今,业界都在谈论大型语言模型及其编码器、解码器、多头注意力层和数十亿(即将数万亿)的参数,人们很容易相信好的人工智能只是模型设计的结果。不幸的是,事实并非如此。好的人工智能需要的不仅仅是一个精心设计的模型。它还需要正确构建的训练和测试数据。在这篇文章中,我将介绍以数据为中心的 AI 的概念,这是一个由 Snorkel AI 的人首先创造的术语。我还将介绍 Snorkel Flow,这是一个以数据为中心的 AI 平台,并展示如何将其与 MinIO 结合使用,以创建高性能且可以扩展到所需的任何 AI 工作负载的训练管道。在定义以数据为中心的 AI 之前,让我们先快速回顾一下以模型为中心的 AI 的工作原理。

以模型为中心的 AI

以模型为中心的 AI 是一种人工智能方法,专注于提高 AI 模型本身的性能。此方法优先优化和增强模型中使用的体系结构和技术,以提高性能。以模型为中心的 AI 的关键方面包括:

  • 算法开发:创建和优化算法以提高模型的性能。

  • 架构创新:设计新的神经网络架构或修改现有架构以提高性能。

  • 参数调整:调整超参数以实现最佳模型性能。

  • 训练技术:采用先进的训练方法,如迁移学习、微调、集成学习或强化学习,来改进模型。

让我们定义以数据为中心的 AI。

以数据为中心的 AI

以数据为中心的 AI 是一种人工智能开发方法,专注于提高用于训练 AI 模型的数据的质量和效用。以数据为中心的 AI 不是主要专注于改进算法或模型架构,而是强调高质量、标记良好和多样化的数据集对提高模型性能的重要性。以数据为中心的人工智能的前提是,即使使用更简单的模型,高质量的数据也可以显着提高人工智能的性能。在处理数据经常嘈杂或不平衡的实际应用程序时,这种方法特别有效。

以模型为中心的 AI 非常适合为您提供已完美标记的干净数据的场景。不幸的是,这仅在您使用通常为教育目的而创建的知名开源数据集时才会发生。在现实世界中,数据是原始的和未标记的。让我们看一下一些真实世界的用例,这些用例需要比以模型为中心的 AI 方法更加关注数据。

真实的用例

在本节中,我将回顾一些通用用例,这些用例强调了对以数据为中心的 AI 方法的需求。在查看下面的各种方案时,请务必记住,所讨论的数据非常原始,目标是以编程方式标记数据。这听起来可能很奇怪,并引出了一个问题——如果你有逻辑来标记数据,那么你为什么需要一个模型?只需使用您的“标签逻辑”进行预测即可。我将在下一节中直接讨论这个问题,即标签功能和弱监督。就目前而言,简短的回答是,标签逻辑是不精确和嘈杂的,使用不精确标签的模型仍然比直接使用标签逻辑更好地进行预测。

统计数据分析:通常,重要信息隐藏在包含重要标签线索的文档中。例如,美国证券交易委员会 (SEC) 要求上市公司每年填写一份 10-K 报告。10-K 包含与财务业绩有关的信息:财务报表、每股收益和高管薪酬等。在加拿大,公司提交 SEC 表格 40-F 以提供类似信息。如果需要手动处理这些文档以提取模型训练所需的信息,那么这将是一个艰巨且容易出错的过程。

关键字分析:通常,文档中的关键字就是标记文档所需的全部内容。例如,如果一个组织需要有利的舆论来开展业务,那么它通常会在互联网上监控其品牌。这些组织应该每天监控新闻,寻找对新闻不满意的团体甚至个人。这需要处理新闻提要,查找提及的公司名称,然后在文档中查找表明情绪的关键字。这可能就像寻找表示情绪的简单词一样简单,例如“坏”、“可怕”、“伟大”和“真棒”——但也可能使用特定于领域的关键字。

对主题专家的需求:确定标签所需的逻辑可能并不简单。相反,可能需要对数据中所有信息有详细了解的专家来确定正确的标签。考虑需要医生专业知识才能确定正确诊断的医学图像和医疗记录。

数据查找:通常,组织可能具有另一个应用程序或数据库,其中包含可用于确定正确标签的其他信息。考虑一个包含每个客户的人口统计数据的客户数据库。这可用于确定任何以客户为中心的数据集的标签,例如有针对性的广告和产品推荐。

基于上述假设示例,我们可以进行一些观察。首先,如果上述标签必须手动完成,那么创建标签将非常昂贵且耗时。当需要查找另一个系统并且需要主题专家时,尤其如此。主题专家可能很难找到,并且可能忙于其他任务。更好的方法是找到一种方法,以编程方式完成上述内容,以捕获代码主题专家的专业知识。这就是标签功能和薄弱监督发挥作用的地方。

标签函数

标签函数是一种捕获标签逻辑的方法,以便可以通过编程方式应用它。例如,如果您开始手动标记数据集,您会注意到您正在对数据集中的每条记录(或文档)重复执行相同的操作。将其应用于我们上面的场景;这可能是,从文档中收集多个统计数据以确定标签,寻找相同的关键字-标签关联,查找其他系统以获取带外数据,甚至被困在主题专家大脑中的高级逻辑通常也可以用标签函数来表达。

Snorkel Flow 中的标记函数 (LF) 允许以编程方式捕获上述逻辑。LF 只是一个任意函数,它接收一个数据点并输出标签或弃权。您可以在 LF 中做任何您想做的事情。如果您能想到一种编程方式,以优于随机的精度标记数据的某些子集,那么请将其编码为 LF。这使您可以捕获您的领域知识。

许多 LF 采用一种通用形式。对于这些常见的 LF,Snorkel Flow 提供了一个无代码模板库,您需要提供的只是完成它的领域知识块。例如,提供您正在寻找的特定关键字 - 从那里,Snorkel Flow 将模板代码与您的信息块相结合,并创建一个可执行的 LF。下面显示了一个示例。

在某些情况下,您可能希望表达一种非常特定类型的信号,该信号还没有相应的模板,或者使用只有您有权访问的闭源库 - 在这种情况下,您可以使用 Python SDK 在 Snorkel Flow 集成笔记本中定义自定义 LF,如下所示。

现在,我们已经了解了标签函数及其可以使用的各种场景,让我们看一下完整的端到端机器学习工作流程。

将所有内容与 MinIO 放在一起

下面显示了使用 MinIO 和 Snorkel Flow 的机器学习工作流程。

原始数据:MinIO 是收集和存储原始非结构化数据的最佳解决方案。此外,如果您不使用文档并且具有结构化数据,则可以在现代数据湖的上下文中使用 MinIO。有关详细信息,请查看我们的现代数据湖参考体系结构。MinIO 还拥有许多用于载入数据的出色工具。(这是在参考体系结构的引入层中完成的。

标签和构建:标签和构建阶段创建标签函数。无论它们是通过模板创建的还是由工程师手写的,它们都将在此阶段进行汇总和准备。

集成和管理:一旦您准备好了所有 LF,就可以运行它们来生成标签。请考虑手动标记一小部分数据。这种手动标记的数据称为地面实况,您可以将 LF 的结果与地面实况进行比较,以衡量其性能。准备好继续进行模型训练后,应将新标记数据的副本保存回 MinIO 进行保管。

训练和部署:获得完全标记的数据集后,下一步是训练模型。您可以使用 Snorkel Flow 的模型训练界面,该界面与 Scikit-Learn、XGBoost、Transformer 和 Flair 等兼容。如果您愿意,可以离线训练自定义模型,然后通过 Snorkel Flow SDK 上传预测进行分析。

分析和监控:训练模型后,您需要使用适合您的问题的指标(准确性、F1 等)来评估其性能。如果需要提高质量(在初始实验中几乎总是如此),请查看模型在哪些方面产生了错误的预测。以编程方式生成的标签可能需要更正。这是以数据为中心的人工智能。您首先通过改进数据来改进模型。只有当模型对正确标记的数据产生不正确的预测时,才应考虑对模型本身进行改进。性能足够后,即可部署模型。考虑监视其随时间推移的性能。随着实际条件的变化,模型性能会随着时间的推移而下降,这是很常见的。此时,迭代此过程以微调 LF 和模型。

总结

在这篇文章中,我定义了以模型为中心的 AI,并介绍了以数据为中心的 AI。以数据为中心的 AI 并不能替代以模型为中心的 AI。以数据为中心的 AI 包含这样一个前提,即在尝试改进模型之前,您应该改进数据及其标签。如果你仔细想想,这是完全有道理的。如果你试图在数据不好的时候改进你的模型,你将不必要地旋转你的轮子。您的模型将尝试拟合不良数据和标签。您最终会得到一个专为不良数据设计的模型。更好的方法是先修复数据,然后使用良好的数据设计模型。

我还简要介绍了使用 Snorkel Flow 和 MinIO 的以数据为中心的 AI。将 Snorkel Flow 与 MinIO 结合使用,提供了一种使用能够保存大量原始数据和所有实验结果的存储解决方案进行数据实验的方法。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

医疗器械ce认证办理流程介绍

CE认证是的产品安全认证,所有进入市场的医疗器械都必须进行医疗器械CE认证,医疗器械CE认证为了解决成员国之间的贸易壁垒,组织逐步将自己建成一个统一的大市场,以确保人员、服务、资本和产品(如医疗器械)的自由流通。在医疗器械领…

查找手机归属地轻松快捷,专业手机号码归属地数据源

在如今的信息社会中,手机已经成为了人们生活中不可或缺的一部分。当我们接到一个陌生的电话时,或者想了解一个电话号码的归属地时,我们可以借助一些工具来查找手机归属地。本文将介绍一种轻松快捷、专业的手机号码归属地数据源,并…

box-shadow属性的复合写法及高级用法,超详细!

前言:最近又叕看到了一个好看的特效,随后整理了一下,发现实现起来主要靠一个css属性就实现了,有一次刷新了我对css强大的认知😎,这个属性就是box-shadow,平常我们用到的比较少,但是针…

智慧工地视频汇聚管理平台:打造现代化工程管理的全新视界

一、方案背景 科技高速发展的今天,工地施工已发生翻天覆地的变化,传统工地管理模式很容易造成工地管理混乱、安全事故、数据延迟等问题,人力资源的不足也进一步加剧了监管不到位的局面,严重影响了施工进度质量和安全。 视频监控…

LLMs之Llama 3.1:Llama 3.1的简介、安装和使用方法、案例应用之详细攻略

LLMs之Llama 3.1:Llama 3.1的简介、安装和使用方法、案例应用之详细攻略 导读:2024年7月23日,Meta重磅推出Llama 3.1。本篇文章主要提到了Meta推出的Llama 3.1自然语言生成模型。 背景和痛点 >> 过去开源的大型语言模型在能力和性能上一…

C语言------指针讲解(3)

一、字符指针 在指针中,我们知道有一类指针类型为字符指针char*; int main() {char ch w;char* pc &ch;*pc w;return 0; } 还有一种使用方式如下: 上述代码中,本质是把hello的首字符的地址放到了pstr中。即把一个常量字符串的首字符…

netty使用redis发布订阅实现消息推送

netty使用redis发布订阅实现消息推送 场景 项目中需要给用户推送消息: 接口 RestController public class PushApi {Autowiredprivate PushService pushService;/*** 消息推送* param query* return*/PostMapping("/push/message")public String push(RequestBody…

国内访问Docker Hub慢问题解决方法

在国内访问Docker Hub时可能会遇到一些困难,但幸运的是,有多种解决方案可以帮助你顺利下载Docker镜像。以下是一些有效的解决方案: 配置Docker镜像源:你可以通过配置Docker的daemon.json文件来使用国内镜像源,比如DaoC…

四、GD32 MCU 常见外设介绍(8)SPI 模块介绍

串行外设接口(Serial Peripheral Interface,缩写为 SPI) 提供了基于SPI 协议的数据发送和接收功能, 可以工作于主机或从机模式。 SPI 接口支持具有硬件 CRC 计算和校验的全双工和单工模式。 8.1.SPI 基础知识 SPI 物理层 SPI接…

【Three.js基础学习】17.imported-models

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 课程回顾: 如何在three.js 中引入不同的模型? 1. 格式 (不同的格式) https://en.wikipedia.org/wiki/List_of_file_form…

UART编程框架详解

1. UART介绍 UART:通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),简称串口。 调试:移植u-boot、内核时,主要使用串口查看打印信息 外接各种模块 1.1 硬件知识_UART硬件介绍 UART的全称是Unive…

Unity UGUI 之 事件接口

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本,请注意分别 1.什么是事件接口&…

找实习,三本计算机 > 985文科 ?

2018年3月,大三下学期。 写了一段时间博客以后,竟有人说要内推我。 我说我大三,还没毕业,准备暑假去找实习。 网上认识的朋友建议我去春招实习试试,还有些厂在走流程中,还有机会。 我婉拒了&#xff0c…

Centos 8 配置网络源

备份当前的软件源配置文件: sudo cp -a /etc/yum.repos.d /etc/yum.repos.d.bak 清理原有的 yum 仓库配置信息: sudo rm -f /etc/yum.repos.d/*.repo 获取阿里云的 CentOS 8 源配置: sudo curl -o /etc/yum.repos.d/CentOS-Base.repo ht…

Shell编程之正则表达式与文本处理器2--sed

目录 一、sed 工具 1. 概述 2. sed 原理 3、常用操作选项 3.1 常用选项 3.2 操作命令 4. sed 的使用 5. 具体操作 5.1 打印输出 p 5.1.1 显示范围、单行、指定行输出、指定往后加几行输出 5.1.2 显示奇偶行 5.1.3 将指定内容的行打印出来 5.1.4 只输出行号…

《python程序语言设计》第6章12题 显示字符,使用下面的函数头,编写一个打印字符的函数

def printChars(ch1, ch2, numberPerLine):a ord(ch1)b ord(ch2)count 0for i in range(a, b 1):count 1print(chr(i), end" ")if count % numberPerLine 0:print()printChars("1", "Z", 10)

UDP/TCP协议解析

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

FTTransformer,一个很能打的模型

FTTransformer,是一个BERT模型架构在结构化数据集上的迁移变体。和BERT一样,它非常能打。 它可能是少数能够在大多数结构化数据集上取得超过或者匹配LightGBM结果的深度模型。 本范例我们将应用它在来对Covertype植被覆盖数据集进行一个多分类任务。 我们…

k8s通过应用修改yaml文件修改容器时区

通过挂载,把本地的/etc/localtime挂载到容器中: apiVersion: apps/v1 kind: Deployment metadata:name: seb-algorithmsnamespace: jiaoda spec:replicas: 1selector:matchLabels:app: seb-algorithmstemplate:metadata:labels:app: seb-algorithmsspec…

虚幻引擎(Unreal Engine)深入探索与应用实践

目录 引言 虚幻引擎基础 引擎概述 核心组件 安装与配置 准备工作 安装步骤 常见问题 应用实践 游戏开发 影视特效 数字孪生 虚幻引擎中的C示例 如何在虚幻引擎中使用C代码 引言 虚幻引擎(Unreal Engine,简称UE)作为目前游戏开…