《Scala机器学习》一一2.5 数据驱动系统的基本组件

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

本节书摘来自华章计算机《Scala机器学习》一书中的第2章,第2.5节,作者:[美] 亚历克斯·科兹洛夫(Alex Kozlov),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.5 数据驱动系统的基本组件

简单地说,一个数据驱动架构包含如下的组件(或者可精简为以下这些组件):
数据收集:需要从系统和设备上收集数据。大多数的系统有日志,或者至少可选择将日志写入本地文件系统。一些系统可以通过网络来传输信息,比如syslog。但若没有审计信息,缺少持久层意味着有可能丢失数据。
数据转换层:也被称为提取、变换和加载(ETL)。现在数据转换层也可以进行实时处理,即通过最近的数据来计算汇总信息。数据转换层也用来重新格式化数据和索引数据,以便能被UI组件有效地访问。
数据分析和机器学习引擎:这层是标准数据转换层的一部分,因为这一层需要很多完全不一样的技术。构建合理统计模型的思维方式通常与快速移动数TB数据不同,尽管偶尔可以找到具有这两种技能的人。通常称这些人为数据科学家,但是他们在任何特定领域的技能通常不及专注于一个特定领域的人。另一个原因是机器学习,数据分析需要多次汇总和使用相同的数据(与大多数的流式ETL转换相反),这需要不同的引擎。
UI组件:UI表示用户界面,它通常是一系列组件,这些组件能让用户通过浏览器来访问系统(浏览器曾经是一个简单的GUI,但如今基于Web的JavaScript或基于Scala的框架能构建更强大和更易于移植的UI)。从数据管道和建模透视图来看,UI提供了访问数据和模型的内部表示的API。
动作引擎:这通常是一个可配置的规则引擎,基于灵感来优化给定的指标。这些动作可以是实时的,例如在线广告就属于这种情形。在这种情况下,引擎应当能够提供实时评分信息或者针对用户操作进行推荐,也可以采取电子邮件的形式来提醒。
关联引擎:这是一种新的组件,可以对数据分析和机器学习引擎的输出进行分析,以便能对数据或模型有更深入的理解。动作也可能由此层的输出触发。
监控:这是一个复杂的系统,包含的功能有日志记录、监控和更改系统参数。监控是为了优化系统性能的嵌套决策系统,并能自动减轻问题或者向系统管理员报告问题。
下面来详细讨论每个组件。
2.5.1 数据收集
随着智能设备的增加,信息收集对任何不止一种类型的文本业务而言都非常有必要。本章假设有一个或多个设备通过互联网来来传递信息,其连接方式可能是通过家庭拨号,也可能是网络直接连接。
此组件的主要目的是收集所有可能与数据驱动决策相关的信息。下表给出了与数据收集相关的最常见框架:image
image

如果要求数据传输接近实时的话,那通常会通过批量或小批量方式进行。信息通常会放在本地文件系统中,常称为日志的文件,然后被传送到控制中心。最近开发的Kafka和Flume通常用于管理这些传输,并将传统的syslog、rsync或netcat整合在一起。数据最终可保存在本地或分布式存储(如HDFS、Cassandra或Amazon S3)中。
2.5.2 数据转换层
完成在HDFS或其他系统的存储后,需要处理数据。通常会按预定的计划处理数据,并且最终会按时间来划分。使用新的Scala流式处理框架时,处理时间可按天或小时为单位,甚至可以是次分钟(sub-minute),这取决于对延迟的要求。该处理过程可能涉及一些基本的特征构造(或向量化),这通常被认为是机器学习的任务。下表总结了一些有效的框架:image
image

