用机器学习流程去建模我们的平台架构

简介: Spark 提供了一个新的体系,spark.ml。 相对于spark.mllib,这是一个更高层的对机器学习流程的一个抽象。你会神奇的发现这套抽象也适合服务平台的设计与建模。更让我印象深刻的是,一个合适的抽象,简直就像真理一样。本文将介绍spark.ml 的五个该概念。
Spark 提供了一个新的体系,spark.ml。 相对于spark.mllib,这是一个更高层的对机器学习流程的一个抽象。然而,你会神奇的发现这套抽象,竟然也适合服务平台的设计与建模。更让我印象深刻的是,一个合适的抽象,简直就像真理一样。譬如RDD这种就是一个和神一般的抽象,它使得Spark成为了一个非常通用的平台,囊括了流式计算,离线计算,机器学习,图计算等多个领域。
spark.ml 在一开始就提出了五个概念。这五个概念也完全可以对一个通用的service platform进行建模和抽象。我们来看看。

五个主要概念

服务的本质是数据的流转。
  • Transformer。 我们的每一个服务节点,都是一个数据转换器。譬如你开发的一个Spark Streaming程序,一个Storm程序,一个Tomcat Web服务,都是一个Transformer。
  • Estimator 。支撑Tranformer运行的框架平台。他是解决一类问题的支撑平台。通常我们会有很多不同类型的Estimator,比如MR,比如Spark,比如Storm,比如Tomcat。他们分别解决各自领域的类的问题。比如Storm适合运行你开发的实时类的Transformer,MR则适合运行你开发的批量数据处理的Transformer,Tomat则适合支撑Web类的Transformer。
  • Parameter 。 每个Transformer都有自己的参数,每个Estimator有自己的参数。Parameter就是所有参数的集合。
  • Pipeline。 Pipeline 其实是由互通的Transformer构建起来的一段网状结构。每一个Transformer 以自己作为Root节点,都会向下延伸出一个树状节点。
  • DataFrame。数据框。各个Transformer之间交换数据的规范。Transformer 将一种DataFrame transform 成另一种DataFrame。

通用的建模

最终你会发现,我们的整个服务体系就是一个由Transformer,Pipeline构建起来的网状结构。如果我们跳出公司的视野,你会发现整个公司的网状服务体系只是全世界网络体系的一小部分。整个互联网是一张大网。这就说明,整个互联网其实也是可以通过上面五个概念进行涵盖。

我们部署服务到底是一件什么样的事情

你可能觉得这个问题会比较可笑。然而,如果之前我们提出的概念是正确或者合理的,让我们离真理更近了一步的话,那么它应该能够清晰的解释,我们部署或者下线一个服务,或者一个服务故障,到底是什么?

先说部署上线新服务,其实就是新建了一个Transformer,无论这个Transformer是一个Web服务,直接面向用户,或者是一个类似中转的器的角色,譬如将Kafka里的数据消费然后填充到搜索系统里,他都导致了一个(或者多个)新的PipeLine的产生。Transformer的作用是将数据连接了起来,并且将数据转化成一个我们需要的形态,如此而已。下线或者服务故障则是类似的。

这个理论对我们来说有什么意义

答案是指导我们如何去思考问题。
我们不希望每次遇到一个新的业务问题,都需要根据自己的聪明才智,通过经验,得到一个解决方案。任何事情都是有迹可循的。正如吴文俊提出的机器证明,可以通过流程化的方式让计算机来证明几何问题。当面临一个新的业务问题的时候,我们应该有标准的流程可以走。
以构建一个搜索服务为例子。搜索本身是一个Transformer,他需要把数据transform成索引,当用户进行查询的时候,搜索会对索引的数据再次进行transform,返回给客户。也就是进行了两次大的transform。
下面是进行平台设计时我觉得比较合适的一个 想法
当设计一个平台的时候,我们只要关注Estimator就好,我们必须已经有大量的以及随时具备上线新的Estimator的能力。 之后面对实际的各种业务需求,应该由基于这些Estimator的Transformer去应对,构建Transformer主要考虑两点:
  • 需要将哪些原来没有Pipeline的的Tranformer连接起来
  • 如何对数据进行Transform
对于一个新的业务需求,如何进行考虑呢?
  1. 和哪些已有的Transformer 建立 Pipeline?
  2. DataFrame是否需要经过新的Transformer 转换,这个Pipeline才能正常工作?
  3. 如果有新的Transformer,如何选择合适的Estimator?

罗列已有的Transformer

搜索要获取数据,那么就是要新建一个Pipeline,也就是要和已经存在的一个Transformer(数据源)建立连接。所以现有的数据源(假设是Kafka)是我们已知的,并且要建立Pipeline的Transformer。

DataFrame是否需要经过新的Transformer 转换,这个Pipeline才能正常工作
经过调研我们发现,数据源的信息并不能直接被搜索给接受,所以一个新的Transformer IndexDataCollector就诞生了。通过IndexDataCollector我们可以把Kafka和搜索给关联起来。

