首页>参考读物>计算机科学与技术>人工智能

Kubeflow学习指南:生产级机器学习系统实现
作者 : [美]特雷弗·格兰特(Trevor Grant),[加]霍尔顿·卡劳(Holden Karau),[俄]鲍里斯·卢布林斯基(Boris Lublinsky),[美]理查德·刘(Richard Liu),[美]伊兰·菲洛年科(Ilan Filonenko) 著
译者 : 狄卫华 译
出版日期 : 2022-01-10
ISBN : 978-7-111-69937-8
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 227
开本 : 16
原书名 : Kubeflow for Machine Learning: From Lab to Production
原出版社: O'Reilly Media, Inc.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

Kubeflow是基于K8S的机器学习工具包,是为数据科学家和数据工程师构建生产级别的机器学习实现而设计的。本书采用循序渐进的方式,从 Kubeflow 的安装、使用和设计开篇,随后从模型训练的整个周期展开,涵盖了数据探索、特征准备、模型训练/调优、模型服务、模型测试、模型监测和模型版本管理等各个环节,既有相关的理论知识也囊括了真实的使用案例,能够让读者在学习 Kubeflow 知识的同时全面了解机器学习的相关知识,是入门和深入学习Kubeflow以及机器学习的良好指南。

图书特色

图书前言

