具体描述
《构建实时机器学习系统》特点:以全栈机器学习应用为目标
通过介绍Docker等部署工具,帮助读者加速掌握机器学习模型的产业化进程。不管你是就职于大公司,还是自己创业,希望《构建实时机器学习系统》的内容能够让你快速上线满意的机器学习系统,离梦想更近一点。
抓住机器学习主干,远离学院派
世界在变,机器学习也在不停地变。对于机器学习中的很多重要成员,如建模工具、分布式队列等,《构建实时机器学习系统》都会对其来龙去脉和发展趋势进行综述。希望通过这样的讨论,能够让读者对机器学习的发展趋势有自己的判断,在未来的成长中也能独占鳌头。
能读的代码,能跑的例子
《构建实时机器学习系统》力求避免代码的大段堆砌。所有案例代码都力求在20行以内,所有例子都通过多次可用性测试。同时我们也将源代码寄存在Github上面,随时进行更新排错。
实时股票交易实例数据
采用美股交易秒级数据作为案例数据,搭建实时机器学习平台,对数据进行存储、加工分析和可视化,并且对数据未来若干秒的走势进行预测。
作者简介
彭河森,资深机器学习科学家,曾在Google、Amazon、微软等公司从事一线机器学习构架和开发工作,参与了Google实时数据警报、Amazon产品广告自动化优化、微软必应广告等多项海量数据、延时要求苛刻的机器学习应用工作。也参与Scikit—learn、Airflow、R等多项开源项目。对机器学习项目的生存期管理、架构设计、软件开发以及应用关键有着丰富的经验。
汪涵,资深机器学习开发者,曾是Amazon、微软、Quantlab、晨星等公司一线机器学习开发人员,参与了AmazonAB检验服务、微软必应搜索问答系统等多项关键大数据处理和机器学习应用的构架和开发工作。对机器学习、自然语言处理有着深刻的体会。
目录信息
第1部分 实时机器学习方法论
第1章 实时机器学习综述 2
1.1 什么是机器学习 2
1.2 机器学习发展的前世今生 3
1.2.1 历史上机器学习无法调和的难题 3
1.2.2 现代机器学习的新融合 4
1.3 机器学习领域分类 5
1.4 实时是个“万灵丹” 6
1.5 实时机器学习的分类 7
1.5.1 硬实时机器学习 7
1.5.2 软实时机器学习 7
1.5.3 批实时机器学习 8
1.6 实时应用对机器学习的要求 8
1.7 案例:Netflix在机器学习竞赛中学到的经验 9
1.7.1 Netflix 用户信息被逆向工程 9
1.7.2 Netflix 最终胜出者模型无法在生产环境中使用 9
1.8 实时机器学习模型的生存期 10
第2章 实时监督式机器学习 12
2.1 什么是监督式机器学习 12
2.1.1 “江湖门派”对预测模型的
不同看法 13
2.1.2 工业界的学术门派 14
2.1.3 实时机器学习实战的思路 15
2.2 怎样衡量监督式机器学习模型 16
2.2.1 统计量的优秀 16
2.2.2 应用业绩的优秀 20
2.3 实时线性分类器介绍 20
2.3.1 广义线性模型的定义 20
2.3.2 训练线性模型 21
2.3.3 冷启动问题 22
第3章 数据分析工具 Pandas 23
3.1 颠覆 R 的 Pandas 23
3.2 Pandas 的安装 24
3.3 利用 Pandas 分析实时股票报价数据 24
3.3.1 外部数据导入 25
3.3.2 数据分析基本操作 25
3.3.3 可视化操作 26
3.3.4 秒级收盘价变化率初探 28
3.4 数据分析的三个要点 30
3.4.1 不断验证假设 30
3.4.2 全面可视化,全面监控化 30
第4章 机器学习工具 Scikit-learn 31
4.1 如何站在风口上?向Scikit-learn 学习 31
4.1.1 传统的线下统计软件 R 31
4.1.2 底层软件黑盒子 Weka 32
4.1.3 跨界产品 Scikit-learn 33
4.1.4 Scikit-learn的优势 33
4.2 Scikit-learn 的安装 34
4.3 Scikit-learn 的主要模块 35
4.3.1 监督式、非监督式机器学习 35
4.3.2 建模函数fit和predict 36
4.3.3 数据预处理 38
4.3.4 自动化建模预测 Pipeline 39
4.4 利用 Scikit-learn 进行股票价格波动预测 40
4.4.1 数据导入和预处理 41
4.4.2 编写专有时间序列数据预处理模块 41
4.4.3 利用 Pipeline 进行建模 43
4.4.4 评价建模效果 43
4.4.5 引入成交量和高维交叉项进行建模 44
4.4.6 本书没有告诉你的 45
第2部分 实时机器学习架构
第5章 实时机器学习架构设计 48
5.1 设计实时机器学习架构的
四个要点 48
5.2 Lambda 架构和主要成员 49
5.2.1 实时响应层 49
5.2.2 快速处理层 50
5.2.3 批处理层 50
5.3 常用的实时机器学习架构 50
5.3.1 瀑布流架构 50
5.3.2 并行响应架构 51
5.3.3 实时更新模型混合架构 52
5.4 小结 53
第6章 集群部署工具 Docker 55
6.1 Docker 的前世今生 55
6.2 容器虚拟机的基本组成部分 56
6.3 Docker 引擎命令行工具 57
6.3.1 Docker 引擎的安装 57
6.3.2 Docker 引擎命令行的基本操作 58
6.4 通过 Dockerfile 配置容器虚拟机 61
6.4.1 利用 Dockerfile 配置基本容器虚拟机 62
6.4.2 利用 Dockerfile 进行虚拟机和宿主机之间的文件传输 62
6.5 服务器集群配置工具Docker Compose 64
6.5.1 Docker Compose 的安装 64
6.5.2 Docker Compose 的基本操作 64
6.5.3 利用 Docker Compose 创建网页计数器集群 65
6.6 远端服务器配置工具Docker Machine 68
6.6.1 Docker Machine 的安装 68
6.6.2 安装 Oracle VirtualBox 69
6.6.3 创建和管理 VirtualBox中的虚拟机 69
6.6.4 在 Docker Machine 和 VirtualBox的环境中运行集群 70
6.6.5 利用 Docker Machine 在 Digital Ocean 上配置运行集群 71
6.7 其他有潜力的 Docker 工具 73
第7章 实时消息队列和RabbitMQ 74
7.1 实时消息队列 74
7.2 AMQP 和 RabbitMQ 简介 76
7.3 RabbitMQ的主要构成部分 76
7.4 常用交换中心模式 78
7.4.1 直连结构 78
7.4.2 扇形结构 78
7.4.3 话题结构 79
7.4.4 报头结构 79
7.5 消息传导设计模式 79
7.5.1 任务队列 80
7.5.2 Pub/Sub 发布/监听 80
7.5.3 远程命令 81
7.6 利用 Docker 快速部署RabbitMQ 82
7.7 利用 RabbitMQ 开发队列服务 85
7.7.1 准备案例材料 86
7.7.2 实时报价存储服务 86
7.7.3 实时走势预测服务 89
7.7.4 整合运行实验 93
7.7.5 总结和改进 95
第8章 实战数据库综述 98
8.1 SQL 与 NoSQL,主流数据库分类 98
8.1.1 关系型数据库 99
8.1.2 非关系型数据库 NoSQL 99
8.2 数据库的性能 100
8.2.1 耐分割 100
8.2.2 一致性 101
8.2.3 可用性 101
8.2.4 CAP 定理 101
8.3 SQL和NoSQL对比 102
8.3.1 数据存储、读取方式 102
8.3.2 数据库的扩展方式 103
8.3.3 性能比较 103
8.4 数据库的发展趋势 103
8.4.1 不同数据库之间自动化同步更为方便 103
8.4.2 云数据库的兴起 104
8.4.3 底层和应用层多层化 104
8.5 MySQL 简介 105
8.6 Cassandra简介 105
8.6.1 Cassandra交互方式简介 105
8.6.2 利用Docker安装Cassandra 106
8.6.3 使用Cassandra存储数据 106
第9章 实时数据监控 ELK 集群 107
9.1 Elasticsearch、LogStash和Kibana 的前世今生 107
9.1.1 Elasticsearch 的平凡起家 108
9.1.2 LogStash 卑微的起源 108
9.1.3 Kibana 惊艳登场 109
9.1.4 ELK 协同作战 109
9.2 Elasticsearch 基本架构 109
9.2.1 文档 110
9.2.2 索引和文档类型 111
9.2.3 分片和冗余 112
9.2.4 Elasticsearch 和数据库进行比较 113
9.3 Elasticsearch 快速入门 113
9.3.1 用 Docker 运行 Elasticsearch 容器虚拟机 113
9.3.2 创建存储文档、文档类型和索引 114
9.3.3 搜索文档 117
9.3.4 对偶搜索 120
9.4 Kibana 快速入门 124
9.4.1 利用 Docker 搭建ELK 集群 125
9.4.2 配置索引格式 127
9.4.3 交互式搜索 128
9.4.4 可视化操作 129
9.4.5 实时检测面板 132
第10章 机器学习系统设计模式 134
10.1 设计模式的前世今生 134
10.1.1 单机设计模式逐渐式微 134
10.1.2 微服务取代设计模式的示例 135
10.1.3 微服务设计模式的兴起 137
10.2 读:高速键值模式 137
10.2.1 问题场景 137
10.2.2 解决方案 138
10.2.3 其他使用场景 139
10.3 读:缓存高速查询模式 139
10.3.1 问题场景 139
10.3.2 解决方案 139
10.3.3 适用场景 141
10.4 更新:异步数据库更新模式 141
10.4.1 问题场景 141
10.4.2 解决方案 141
10.4.3 使用场景案例 142
10.5 更新:请求重定向模式 144
10.5.1 问题场景 144
10.5.2 解决方案 144
10.5.3 更新流程 145
10.5.4 使用场景案例 146
10.6 处理:硬实时并行模式 146
10.6.1 问题场景 146
10.6.2 解决方案 147
10.6.3 使用场景案例 147
10.7 处理:分布式任务队列模式 148
10.7.1 问题场景 148
10.7.2 解决方案 149
10.7.3 Storm 作为分布式任务队列 150
10.7.4 适用场景 151
10.7.5 结构的演进 152
10.8 处理:批实时处理模式 152
10.8.1 问题场景 152
10.8.2 解决方案 152
10.8.3 适用场景 153
第3部分 未来展望
第11章 Serverless 架构 156
11.1 Serverless 架构的前世今生 156
11.2 Serverless 架构对实时
机器学习的影响 157
第12章 深度学习的风口 159
12.1 深度学习的前世今生 159
12.2 深度学习的难点 161
12.3 如何选择深度学习工具 161
12.3.1 与现有编程平台、技能整合的难易程度 162
12.3.2 此平台除做深度学习之外,还能做什么 163
12.3.3 深度学习平台的成熟程度 164
12.4 未来发展方向 165
· · · · · · (收起)
读后感
用户评价
坦白说,我期待这本书能提供一些关于如何搭建健壮、可扩展的数据管道的实战经验,毕竟在实际工作中,数据流的稳定性和延迟性是决定系统成败的关键因素。这本书在这方面的论述可谓是深入骨髓,它并没有停留在理论层面,而是详细剖析了在不同场景下,如何选择合适的流处理框架、如何处理数据倾斜、以及如何设计高效的容错机制。我印象特别深刻的是其中关于“状态管理”的一章,作者用非常直白的方式解释了分布式系统中状态一致性的复杂性,并给出了一套可以快速上手的参考架构,这对我当前面临的一个棘手问题提供了直接的解决方案。读完这部分,我立刻在脑海中勾勒出了一个更优化的数据处理流程图,那种豁然开朗的感觉,是阅读许多同类书籍都未曾有过的。此外,书中对不同存储介质(如KV存储、时序数据库)的选型考量也异常细致,避免了盲目追逐“热门技术”的陷阱,真正做到了“选择最适合的,而非最炫酷的”。
这本书的语言风格非常硬朗、直接,充满了工程师特有的逻辑感和精确性,丝毫没有多余的“水分”。它开篇就提出了几个极具挑战性的行业痛点,并迅速将读者的注意力锁定在如何通过系统层面的优化来解决这些痛点上。我特别欣赏作者在描述技术选型时的那种“非黑即白”的判断标准,比如在讨论消息队列的持久化策略时,它毫不留情地指出了某些常见设计的潜在性能瓶颈,并且用量化的指标来支撑其观点,这种严谨的态度让人信服。在涉及到复杂算法的解释时,作者的数学推导过程清晰可见,但同时又巧妙地穿插了对该算法在实际工程中“计算成本”和“工程复杂度”的讨论,使得理论不再是空中楼阁。我感觉自己像是在跟随一位经验极其丰富的技术主管进行项目复盘和架构评审,学到的不仅是技术,更是那种在多重约束下做最优决策的工程哲学。
我很少看到一本技术书籍能如此平衡地处理“面向未来”的趋势与“脚踏实地”的实施。它在讨论新兴技术,比如联邦学习或因果推断在实时系统中的潜力时,保持了一种审慎乐观的态度,既指出了方向,也明确了当前的技术壁垒和尚未成熟的工程实践。这种成熟的视角非常宝贵。此外,书中对可观测性(Observability)的强调也让我印象深刻,作者认为一个“实时”的系统,其健康状况必须是完全透明的,因此它详细介绍了如何整合Metrics、Logs和Traces,并围绕这些数据构建预警和自愈动的机制。这体现了一种现代、完善的系统设计理念,它超越了传统的监控范畴,真正做到了让系统能够“自我感知”和“自我修正”。总体而言,这是一本兼具深度、广度和高度的工程实践指南,绝对值得所有致力于构建下一代智能系统的工程师珍藏。
这本书的封面设计简直太引人注目了,那种深邃的蓝色调配上简洁的线条感,一下子就抓住了我的眼球。拿到手里的时候,首先感受到的是纸张的质感,厚实而又不失细腻,翻页的手感极佳,让人忍不住想一口气读完。我本来是对技术书籍有点敬而远之的,总觉得那些术语和图表会让人望而却步,但这本书的排版非常清晰,字体大小适中,即便是那些复杂的概念,作者也用非常易懂的方式进行了解释,甚至配有一些生动的类比,这让我这个非科班出身的读者也能够大致跟上节奏。我最欣赏的是它在内容编排上的巧妙之处,它并不是那种生硬地罗列知识点,而是更像一个经验丰富的导师在娓娓道来,从宏观的架构思考,到微观的实现细节,过渡得自然流畅,让人感觉每翻过一页,对整个领域的认知都在不断加深。我尤其喜欢其中关于“系统思维”的探讨,它强调的不仅仅是代码的实现,更是对整个业务流程和数据流动的全局把控,这对于正在构建复杂系统的工程师来说,无疑是醍醐灌顶的指引。
这本书在讨论如何将模型部署到生产环境,并确保其性能和可靠性方面,展现出了极高的前瞻性。许多教材关注模型训练的精度,却往往忽略了模型推理阶段的实际瓶颈,而这本书将重点放在了如何实现低延迟、高吞吐的在线服务上。它详细介绍了诸如模型量化、知识蒸馏在生产环境中的应用,以及如何利用硬件加速(如GPU/FPGA)来榨干每一分性能。更让我眼前一亮的是,书中对A/B测试和灰度发布策略的系统化描述,这部分内容几乎是教科书级别的,它不仅提供了技术实现方案,还深入探讨了如何设计合理的指标体系来评估新旧版本的表现,确保迭代过程的平稳。对于任何需要将AI能力嵌入到高流量业务中的团队而言,这本书关于“生产化”的论述价值千金,它帮助我跳出了“模型好不好用”的狭隘视角,转而关注“系统稳不稳健”。
泛泛而谈
系统是一个持续运转的算法业务的下限。
上帝视角来看机器学习。
各种开源工具的文档大杂烩,不推荐
刚好是我需要补充的知识,写得很耐心。 后边略散,工程性思维要用实战来解答。架构师是新时代的工匠,急需开明的学徒制