如何选择合适的Estimator?
Estimator的概念的提出,就是希望我们的应用应该是不关心服务环境的,应该是往Estimator提交,就能让Transformer运行并且产生作用。所以我们优先推荐采用可以跑在Yarn/Mesos这种将服务器屏蔽的资源调度平台上的Estimator。这里,IndexDataCollector 需要的Estimator 应该是Storm或者Spark Streaming。采用这种类型Estimator的好处是,我们仅仅按规则(Estimator的接口规范)开发一个应用,提交给集群就能方便的将Kafka和搜索这两个原来不存在的Pipeline的Transformer连接起来,从而满足新的需求。

结束语

个人认为大部分业务需求都可以按如上的步骤去考虑。万物互通,一个好的抽象应该具有普适的价值。虽然原先这套理论是针对机器学习流程抽象出来的,但是你会发现它也适用于其他的问题。事实上,你会发现机器学习中处理的环节和要素和我们在做平台架构或者处理新的业务需求的过程是如此的相似。
目录
相关文章
|
2月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
167 7
|
6月前
|
人工智能 算法 网络安全
基于PAI+专属网关+私网连接:构建全链路Deepseek云上私有化部署与模型调用架构
本文介绍了阿里云通过PAI+专属网关+私网连接方案,帮助企业实现DeepSeek-R1模型的私有化部署。方案解决了算力成本高、资源紧张、部署复杂和数据安全等问题,支持全链路零公网暴露及全球低延迟算力网络,最终实现技术可控、成本优化与安全可靠的AI部署路径,满足企业全球化业务需求。
|
3月前
|
Ubuntu 编译器 C语言
在Ubuntu22.04平台上交叉编译针对Rv1126架构的GCC13.2.0编译器的步骤。
遵循上述步骤,您应该能够在Ubuntu 22.04平台上成功交叉编译适用于RISC-V架构RV1126的GCC 13.2.0编译器,允许您为目标硬件构建应用程序和操作系统组件。
159 10
|
9月前
|
机器学习/深度学习 存储 设计模式
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
本文探讨了数据基础设施设计中常见的一个问题:数据仓库或数据湖仓中的表格缺乏构建高性能机器学习模型所需的历史记录,导致模型性能受限。为解决这一问题,文章介绍了缓慢变化维度(SCD)技术,特别是Type II类型的应用。通过SCD,可以有效追踪维度表的历史变更,确保模型训练数据包含完整的时序信息,从而提升预测准确性。文章还从数据工程师、数据科学家和产品经理的不同视角提供了实施建议,强调历史数据追踪对提升模型性能和业务洞察的重要性,并建议采用渐进式策略逐步引入SCD设计模式。
327 8
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
|
3月前
|
运维 监控 Java
初创代购选单体,千万级平台用微服务:一张表看懂架构选型红线
在跨境电商代购系统年交易额超3.2万亿元的背景下,本文对比微服务与单体架构的技术原理、适用场景及实战案例,结合性能、运维、成本等维度,为企业提供架构选型指南,助力实现高效扩展与稳定运营。
|
9月前
|
存储 人工智能 大数据
AI开发新范式,PAI模型构建平台升级发布
本次分享由阿里云智能集团产品专家高慧玲主讲,聚焦AI开发新范式及PAI模型构建平台的升级。分享分为四个部分,围绕“人人可用”和“面向生产”两大核心理念展开。通过降低AI工程化门槛、提供一站式全链路服务,PAI平台致力于帮助企业和开发者更高效地实现AI应用。案例展示中,介绍了多模态模型微调在文旅场景的应用,展示了如何快速复现并利用AI解决实际问题。最终目标是让AI技术更普及,赋能各行业,推动社会进步。
|
9月前
|
Java Linux C语言
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
766 90
|
6月前
|
存储 人工智能 自然语言处理
Cursor这类编程Agent软件的模型架构与工作流程
编程Agent的核心是一个强大的大语言模型,负责理解用户意图并生成相应的代码和解决方案。这些模型通过海量文本和代码数据的训练,掌握了广泛的编程知识和语言理解能力。
488 1
|
6月前
|
SQL 人工智能 前端开发
JeecgBoot 低代码平台 v3.7.4 发布,后台架构大升级
JeecgBoot 是一款基于 SpringBoot2.x/3.x 和 SpringCloud Alibaba 的企业级 AI 低代码平台,采用前后端分离架构(Ant Design & Vue3),支持 Mybatis-plus 和 Shiro。它集成了强大的代码生成器,可一键生成前后端代码,无需手动编写,大幅减少重复工作。平台支持 DeepSeek、ChatGPT 和 Ollama 等主流大模型,提供 AI 对话
379 9
|
6月前
|
机器学习/深度学习 存储 Kubernetes
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。

热门文章

最新文章