应该特别注意流处理框架,这种情形要求延迟减少到一次只有一个或几个记录。首先,流处理通常需要更多的处理资源,因为与处理成批记录不一样,若一次处理单个记录会更加昂贵,即使一次处理几十或几百个记录也是如此。所以,架构需要基于最近结果来判断附加成本,这并不能保证一定有。其次,流处理需要对架构进行一些调整,因为处理更新的数据有优先级;由单个子流或一组节点来处理最新数据的架构变得非常流行,比如目前流行的Druid(http://druid.io)系统。
2.5.3 数据分析与机器学习
机器学习(ML)算法用来计算可操作的聚合或摘要。从第3章到第6章都会涉及很复杂的机器学习算法。但在某些情况下,一个简单的滑动窗口平均,再加上偏离值就足够了。在过去的几年中,人们在进行模型构建和部署时还在采用A/B测试。作者并不是怀疑理论没有用,但许多基本假设(如独立同分布)、平衡设计和长尾现象在许多大数据情形下并不适用。更简单的模型往往会更快,并且具有更好的性能和稳定性。
例如,对于在线广告,仅仅需要跟踪一段时间内一组具有相似广告内容的平均表现就能决定是否投放此广告。关于异常或偏离的信息可能是新的不知之不知的信号,这表明旧数据不再适用,在这种情况下,系统不得不重新开始构建。
本书将在第6章、第8章以及第9章中讨论更复杂的非结构化数据、图和模式挖掘。
2.5.4 UI组件
在现实中,UI通常会让除数据科学家以外的人们感觉很不错。一个好的数据分析师应该够通过一张表的数据就能计算t检验。
应该评估不同组件的有用性以及所使用的次数。好的UI往往是合理的,但也与受众群体有关。
目前有一些UI和报表框架,它们中的大多数都不是基于函数式编程。由于复杂或半结构化数据的存在(将在本书第6章中做更详细的介绍),许多框架需要实现某种DSL才能做数据处理。下面介绍基于Scala构建的几个UI框架:image
image
image

2.5.5 动作引擎
虽然这是数据导向的系统管道的核心,但它却最简单。一旦度量和值的系统是已知的,基于已知等式的系统将决定是否执行一组确定的动作,这些动作以提供的信息为基础。虽然基于阈值的触发是最常见的实现,但目前出现了一种概率方法,它可向用户呈现可能性和相关性,或者可以像搜索引擎那样向用户提供前N个相关的选择。
这会涉及规则管理。人们常用规则引擎(如Drools,http://www.drools.org)来管理规则。但管理复杂规则常常需要开发DSL(Domain-Specific Languages by Martin Fowler, Addison-Wesley, 2010)。Scala非常适合开发这种动作引擎。
2.5.6 关联引擎
决策系统越复杂,就越需要一个次级决策系统来优化它管理。DevOps正在变成DataOps(Getting Data Right by Michael Stonebraker et al., Tamr, 2015)。在数据驱动系统上收集到与性能相关的数据通常用于异常检测和半自动维护。
模型经常会漂移,其性能可能由于数据收集层的变化或群体的行为变化而恶化(将在第10章讨论模型漂移)。模型管理的另一方面是跟踪模型性能,在某些情况下,可通过各种共识方案来使用模型的“集体”智慧。
2.5.7 监控
监控系统会收集用于审计、诊断或性能调整的系统性能信息。虽然它与前面几节提出的问题相关,但监控解决方案往往包含诊断和历史存储的解决方案,以及关键数据(如飞机上的黑匣子)的持久性。在Java和Scala中,一种流行的工具是Java性能bean,它可以在Java控制台中进行监视。Java本身支持MBean,并用它来获取基于JMX的JVM信息。Kamon(http://kamon.io)是一个开源库,它也使用此机制来获取Scala和Akka度量。
Ganglia(http://ganglia.sourceforge.net/)和Graphite(http://graphite.wikidot.com)是另外一些流行的开源解决方案。这里不再介绍,因为第10章会对系统和模型监控进行更为详细地介绍。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
24天前
|
机器学习/深度学习 存储 运维
机器学习异常检测实战:用Isolation Forest快速构建无标签异常检测系统
本研究通过实验演示了异常标记如何逐步完善异常检测方案和主要分类模型在欺诈检测中的应用。实验结果表明,Isolation Forest作为一个强大的异常检测模型,无需显式建模正常模式即可有效工作,在处理未见风险事件方面具有显著优势。
130 46
|
6月前
|
人工智能 自然语言处理 安全
通过阿里云Milvus与PAI搭建高效的检索增强对话系统
阿里云向量检索Milvus版是一款全托管的云服务,兼容开源Milvus并支持无缝迁移。它提供大规模AI向量数据的相似性检索服务,具备易用性、可用性、安全性和低成本等优势,适用于多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等场景。用户可通过PAI平台部署RAG系统,创建和配置Milvus实例,并利用Attu工具进行可视化操作,快速开发和部署应用。使用前需确保Milvus实例和PAI在相同地域,并完成相关配置与开通服务。
|
2月前
|
机器学习/深度学习 人工智能 算法
大数据与机器学习:数据驱动的智能时代
本文探讨了大数据与机器学习在数字化时代的融合及其深远影响。大数据作为“新时代的石油”,以其4V特性(体量、多样性、速度、真实性)为机器学习提供燃料,而机器学习通过监督、无监督、强化和深度学习等技术实现数据价值挖掘。两者协同效应显著,推动医疗、金融、零售、制造等行业创新。同时,文章分析了数据隐私、算法偏见、可解释性及能耗等挑战,并展望了边缘计算、联邦学习、AutoML等未来趋势。结语强调技术伦理与实际价值并重,倡导持续学习以把握智能时代机遇。
117 13
|
4月前
|
存储 人工智能 自然语言处理
基于QwQ-32B+Hologres+PAI搭建 RAG 检索增强对话系统
本文介绍如何使用PAI-EAS部署基于QwQ大模型的RAG服务,并关联Hologres引擎实例。Hologres与达摩院自研高性能向量计算软件库Proxima深度整合,支持高性能、低延时、简单易用的向量计算能力。通过PAI-EAS,用户可以一键部署集成大语言模型(LLM)和检索增强生成(RAG)技术的对话系统服务,显著缩短部署时间并提升问答质量。具体步骤包括准备Hologres向量检索库、部署RAG服务、通过WebUI页面进行模型推理验证及API调用验证。Hologres支持高性能向量计算,适用于复杂任务的动态决策,帮助克服大模型在领域知识局限、信息更新滞后和误导性输出等方面的挑战。
|
4月前
|
人工智能 自然语言处理 API
Hologres × PAI × DeepSeek 搭建 RAG 检索增强对话系统
本文介绍如何使用PAI-EAS部署基于DeepSeek大模型的RAG(检索增强生成)服务,并关联Hologres引擎实例。Hologres与阿里云自研高性能向量计算软件库Proxima深度整合,支持高性能、低延时的向量计算能力。通过PAI-EAS,用户可以一键部署集成了大语言模型和RAG技术的对话系统服务,显著缩短部署时间,并提高问答质量。部署步骤包括准备Hologres向量检索库、部署基于DeepSeek的RAG服务、通过WebUI进行模型推理验证,以及通过API调用进行模型推理验证。Hologres还提供了特色功能支持,如高性能向量计算等。
|
11月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
623 4
|
5月前
|
人工智能 自然语言处理 安全
基于阿里云向量检索 Milvus 版与 PAI 搭建高效的检索增强生成(RAG)系统
基于阿里云向量检索 Milvus 版与 PAI 搭建高效的检索增强生成(RAG)系统
100 0
|
7月前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
377 4
|
8月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
221 6
|
6月前
|
人工智能 运维 API
PAI企业级能力升级:应用系统构建、高效资源管理、AI治理
PAI平台针对企业用户在AI应用中的复杂需求,提供了全面的企业级能力。涵盖权限管理、资源分配、任务调度与资产管理等模块,确保高效利用AI资源。通过API和SDK支持定制化开发,满足不同企业的特殊需求。典型案例中,某顶尖高校基于PAI构建了融合AI与HPC的科研计算平台,实现了作业、运营及运维三大中心的高效管理,成功服务于校内外多个场景。