【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Meson,用于协调和调度 Netflix 推荐工作流的架构

  • 2016-07-11
  • 本文字数:1273 字

    阅读完需:约 4 分钟

Netflix 力图在人们未观看视频之前就预测他们想看的。为此 Netflix 每日运行多个机器学习(ML) 工作流,这些流水线用于构建、训练并验证有助于视频推荐的个性化推荐算法。Meson 是一个工作流的协调和调度架构,它管理这些所有机器学习流水线的生命周期。

近期 Netflix 开发团队公开了Meson 架构,并描述了它是如何作用于机器学习流水线的。Meson 的目标之一是当允许工程师用自选的技术构造流水线的每一步时,增进整体算法实验的速度、可行性和可重复性。

部分在Netflix 的机器学习流水线中发挥了重要作用的技术包括: Spark MLlib Python R Docker

一个典型的用于驱动视频推荐的机器学习流水线包括如下步骤:

  • 用户选取;
  • 特征生成;
  • 模型训练;
  • 模型验证;
  • 模型发布。

在 Netflix,用户选取步骤通过 Hive 查询实现了对用于分析的用户队列的选择。数据清洗和准备功能由 Python 脚本实现,该脚本创建了两套用户,用于并行的两条执行路线。其中的一条执行路线实现对全局模型的构建和分析,其中使用了 Apache Spark 作为运算架构,以及 HDFS 作为临时存储。另一条执行路线使用 R 语言构建地区(国家)特定的模型,其中地区的数量依据为分析所选取的队列而动态变化。

模型验证步骤用 Scala 代码实现,。该步骤用于测试当两条执行路径汇聚时模型的稳定性。整个过程重复直至模型达到稳定。最终,新模型使用 Docker 容器技术发布,这样的发布可由其它系统进行调用。

为满足机器学习工作流中的资源需求,Netflix 团队在 Meson 中使用了诸如 Apache Mesos 这样的资源管理工具。Mesos 提供了对 CPU、内存、存储及其它计算资源的任务隔离和抽象,并使用这些特性实现了 Mesos 任务的扩展和容错。

Meson 中还包括调度器和执行器组件。

Meson 调度器: 该组件管理各个工作流的启动、流控制和运行时间。Meson 将内存和 CPU 需求发送给 Mesos,实现对 Mesos 实际的资源调度的代理。一旦某个执行步骤已就绪可被调度,Meson 调度器选取由 Mesos 提供的适用资源,并将任务发送给 Mesos 主节点。

Meson 执行器: 它是对 Mesos 执行器的定制,允许开发团队去维护与 Meson 的通信通道。这样架构消息可被发送到 Meson 调度器,对于长时间运行的任务是十分有用的。Meson 执行器也允许用户数据的传递。

Mesos 在调度 Meson 任务时,它在下载了该任务所有的依赖后,在客户节点上启动一个 Meson 执行器。当核心任务被执行时,执行器还关注诸如心跳信息发送、任务完成比例、状态消息等其它任务的情况。

Meson 还提供了基于 Scala 的 DSL,这允许创建用户定制的工作流。Meson 中还具有对原生 Spark 的支持,这允许在 Meson 中去监控 Spark 任务的进程进度。Meson 还具备功能去重做失败的 Spark 过程,或杀掉执行异常的 Spark 任务。

Netflix 团队计划在未来几个月内开源 Meson,并构建 Meson 相关的社区。

查看英文原文: Meson Workflow Orchestration and Scheduling Framework for Netflix Recommendations


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2016-07-11 19:001782
用户头像

发布了 227 篇内容, 共 71.4 次阅读, 收获喜欢 27 次。

关注

评论

发布
暂无评论
发现更多内容

做百度AI工程师,还要会“相牛”?

百度开发者中心

AI 最佳实践 方法论

做百度AI工程师,还要会“相牛”?

百度大脑

人工智能

♟Go语言那些事儿之Redis连接与数据操作♟

Regan Yue

Go 语言 9月日更

带你彻底认识Paxos算法、Zab协议和Raft协议的原理和本质

Java 架构 面试 分布式 计算机

Redis与Memcache对比

Linux服务器开发

数据库 redis 网络编程 Linux服务器开发 Memcache

LeetCode刷题283-简单-移动零

ベ布小禅

9月日更

执行update语句,用没用到索引,区别大吗?

Simon

MySQL 索引

mac idea配置类和方法的注释

孙强

方法 Mac IDEA 添加注释

从电视购物到电商直播,什么造就了「带货的参差」

融云 RongCloud

关于takin-data,你想知道的都在这里(一)启动命令篇

TakinTalks稳定性社区

从 ClickHouse 到自研 ByteHouse:实时数据分析场景下的优化实践

火山引擎开发者社区

Clickhouse

为什么说敏捷开发是应用程序的未来?

优秀

敏捷开发

RVB2601 应用开发实战系列一: Helloworld 最小系统

Roy夹馍

物联网 risc-v 嵌入式开发

后疫情时代新机遇,运营商如何把握智能家居市场?

鲸品堂

智能家居 运营商 智能家居商业模式

没项目经历,面试有点怂....

Java架构师迁哥

逐梦航天—数字孪生技术仿真火箭发射!

ThingJS数字孪生引擎

大前端 物联网 可视化 航天 数字孪生

NeonIO 云原生存储简介与应用

QingStor分布式存储

云原生 分布式存储

浅谈实时语音质量监控系统

声网

音视频

三涧溪村:乡村产业插上数字化翅膀

浪潮云

工业互联网

RVB2601应用开发实战系列二: 跑马灯

Roy夹馍

物联网 risc-v 嵌入式开发

你了解自己的业务IO么?

焱融科技

云计算 技术 分布式 高性能 存储

TLS协议分析 (二) 架构总览

OpenIM

tomcat启动失败常见错误

hasWhere

关于takin-data,你想知道的都在这里(二)trace日志篇

TakinTalks稳定性社区

【墨天轮专访第三期】达梦数据库冯源:丢掉幻想投入战斗,国产数据库的机遇窗口已经来临!

墨天轮

数据库 国产数据库 达梦

网络攻防学习笔记 Day128

穿过生命散发芬芳

开发安全 9月日更

学习笔记:TCP传输控制协议(一)

姬翔

9月日更

Tapdata 肖贝贝:实时数据引擎系列(四)-关于 Oracle 与 Oracle CDC

tapdata

oracle

21年字节+美团+腾讯,大厂必问面试真题总结(Java岗)

Java架构师迁哥

Premo测试框架详解

趣链科技

区块链 测试工具 测试发开

学生管理系统详细架构设计

Nullrable

Meson,用于协调和调度Netflix推荐工作流的架构_Python_Srini Penchikala_InfoQ精选文章