本书的读者对象是构建机器学习系统或模型,并希望将之应用到生产中的数据工程师和数据科学家。如果你曾经训练过优秀的模型,想要知道如何将模型部署到生产中或在将模型部署到生产后如何保持更新,那么本书就是为你准备的。我们希望本书能给你提供工具来替换Untitled_5.ipynb并在生产环境中可靠地工作。
本书不打算从头开始介绍机器学习。如果你刚开始机器学习之旅,可以参考下面列出的资源。
学习资源
我们的目标是教你如何以可重复的方式进行机器学习,以及如何自动训练和部署模型。这里的一个重要问题是,该目标包括广泛的主题,并且你可能不完全熟悉所有的主题。
由于无法深入研究每一个主题,我们为你提供了一个简短的清单,列出了部分我们最喜欢的入门资料。
Python for Data Analysis, 2nd Edition, by Wes McKinney (O’Reilly)
Data Science from Scratch, 2nd Edition, by Joel Grus (O’Reilly)
Introduction to Machine Learning with Python by Andreas C. Müller and Sarah Guido (O’Reilly)
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition, by Aurélien Géron (O’Reilly)
Kubernetes: Up and Running by Brendan Burns et al. (O’Reilly)
Learning Spark by Holden Karau et al. (O’Reilly)
Feature Engineering for Machine Learning by Alice Zheng and Amanda Casari (O’Reilly)
Building Machine Learning Pipelines by Hannes Hapke and Catherine Nelson (O’Reilly)
Apache Mahout: Beyond MapReduce by Dmitriy Lyubimov and Andrew Palumbo (CreateSpace)
R Cookbook, 2nd Edition, by J. D. Long and Paul Teetor (O’Reilly)
Serving Machine Learning Models by Boris Lublinsky (O’Reilly)
“Continuous Delivery for Machine Learning” (https://oreil.ly/y59_n) by Danilo Sato et al.
Interpretable Machine Learning (https://oreil.ly/hBiw1) by Christoph Molnar (self-published)
“A Gentle Introduction to Concept Drift in Machine Learning” (https://oreil.ly/KnJL0) by Jason Brownlee
“Model Drift and Ensuring a Healthy Machine Learning Lifecycle” (https://oreil.ly/q9o6P) by A. Besir Kurtulmus
“The Rise of the Model Servers” (https://oreil.ly/zvIyU) by Alex Vikati
“An Overview of Model Explainability in Modern Machine Learning” (https://oreil.ly/lo36s) by Rui Aguiar
Machine Learning with Python Cookbook by Chris Albon (O’Reilly)
“Machine Learning Flashcards” (https://machinelearningflashcards.com) by Chris Albon
学习Kubeflow绕不开容器和Kubernetes,容器和Kubernetes是一个广泛的、快速发展的实践领域。如果你想加深对它们的了解,我们推荐阅读以下书籍:
Cloud Native Infrastructure by Justin Garrison and Kris Nova (O’Reilly)
Kubernetes: Up and Running by Brendan Burns et al. (O’Reilly)
从业人员的责任
本书可帮助你将机器学习模型投入生产,并用于解决实际问题。采用机器学习解决现实世界的问题固然很好,但你需要考虑其可能造成的影响。
首先,要确保模型足够准确,在Kubeflow中有很好的工具来实现这一点,详见2.2节。即使是最好的工具也不能让你免于所有的错误—例如,在同一数据集上进行超参调优,并报告最终的交叉验证结果。
即使是具有显著预测能力的模型也会产生意外的影响和偏见,其在常规的训练评估阶段可能并不会表现出来。无意的偏见可能很难发现,但这里有许多相关的反面案例(例如,基于Amazon机器学习的招聘引擎的结果有强烈的偏见,该结果导致只雇用男性(https://oreil.ly/VekPG)),这向我们展示了其潜在的深刻影响。未在早期解决这些问题可能会导致你前期的整个工作付之东流,IBM 停止使用面部识别程序(https://oreil.ly/WKUXl)的决定也证明了这一点,在执法部门的面部识别程序中存在明显的种族偏见之后,整个行业也出现了类似的停顿。
即使是看似不偏不倚的数据,如原始购买记录,也可能会出现强烈的偏见,从而导致不正确的建议,甚至更糟。数据集是公开的、广泛可用的,但这并不意味着它是无偏见的。众所周知的词嵌入(https://oreil.ly/1dmOV)已经被证明有许多类型的偏见,包括性别歧视和反移民等。当查看一个新的数据集时,寻找数据中存在偏见的例子并试图尽可能地减少它们是至关重要的。对于最流行的公共数据集,研究中经常会讨论相关的各种技术,你可以用这些技术来作为指导。
虽然本书中没有解决偏见的工具,但我们鼓励你对系统中潜在的偏见进行批判性思考,并在投入生产之前探索解决方案。如果你不知道从哪里开始,可以查看Katharine Jarmul出色的演讲(https://oreil.ly/fiVYL)。IBM在其AI Fairness 360开源工具包(http://aif360.mybluemix.net)中收集了一系列工具和例子,也可以为探索提供参考。减少模型中的偏见的关键步骤是拥有一个多元化的团队,以求尽早发现潜在的问题。正如Jeff Dean(https://oreil.ly/PJNsF)所说:“人工智能充满了希望,并具有革新现代社会众多领域的潜力。为了释放其真正的潜力,我们的领域需要欢迎所有人。从今天的情况来看,肯定还不是这样。我们的领域有一个问题,那就是缺乏包容性。”
需要注意的是,消除偏见或验证结果的准确度并不是一劳永逸的,模型的性能会随着时间的推移而降低,偏见也会被引入—即使你没有修改任何事物。
排版约定
本书中使用以下排版约定:
斜体(Italic)
表示新的术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、 数据类型、环境变量、语句以及关键字。
等宽粗体(Constant width bold)
表示应由用户直接输入的命令或其他文本。
等宽斜体(Constant width italic)
表示应由用户提供的值或由上下文确定的值替换的文本。
该图示表示提示或建议。
该图示表示一般性说明。
该图示表示警告或注意。
示例代码
可以从https://oreil.ly/Kubeflow_for_ML下载补充材料(示例代码、练习、勘误等)。
你可能还会发现在其他许可下有用的示例代码。Kubeflow项目有一个示例仓库(https://oreil.ly/yslNT),在写本书时,它采用Apache 2许可。Canonical还有MicroK8s用户可能特别感兴趣的一系列资源(https://oreil.ly/TOt_E)。
这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用本书中的代码,而不需要联系O’Reilly获得许可,除非需要大段地复制代码。例如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但销售或发布O’Reilly的示例代码则需要获得许可。引用本书的示例代码来回答问题也不需要许可,将本书中的很大一部分示例代码放到自己的产品文档中则需要获得许可。
非常欢迎读者使用本书中的代码,希望(但不强制)注明出处。注明出处的形式包含书名、作者、出版社和ISBN,例如:
Kubeflow for Machine Learning,作者Holden Karau, Trevor Grant, Boris Lublinsky, Richard Liu和Ilan Filonenko,由O’Reilly出版,书号978-1-492-05012-4。
如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过permission@oreilly.com联系我们。
O’Reilly在线学习平台(O’Reilly Online Learning)
40多年来,O’Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com。
如何联系作者
如有反馈,请发邮件至intro-to-ml-kubeflow@googlegroups.com。关于 Kubeflow 相关的任何交流,请在线关注我们。
Trevor
Twitter (https://twitter.com/rawkintrevo)
Blog (https://rawkintrevo.org)
GitHub (https://github.com/rawkintrevo)
Myspace (https://myspace.com/rawkintrevo)
Holden
Twitter (http://twitter.com/holdenkarau)
YouTube (https://www.youtube.com/user/holdenkarau)
Twitch (https://www.twitch.tv/holdenkarau)
LinkedIn (https://www.linkedin.com/in/holdenkarau)
Blog (http://blog.holdenkarau.com)
GitHub (https://github.com/holdenk)
Facebook (https://www.facebook.com/hkarau)
Boris
LinkedIn (https://www.linkedin.com/in/boris-lublinsky-b6a4a/)
GitHub (https://github.com/blublinsky)
Richard
GitHub (https://github.com/richardsliu)
Ilan
LinkedIn (https://www.linkedin.com/in/ifilonenko)
GitHub (https://github.com/ifilonenko)
如何联系我们
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O’Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至bookquestions@oreilly.com。
本书配套网站https://oreil.ly/Kubeflow_for_Machine_Learning上列出了勘误表、示例以及其他信息。
关于书籍、课程、会议和新闻的更多信息,请访问我们的网站http://oreilly.com。
我们在Facebook上的地址:http://facebook.com/oreilly
我们在Twitter上的地址:http://twitter.com/oreillymedia
我们在YouTube上的地址:http://www.youtube.com/oreillymedia
致谢
感谢 O’Reilly Media 的每一个人,特别是我们的编辑 Amelia Blevins 和 Deborah Baker;也感谢Kubeflow社区的每一个人,他们使本书得以出版。感谢 Clive Cox和Alejandro Saucedo(来自Seldon(https://www.seldon.io))对第8章做出了杰出的贡献,否则本书将会缺少关键部分。感谢Google Cloud Platform(GCP)提供的资源使本书的例子能够在GCP上正常工作。最感谢的是审校者,没有他们,本书就不会以现在的形式出版,包括Taka Shinagawa、Pete MacKinnon、Kevin Haas、Chris Albon和Hannes Hapke 等。感谢所有早期的读者和审校者的贡献。
Holden
感谢朋友Kris Nóva帮忙调试了首个Kubeflow PR,也感谢整个Kubeflow社区的热情帮助。感谢妻子 Carolyn DeSimone、小狗 Timbit DeSimone-Karau(见图P-1)以及毛绒玩具为她提供了写作所需的所有支持。感谢旧金山综合医院和加州大学旧金山分校的医生,感谢他们为她治好了手,让她可以完成本书的写作,也感谢每一个来医院和疗养院看望她的人。特别感谢编辑Ann Spencer(让她享受了写作的乐趣)。最后,感谢朋友Els van Vessem,感谢他们在她遭遇事故后的康复过程中给予支持,特别是为她讲故事以及提醒她坚持写作。

图P-1:小狗 Timbit
Ilan
在此感谢 Bloomberg 的所有同事,感谢他们花时间审校本书、指导和鼓励他写书以及他们的开源贡献,包括但不限于:Kimberly Stoddard、Dan Sun、Keith Laban、Steven Bower 和 Sudarshan Kadambi。感谢家人Galia、Yuriy 和Stan对他无条件的爱和支持。
Richard
在此感谢谷歌 Kubeflow 团队,包括但不限于:Jeremy Lewi、Abhishek Gupta、Thea Lamkin、Zhenghui Wang、Kunming Qu、Gabriel Wen、Michelle Casbon和 Sarah Maddox。感谢猫咪 Tina(见图P-2)的支持和理解。

图P-2:猫咪 Tina
Boris
感谢 Lightbend 公司的同事(特别是 Karl Wehden),感谢他们对写作本书的支持、建议和对本书早期版本的校对。感谢妻子 Marina 对他长时间工作的包容和生活中对他的照料。
Trevor
感谢办公室伙伴 Apache 和 Meowska(见图P-3)提醒他小憩的重要性。感谢去年协助 Kubeflow 演讲的所有人(尤其是听过早期版本的人,特别是听过早期版本且现在还在读本书的人—他们是最棒的)。感谢妈妈、姐姐、弟弟这些年对他的各种容忍。

图P-3:Apache 和 Meowska
抱怨
作者们觉得面对API更改实在是太难了,这让本书的写作变得令人沮丧。如果你曾经为 API 的变化而苦恼,要知道,你并不孤单,几乎每个人都会感到烦躁。
Holden 还要抱怨 Timbit DeSimone-Karau 在她工作的时候在院子里拉屎。我们对开车撞了 Holden 的人表示不满,因为这拖慢了本书的出版速度。
Trevor 对他的女朋友有些抱怨,在整个项目中,女朋友一直逼他(越来越坚持)向她求婚,而他一直在“努力”—他说会在本书出版时向她求婚。

上架指导

计算机\人工智能

封底文字

如果你正在训练一个机器学习模型,但不确定如何将其投入生产,本书将协助你完成目标。Kubeflow为模型生命周期的不同阶段提供了一系列云原生工具,从数据探索和特征准备到模型训练和模型服务。本书可以帮助数据科学家用Kubeflow构建生产级机器学习实现,并向数据工程师展示了如何使模型具有可伸缩性和可靠性。
作者使用书中的示例解释了如何使用Kubeflow在云端或者本地开发环境中的Kubernetes上训练机器学习模型并为模型提供服务。
本书将帮助你:
? 理解Kubeflow的设计、核心组件和所能解决的问题。
? 使用Kubeflow和流行的工具(包括scikit-learn、TensorFlow和Apache Spark)训练模型。
? 使用Kubeflow 流水线使模型保持最新状态。
? 了解如何获取模型训练的元数据。
? 为超参调优进行训练。
? 了解如何在生产中为模型提供服务。
? 探索如何用其他开源工具扩展Kubeflow。
“ 本书反映了作者们在数据科学和工程领域几十年的实践经验。你将了解Kubeflow中的组件、完成的任务,以及如何有效地将这些组件一起用于现实世界中的机器学习应用程序。”
——Dean Wampler
Programming Scala
(O’Reilly)的作者
Trevor Grant是Apache Mahout的PMC主席。
Holden Karau是湾区的一名开发人员,也是Apache软件基金会成员。
Boris Lublinsky是Lightbend的首席架构师。
Richard Liu是Waymo的一名高级软件工程师。
Ilan Filonenko是Bloomberg数据科学基础设施团队的一名软件工程师。

图书序言

这些年偶尔会有人问我:技术领域最需要什么样的技能?十年前,我的答案是机器学习,它以之前不可能的方式扩展了自动化决策。但是今天,我的答案是机器学习工程。
几年前,你很可能是组织中唯一懂机器学习的人,并开始在组织中进行实践,而且这通常能够产生巨大的影响。但是,随着大量讲解机器学习的书籍、教程和电子课程的普及,当前机器学习已被成千上万的公司和组织采纳并使用。
如今在新的工作岗位上,你面临的情况可能是组织已经在本地使用机器学习,但还不能够将其部署到生产环境中;或者能够部署模型,但无法对其进行有效管理。在这种情况下,最有价值的技能不是训练模型,而是管理模型,并以让它们产生最大影响的方式部署它们。
在本书中,Trevor Grant、Holden Karau、Boris Lublinsky、Richard Liu 和 Ilan Filonenko将我认为是数据科学家和机器学习工程师应掌握的基础知识进行了梳理。在可预见的未来,开源项目Kubeflow将成为组织工具箱中的常用工具,并广泛用于机器学习中模型的训练、管理和部署。
如果你和我一样,相信机器学习的强大之处在于如何使用它,那么本书就是为你准备的。

—Chris Albon
Wikimedia Foundation机器学习总监
https://chrisalbon.com

译者序

“一桥飞架南北,天堑变通途”,用这句话来描述 Kubeflow 再恰当不过了。Kubeflow将云计算与机器学习这两列高速列车紧密地联系在一起,使得两者相互补充,协同发展。Kubeflow并不仅仅是 Kubernetes和TensorFlow的组合,各种机器学习主流框架(TensorFlow、PyTorch、Apache MXNet 等)都可以在Kubeflow中大展身手。
Kubeflow是为数据科学家和数据工程师构建生产级机器学习实现而设计的,在数据探索、特征准备、模型训练/调优、模型服务、模型测试、模型监控和模型版本管理等方面都提供内置组件的支持。与此同时,Kubeflow的Pipeline(流水线)系统允许用户建立集成的端到端Pipeline,用于连接模型开发生命周期(MDLC)中的所有组件。Kubeflow可以在本地的开发环境或生产集群中运行。通常情况下,Pipeline会在本地开发,在测试完成后迁移至其他环境。Kubeflow提供了一个统一的系统—利用Kubernetes进行容器化和扩展,以实现其 Pipeline的可移植性和可重复性。
Kubeflow并不寻求重新发明轮子,也不提供“一刀切”的解决方案。相反,Kubeflow允许机器学习从业者根据特定需求组合和定制技术栈,简化了大规模构建和部署机器学习系统的过程。这使得数据科学家可以将精力集中在模型开发而不是基础设施上。
本书采用循序渐进的方式,从 Kubeflow 的安装、使用和设计开篇,随后从模型训练的整个生命周期展开,既有相关的理论知识,又包括真实的案例,让读者在学习Kubeflow 知识的同时能够全面了解机器学习的相关知识,是入门和深入学习机器学习的良好书籍,希望读者在阅读本书以后能够在机器学习工程的实践之路上更加自信。
本书的翻译比预想的要困难很多,从逐词推敲到逐句整理,从逐段梳理到逐章组织,无论是学习技术还是翻译整理,都是一件非常有挑战的事情,但这也绝对是我所做过的最有意义的事情之一,希望本书能让更多的机器学习工作者从中受益。
在此,要感谢爱人的大力支持和理解(经常占用周末时间来翻译);感谢活泼可爱而又调皮的儿子给我生命中带来了如此多的快乐并给予我不断成长的机会。
感谢李忠明编辑的信任和翻译过程中的耐心指导,这又是一次非常愉快的合作。
感谢马达和高策百忙之中提供的帮助。
由于时间和译者水平有限,译稿中难免有不足之处,敬请批评勘正。

狄卫华
2021年8月

图书目录

序言 1
前言 3
第1章 Kubeflow及其适用对象 13
1.1 模型开发生命周期 13
1.2 Kubeflow 适合什么场景 14
1.3 为什么需要容器化 14
1.4 为什么需要 Kubernetes 15
1.5 Kubeflow的设计和核心组件 15
1.6 Kubeflow的替代方案 19
1.7 案例研究 21
1.8 总结 22
第2章 你好,Kubeflow 24
2.1 搭建Kubeflow 24
2.2 训练和部署模型 30
2.3 超越本地部署 34
2.4 总结 34
第3章 Kubeflow设计:超越基础 35
3.1 中央仪表盘 36
3.2 支持组件 43
3.3 总结 50
第4章 Kubeflow Pipeline 51
4.1 Pipeline入门 51
4.2 Kubeflow Pipeline组件介绍 60
4.3 Pipeline高级主题 68
4.4 总结 72
第5章 数据准备和特征准备 73
5.1 选择正确的工具 74
5.2 本地数据准备和特征准备 74
5.3 分布式工具 78
5.4 将其整合到一个Pipeline中 92
5.5 将整个notebook作为数据准备Pipeline阶段使用 94
5.6 总结 95
第6章 制品和元数据存储 96
6.1 Kubeflow ML Metadata 97
6.2 基于Kubeflow的MLflow元数据工具 102
6.3 总结 110
第7章 训练机器学习模型 111
7.1 用TensorFlow构建推荐器 111
7.2 部署TensorFlow训练作业 117
7.3 分布式训练 120
7.4 使用scikit-learn训练模型 125
7.5 总结 132
第8章 模型推断 133
8.1 模型服务 133
8.2 模型监控 136
8.3 模型更新 137
8.4 推理要求概述 138
8.5 Kubeflow中的模型推理 138
8.6 TensorFlow Serving 139
8.7 Seldon Core 143
8.8 KFServing 158
8.9 总结 174
第9章 多工具使用案例 175
9.1 CT扫描去噪示例 175
9.2 共享Pipeline 186
9.3 总结 186
第10章 超参调优和自动化机器学习 187
10.1 AutoML概述 187
10.2 使用Kubeflow Katib进行超参调优 188
10.3 Katib概念 189
10.4 安装Katib 191
10.5 运行第一个Katib实验 192
10.6 调优分布式训练作业 200
10.7 神经网络架构搜索 201
10.8 Katib的优势 204
10.9 总结 205
附录A Argo执行器配置和权衡 207
附录B 特定于云的工具和配置 208
附录C 在应用程序中使用模型服务 210

教学资源推荐
作者: 郭斌 梁韵基 於志文 著
作者: (新西兰)Ian H.Witten 怀卡托大学 Eibe Frank 怀卡托大学 Mark A. Hall 怀卡托大学 著
参考读物推荐
作者: [印] 萨扬·穆霍帕迪亚(Sayan Mukhopadhyay) 著
作者: 应忍冬 刘佩林 编著
作者: [美] 弗朗西斯科·里奇(Francesco Ricci) 利奥·罗卡奇(Lior Rokach) 布拉哈·夏皮拉(Bracha Shapira) 保罗 B. 坎特(Paul B. Kantor) 编