介绍
您可能听说过这样一种说法,即 机器学习从业人员 80% 的时间 都花在了处理或清理数据上。无论这种说法是否成立,数据无疑是机器学习问题从始至终的核心。无论您是构建 RAG 管道、微调、训练自己的模型还是评估模型性能,数据都是每个问题的根源。
但是,管理数据可能很棘手,因此,这个领域出现了大量的工具,旨在通过解决机器学习数据问题中的特定片段来提高生产力。通常情况下,它以更通用解决方案周围的一层抽象形式出现,具有一个带有主张的界面,表面上看起来更容易应用于手头的特定子问题。实际上,这会减少通用解决方案中存在的灵活性,以换取特定任务的易用性和简单性。
也就是说,这种方法有一些缺点。与通用解决方案加上支持的应用程序代码相比,一系列级联的专用工具、产品和服务带来了更大的架构复杂性和数据成本风险。您很容易发现自己拥有一个无止境的工具和服务列表,每个工具和服务只用于单个步骤。
这些风险有两个常见方面
-
学习、维护和切换成本
机器学习架构可能会变得如此混乱,充斥着各种工具和组件,以至于它会创建一个分散且难以学习和管理的环境,导致故障点增加和支出不断攀升。
-
数据复制和传输成本
在机器学习管道中使用多个离散但重叠的数据系统可能会引入不必要的,通常也是代价高昂的,将数据从一个系统传输到另一个系统的开销。
向量数据库就是一个很好的例子,说明了这种权衡。向量数据库专为存储和搜索向量而设计,这是一项超具体的机器学习任务。虽然这在某些架构中可能是正确的选择,但在其他架构中,向量数据库可能是技术堆栈中不必要的全新添加,因为它只是另一个需要与之集成、管理以及从其接收和发送数据的系统。大多数现代通用数据库都内置了向量支持(或通过插件),并且具有更广泛和跨领域的功能。换句话说,在那些架构中,可能根本不需要新的数据库来专门处理向量。重要的是,向量特定的便利功能(例如内置嵌入模型)是否对任务至关重要,以及是否值得付出成本。
因此,问题变成了:何时使用单个数据库或数据仓库比使用多个专用工具更好?在下一篇文章中,我们将介绍 ClickHouse(实时数据仓库)如何非常适合作为中心数据存储库来为机器学习数据层提供动力,它有可能帮助简化整体基础设施并提高长期开发效率。
机器学习数据层
数据探索和准备
数据探索
在定义了机器学习问题、目标和成功标准之后,下一步通常是探索将用于模型训练和评估的相关数据。
在此步骤中,将分析数据以了解其特征、分布和关系。这个评估和理解的过程将成为一个迭代过程,通常会导致对数据集执行一系列临时查询,其中查询响应速度至关重要(以及其他因素,如成本效益和准确性)。随着公司存储越来越多的数据以用于机器学习,这个问题——即检查您所拥有的数据的问题——变得越来越困难。
这是因为,对于传统数据系统来说,分析和评估查询在规模上往往会变得极其缓慢或难以承受。一些大型公司 大幅提高了成本 以降低查询时间,并 通过按查询或扫描字节数计费的方式来阻止临时评估。为了解决这些限制,工程师可能不得不将数据的子集提取到他们的本地机器上。
另一方面,ClickHouse 是一个实时数据仓库,因此用户可以从业界领先的查询速度中获益,以进行分析计算。此外,ClickHouse 从一开始就提供高性能,并且不会将重要的查询加速功能限制在更高的定价层级中。ClickHouse 还可以直接从对象存储或数据湖中查询数据,并支持常见的格式,如 Iceberg、Delta Lake 和 Hudi。这意味着无论您的数据存储在哪里,ClickHouse 都可以作为机器学习工作负载的统一访问和计算层。
ClickHouse 还提供了一套广泛的预构建统计和聚合函数,这些函数可以跨 PB 级数据进行扩展,从而轻松编写和维护执行复杂计算的简单 SQL 语句。通过支持最细粒度的精度数据类型和编解码器,您无需担心降低数据的粒度。
“ClickHouse 是我们机器学习模型的完美大数据存储。”——Admixer
数据准备和特征提取
然后对数据进行准备——清理、转换并用于提取模型将用于训练和评估的特征。此组件有时称为特征生成或提取管道,是机器学习数据层的另一个片段,可能会引入新的工具。像 Neptune 和 Hopsworks 这样的 MLOps 玩家提供了用于编排这些管道的各种数据转换产品的示例。但是,由于它们是与它们正在操作的数据库分开的工具,因此它们可能很脆弱,并可能导致需要手动纠正的故障。
相反,可以通过 ClickHouse 中的 物化视图 很容易地完成数据转换。当新数据插入 ClickHouse 源表时,这些视图会自动触发,并用于轻松提取、转换和修改到达的数据——无需自己构建和监控定制管道。
并且,当这些转换需要对可能不适合内存的完整数据集进行聚合时,利用 ClickHouse 确保您不必尝试将此步骤改造为适合您本地机器上的数据帧。对于那些更容易在本地进行评估的数据集,ClickHouse Local 以及 chDB 都是很好的替代方案,它允许用户使用 ClickHouse 和 Pandas 等标准 Python 数据库。
我们从客户的手机和其他更传统的来源收集了数万个数据点。ClickHouse 被用作处理所有这些短信并提取用于评分和欺诈模型的宝贵信息的一种方式。
训练和评估
此时,特征将被分成训练集、验证集和测试集。这些数据集是版本化的,然后由各自的阶段使用。
在这里,通常会引入另一个专门的工具 - 特征存储 - 到机器学习数据层。特征存储最常见的是围绕数据库的一层抽象,它提供专门针对管理模型训练、推理和评估数据的便利功能。这些便利功能的示例包括版本控制、访问管理以及自动将特征定义转换为 SQL 语句。
离线特征存储
离线特征存储用于模型训练。这通常意味着特征本身是通过批处理数据转换管道(如上一节所述)生成的,并且通常对这些特征的可用性没有严格的延迟要求。
在线特征存储
在线特征存储用于存储用于推理的最新版本特征,并在实时应用。这意味着这些特征需要以最小的延迟计算,因为它们用作实时机器学习服务的一部分。
许多现代系统都需要离线和在线存储,并且很容易得出需要两个专门的特征存储的结论。但是,这会带来额外的复杂性,即保持这两个存储同步,这当然也包括在它们之间复制数据的成本。
像 ClickHouse 这样的实时数据仓库是一个单一系统,可以同时为离线和在线特征管理提供支持。ClickHouse 有效地处理流式和历史数据,并具有无限的扩展性、性能和并发性,可以依赖于为实时推理和离线训练提供特征服务。
在考虑在此阶段使用特征存储产品与直接利用实时数据仓库之间的权衡时,值得强调的是,诸如版本控制之类的便利功能可以通过诸如表或模式设计之类的古老数据库范式实现。其他功能,例如将特征定义转换为 SQL 语句,可能会在应用程序或业务逻辑中提供更大的灵活性,而不是存在于有见地的抽象层中。
“我们在 ClickHouse 中汇总用户的历史记录,并将其用作训练和推理的数据存储。即使读取数千万行,性能也非常好,在训练新模型时不是瓶颈。” - DeepL
推理
模型推理是运行训练后的模型以接收输出的过程。当推理由数据库操作触发时 - 例如插入新记录或查询记录 - 推理步骤可以通过专门的作业或应用程序代码进行管理。
另一方面,它可以在数据层本身进行管理。ClickHouse UDF(用户定义函数)使用户能够在插入或查询时直接从 ClickHouse 调用模型。这提供了将传入数据传递给模型、接收输出并将这些结果与摄取的数据一起自动存储的能力 - 所有这些都无需启动其他进程或作业。这也提供了一个统一的接口,SQL,用于管理此步骤。
“在测试 Hadoop 和 Spark 后,我们选择了 ClickHouse” - DENIC
向量存储
向量存储 是一种特定类型的数据库,经过优化可以存储和检索向量,通常是数据片段(例如文本或图像)的嵌入,这些嵌入在数值上捕获其潜在的含义。向量是当今生成式 AI 浪潮的核心,并在无数应用程序中使用。
向量数据库中的主要操作是“相似性搜索”,以根据数学度量找到彼此“最接近”的向量。向量数据库之所以流行,是因为它们采用旨在使这种检查(向量比较)尽可能快的特定策略。这些技术通常意味着它们近似向量比较,而不是将输入向量与存储的每个向量进行比较。
这类新工具的问题是,许多通用数据库,包括 ClickHouse,都开箱即用地提供向量支持,并且通常也内置了这些近似方法的实现。特别是,ClickHouse 旨在用于高性能大规模分析 - 允许您非常有效地执行非近似向量比较。这意味着您可以获得精确的结果,而不是依赖近似值,并且无需牺牲速度。
可观察性
机器学习应用程序投入使用后,它将生成数据,包括日志和跟踪数据,这些数据可以提供有关模型行为、性能和潜在改进领域的宝贵见解。
基于 SQL 的可观察性是 ClickHouse 的另一个关键用例,ClickHouse 已被证明比其他方法经济实惠 10-100 倍。事实上,许多可观察性产品本身就是在 ClickHouse 的基础上构建的。凭借一流的摄取率和压缩率,ClickHouse 以极高的成本效益和惊人的速度为任何规模的机器学习可观察性提供支持。
“ClickHouse 帮助我们高效可靠地分析跨数万亿个互联网请求的日志,以识别恶意流量并为客户提供丰富的分析。” - Cloudflare
结论
对于系统架构来说,一切都是权衡。虽然机器学习数据层中工具、产品和服务的激增可能会为某些任务提供特定的易用性优势,但它们也会带来风险,例如维护成本增加、架构复杂性和数据重复费用。
ClickHouse 是一款实时数据仓库,能够将许多这些工具合并到一个数据系统中。ClickHouse 提供了一个集中式数据存储,而不是拥有大量产品和服务来帮助您完成每个步骤,该存储有效地管理机器学习数据工作流程的所有阶段 - 从数据探索和准备到特征和向量存储,最后到可观察性。
有兴趣了解更多信息?联系我们 今天或开始您的免费试用并获得 300 美元的积分。访问我们的定价页面 了解详情。