写点什么

Spotify 开源 Terraform:用于在 GKE 上运行 Kubeflow

  • 2020-03-16
  • 本文字数:1417 字

    阅读完需:约 5 分钟

Spotify开源Terraform:用于在GKE上运行Kubeflow

Spotify开源了自研的Terraform模块,用于在Google Kubernetes Engine(GKE)上运行机器学习流水线软件Kubeflow。通过将企业内部机器学习平台转换至 Kubeflow,Spotify 工程师缩短了上市时间,将运行的实验规模扩大为原平台的 7 倍。


在 Spotify 的最新博客帖子中,产品经理 Josh Baer 和机器学习工程师 Samuel Ngahane介绍了Spotify在为机器学习“铺平道路”(Paved Road)上的做法。“基于我们推荐的基础架构,使用经慎重考虑过的产品和配置,部署端到端的机器学习解决方案”。通过执行此标准,Spotify 的机器学习工程师得以专注于开展机器学习实验,无需费心基础架构的构建和维护。该平台自 2019 年中旬启动以来,得到约 100 个内部用户的采用,并已运行了 18000 多项实验。


Spotify 长期使用机器学习技术,为用户自动生成定制的播放列表。例如,“每周发现”(Discover Weekly)频道可为用户推荐新的音乐。企业最初的策略是允许各团队自己选择工具和框架。不少现有的基础架构采用了Scala语言,并使用了包括Scio在内的多个由 Spotify 开源的自定义库。Scio 是一种Apache Beam数据处理库,但其在扩展性上存在问题,使得团队需要支持多种框架,导致从概念原型到生产系统之间的迭代时间延长。此外,许多工程师“完全不考虑在基于 Python 的工作流中添加 Scala”。上述问题促使 Spotify 重新考虑自身的框架选取问题,并由此提出了“铺平道路”(Paved Road)这一理念。


“铺平道路”意在解决端到端机器学习工作流中存在的问题。工作流定义了机器学习模型开发和部署的各个阶段,其中包括:


  • 数据预处理

  • 特征转换

  • 模型训练

  • 模型评估

  • 模型上线


具体而言,Spotify 聚焦于各阶段间的数据接口问题,选择采用谷歌TensorFlow Extended (TFX)机器学习平台定义的TFRecord格式和tf.Example类 。团队通过对现有工具构建 TFX 连接器,实现向通用框架的迁移。团队正致力于使用Tensorflow Data Validation(TFDV)等 TFX 组件,支持开发人员检测偏斜分布和错误值等数据问题。但其中依然存在一些挑战。例如,现有工具尚未解决端到端的编排框架问题。


最终,团队决定迁移到开源机器学习工作流平台 Kubeflow Pipelines(KFP)。该平台上的工作流的组件,将打包为受 Kubernetes 管理的 Docker 容器。KFP 为 TFX 提供开箱即用的支持,因此团队无需再去学习新的框架。KFP SDK 的另一个优点是预先打包了许多常用任务,支持代码共享和重用。Spotify 实现了共享 Kubeflow 集群的部署和管理,使得开发人员得以专注于机器学习实验本身,不必操心基础架构管理的细节。群集托管在 Google Kubernetes Engine(GKE)上,使用Terraform配置。


KFP 是一类机器学习全生命周期管理工具。此类工具多由一些大型企业开源提供。例如,Databricks 的MLFlow,以及 Uber 的Michaelangelo。最近,AWS 也新发布了几项Sagemaker服务,力图为机器学习生命周期的各阶段提供统一的接口。在 KubeCon 2019 大会上,Spotify 的机器学习工程师 Ryan Clough 和 Dai Keshi 介绍了 Spotify 的平台。此后,Clough 发了如下推文:


如果要说参与 KubeCon 大会的最大收益,那就是我们同样面对着类似的问题,这些问题会由于各自企业的不同环境而表现各异。尽管我们一直在努力去提供最好的产品,但是没人能独自解决所有的问题。是的,没有人。


Spotify 在 GitHub 上维护了多个开源项目,其中包括TensorFlow helpers等机器学习的相关类库。


原文链接:


Spotify Open-Sources Terraform Module for Kubeflow ML Pipelines


2020-03-16 16:421238

评论

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

送你两个神器,关系数据库数据入湖轻松应对

华为云开发者联盟

数据库 数据湖 数据迁移 关系数据库 实时数据

Stack Overflow 2021 开发者调查报告出炉,开发浪潮中的变与不变

清秋

语言 & 开发 文化 & 方法 Stack Overflow 开发者报告 编程语言排行

揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿

阿里云视频云

阿里云 直播架构 直播技术 视频直播 视频云

Rust从0到1-模式-相关语法

rust 语法 模式 Patterns Syntax

【LeetCode】从上到下打印二叉树Java题解

Albert

算法 LeetCode 8月日更

LeetCode题解:781. 森林中的兔子,贪心,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

从0开始的TypeScriptの五:webpack打包typescript

空城机

JavaScript typescript 大前端 8月日更

netty系列之:自动重连

程序那些事

Java Netty 程序那些事 响应式系统

解决安全漏洞扫描,就靠它了

百度开发者中心

产品 最佳实践 企业动态 百度安全

测试经验| 音视频通话相关app如何进行测试

anyRTC开发者

软件测试 音视频 实时通信

Vue进阶(二十七):Vuex 之 getters, mapGetters, ...mapGetters详解

No Silver Bullet

Vue vuex 8月日更

七夕赶上服务器架构升级,女朋友的约会怎么办

华为云开发者联盟

华为云 FunctionGraph DevStar Serverless架构 服务器架构

Hive企业级性能优化

五分钟学大数据

hive hive性能优化

Ipfs排名前十的公司有哪些?怎么选择靠谱的ipfs公司?

区块链 分布式存储 IPFS fil ipfs公司

什么是工控主机?工控主机安卓主板有哪些配置?

双赞工控

在openEuler上做开发?这个大赛拿出30万寻找开源的yyds

华为云开发者联盟

开源 操作系统 服务器 openEuler 鲲鹏

small-spring 代码贡献者3个月,敢说精通Spring了,分享我的总结!

小傅哥

spring 小傅哥 cglib aware BeanPost

Java Arrays.asList 和 new ArrayList(Arrays.asList()) 的对比

HoneyMoose

初识 C#

若尘

C# 8月日更

Mybatis自定义拦截器与插件开发

码农参上

8月日更

JavaScript 之事件循环(Event Loop)

网易云信

U2Net基于ModelArts Notbook的仿真实验

华为云开发者联盟

开源 modelarts 目标检测算法 U2Net Notbook

手撸二叉树之将有序数组转换为二叉搜索树

HelloWorld杰少

数据结构与算法 8月日更

Prometheus监控的4个黄金指标

Rubble

Prometheus 8月日更

这几个棘手的面试常见问题,如何高情商的回答?

架构精进之路

情商 8月日更

金融级IT架构:网商银行是如何进行数字化落地的

博文视点Broadview

Jetpack Compose 架构分层

Changing Lin

8月日更

Go语言那些事儿之管道的关闭

Regan Yue

Go 语言 8月日更 管道

【Vue2.x 源码学习】第三十三篇 - diff算法-收尾+阶段性总结

Brave

源码 vue2 8月日更

FunTester框架教程(一)

FunTester

教程 接口测试 API测试 测试框架 FunTester

Maven 项目执行的时候提示 JAVA_HOME is not correctly set 错误

HoneyMoose

Spotify开源Terraform:用于在GKE上运行Kubeflow_AI_Anthony Alford_InfoQ精选文章