MLOps實踐——機器學(xué)習(xí)從開發(fā)到生產(chǎn)(全彩)
定 價:106 元
- 作者:李攀登
- 出版時間:2022/4/1
- ISBN:9787121431562
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP181
- 頁碼:292
- 紙張:
- 版次:01
- 開本:16開
在大數(shù)據(jù)時代,機器學(xué)習(xí)(ML)在互聯(lián)網(wǎng)領(lǐng)域取得了巨大的成功,數(shù)據(jù)應(yīng)用也逐漸從“數(shù)據(jù)驅(qū)動”階段向“模型驅(qū)動”階段躍升,但這也給ML項目落地帶來了更大的困難,為了適應(yīng)時代的發(fā)展,MLOps應(yīng)運而生。本書從多個方面介紹了MLOps實踐路徑,內(nèi)容涵蓋了設(shè)計、構(gòu)建和部署由ML驅(qū)動的應(yīng)用程序所需的各種實用技能。
李攀登,非參數(shù)統(tǒng)計碩士, AlgoLink(專注于MLOps研發(fā)與應(yīng)用)的創(chuàng)始人,出海游戲公司博樂科技數(shù)據(jù)專家。曾任萬達(dá)集團(tuán)算法專家,藍(lán)色光標(biāo)算法團(tuán)隊負(fù)責(zé)人,Teradata資深數(shù)據(jù)挖掘工程師,亞信科技高級數(shù)據(jù)挖掘工程師。研究方向為機器學(xué)習(xí)、推薦系統(tǒng)、MLOps,擁有機器學(xué)習(xí)算法應(yīng)用相關(guān)專利7項,MLOps專利2項,軟件著作權(quán)1項。
目 錄
第1章 MLOps概述 1
1.1 機器學(xué)習(xí)涉及的概念 1
1.1.1 監(jiān)督學(xué)習(xí) 3
1.1.2 無監(jiān)督學(xué)習(xí) 4
1.1.3 半監(jiān)督學(xué)習(xí) 4
1.1.4 強化學(xué)習(xí) 5
1.1.5 何時使用機器學(xué)習(xí) 5
1.2 機器學(xué)習(xí)相關(guān)符號及術(shù)語定義 7
1.2.1 原始數(shù)據(jù)、輸入數(shù)據(jù)、特征與特征工程 7
1.2.2 訓(xùn)練樣本及預(yù)留樣本 8
1.2.3 參數(shù)與超參數(shù) 8
1.2.4 參數(shù)模型、非參數(shù)模型、極大似然估計 9
1.2.5 機器學(xué)習(xí)管道 11
1.2.6 模型選擇與性能權(quán)衡 12
1.3 機器學(xué)習(xí)的工程挑戰(zhàn)與MLOps解決方案 13
1.3.1 MLOps的定義 14
1.3.2 MLOps與其他Ops的區(qū)別 15
1.3.3 誰在關(guān)注MLOps 17
1.3.4 為什么需要MLOps 19
1.3.5 MLOps給企業(yè)帶來的增益 20
1.3.6 MLOps的工作流程 21
1.3.7 MLOps工程師需要具備的技能 22
1.3.8 什么時候真正需要MLOps 23
1.4 MLOps框架下的工程實踐 24
1.4.1 機器學(xué)習(xí)工程及生產(chǎn)化模塊 25
1.4.2 機器學(xué)習(xí)工程模塊的設(shè)計原則 26
1.4.3 進(jìn)行機器學(xué)習(xí)工程的模塊設(shè)計時需要注意的細(xì)節(jié) 27
1.4.4 編碼環(huán)境與模型探索 27
1.4.5 特征存儲 31
1.4.6 實驗管理和模型管理 32
1.4.7 服務(wù) 32
1.4.8 模型服務(wù)規(guī)模化 33
1.4.9 模型監(jiān)控 34
1.5 本章總結(jié) 34
第2章 在MLOps框架下開展機器學(xué)習(xí)項目 36
2.1 界定業(yè)務(wù)范圍階段 37
2.1.1 在項目規(guī)劃時考慮生產(chǎn)化 37
2.1.2 業(yè)務(wù)需求 38
2.1.3 確定衡量指標(biāo)和項目范圍 38
2.1.4 設(shè)計初步解決方案 40
2.1.5 制定共同語言 41
2.1.6 數(shù)據(jù)權(quán)限及準(zhǔn)備 44
2.2 研究與探索階段 44
2.2.1 數(shù)據(jù)探索 44
2.2.2 技術(shù)有效性檢查 45
2.3 模型開發(fā)階段 46
2.3.1 模型開發(fā)的必要準(zhǔn)備 46
2.3.2 模型開發(fā) 46
2.3.3 模型驗證 46
2.4 模型生產(chǎn)化階段 47
2.5 機器學(xué)習(xí)項目生命周期 48
2.6 團(tuán)隊建設(shè)及分工 49
2.6.1 企業(yè)數(shù)字化程度 50
2.6.2 界定機器學(xué)習(xí)團(tuán)隊的角色 50
2.6.3 探討機器學(xué)習(xí)項目的團(tuán)隊建設(shè)與分工 51
2.6.4 項目外包還是自建機器學(xué)習(xí)團(tuán)隊 53
2.7 本章總結(jié) 55
第3章 MLOps的基礎(chǔ)準(zhǔn)備:模型開發(fā) 56
3.1 背景概要 57
3.2 定義機器學(xué)習(xí)目標(biāo) 57
3.2.1 業(yè)務(wù)問題概述 58
3.2.2 業(yè)務(wù)目標(biāo) 58
3.2.3 機器學(xué)習(xí)目標(biāo) 58
3.3 數(shù)據(jù)收集 58
3.3.1 數(shù)據(jù)獲取 59
3.3.2 加載數(shù)據(jù) 59
3.3.3 關(guān)于數(shù)據(jù)集 61
3.4 數(shù)據(jù)預(yù)處理 62
3.4.1 缺失值處理 62
3.4.2 離群值檢測 63
3.5 數(shù)據(jù)探索 64
3.5.1 目標(biāo)變量 65
3.5.2 服務(wù)分析 65
3.5.3 用戶行為分析 67
3.6 特征工程 70
3.6.1 分類和數(shù)值列拆分 70
3.6.2 One-Hot編碼 72
3.6.3 特征縮放處理 73
3.6.4 目標(biāo)變量 73
3.6.5 樣本生成 74
3.7 構(gòu)建和評估模型 74
3.7.1 處理非平衡問題 74
3.7.2 模型構(gòu)建 75
3.8 持久化模型 78
3.9 構(gòu)建REST API 78
3.9.1 導(dǎo)入相關(guān)庫并加載模型 79
3.9.2 編寫預(yù)測函數(shù) 80
3.9.3 用戶請求 81
3.10 模型投產(chǎn) 82
3.10.1 機器學(xué)習(xí)投產(chǎn)陷阱及挑戰(zhàn) 83
3.10.2 機器學(xué)習(xí)模型演化:從獨立模型到模型工廠 85
3.10.3 利用MLOps實現(xiàn)模型的規(guī);懂a(chǎn) 86
3.11 本章總結(jié) 87
第4章 ML與Ops之間的信息存儲與傳遞機制 88
4.1 機器學(xué)習(xí)實驗跟蹤 89
4.1.1 機器學(xué)習(xí)實驗跟蹤的定義 90
4.1.2 機器學(xué)習(xí)實驗跟蹤的必要性 91
4.1.3 隨時隨地管理實驗 91
4.1.4 機器學(xué)習(xí)實驗跟蹤與模型管理的區(qū)別 92
4.1.5 在MLOps框架中增加機器學(xué)習(xí)實驗跟蹤功能 92
4.1.6 設(shè)計和實現(xiàn)機器學(xué)習(xí)實驗跟蹤API 93
4.1.7 在生產(chǎn)中使用機器學(xué)習(xí)實驗跟蹤API 100
4.2 A/B在線實驗 101
4.2.1 創(chuàng)建在線實驗的必要性 101
4.2.2 確定實驗的范圍與目標(biāo) 102
4.2.3 最小樣本量的確定方法 103
4.2.4 對機器學(xué)習(xí)模型進(jìn)行A/B測試 104
4.2.5 在MLOps框架中增加A/B在線實驗功能 105
4.2.6 用于A/B在線實驗的MAB方案 108
4.2.7 MLOps框架中的A/B實驗管理 110
4.3 模型注冊 111
4.3.1 模型注冊的定義 111
4.3.2 模型注冊的必要性 112
4.3.3 將模型注冊功能融入MLOps框架 114
4.3.4 模型注冊中心存儲的信息 115
4.3.5 模型注冊的價值 116
4.3.6 先從一個簡單的模型注冊開始 118
4.3.7 設(shè)計和實現(xiàn)符合MLOps標(biāo)準(zhǔn)的模型注冊中心 119
4.3.8 在生產(chǎn)中使用模型注冊API 124
4.3.9 模型注冊中心的權(quán)限設(shè)置 126
4.4 特征存儲 127
4.4.1 特征工程及使用挑戰(zhàn) 127
4.4.2 特征存儲的定義 128
4.4.3 在MLOps框架中增加特征存儲 129
4.4.4 離線與在線特征 130
4.4.5 特征存儲帶來的益處 131
4.4.6 特征存儲的架構(gòu)設(shè)計 132
4.5 本章總結(jié) 135
第5章 模型統(tǒng)一接口設(shè)計及模型打包 136
5.1 機器學(xué)習(xí)模型基礎(chǔ)接口概述 136
5.1.1 軟件開發(fā)的策略模式 137
5.1.2 Scikit-Learn對接口的處理方法 138
5.2 業(yè)內(nèi)一些常見的解決方案 139
5.2.1 AWS的機器學(xué)習(xí)生命周期工具SageMaker 139
5.2.2 Meta的機器學(xué)習(xí)平臺FBLearner Flow 139
5.2.3 Uber的機器學(xué)習(xí)平臺Michelangelo 140
5.2.4 開源的Seldon Core 140
5.3 一個簡單的機器學(xué)習(xí)模型接口示例 140
5.3.1 繼承ModelBase基類 142
5.3.2 模型管理基類 145
5.3.3 Flask REST端點 148
5.4 機器學(xué)習(xí)項目打包 148
5.4.1 模型及代碼打包的必要性 149
5.4.2 模型和代碼打包的事項及示例 150
5.4.3 模型序列化 150
5.5 本章總結(jié) 152
第6章 在MLOps框架下規(guī);渴鹉P 153
6.1 定義及挑戰(zhàn) 154
6.1.1 機器學(xué)習(xí)部署的簡單定義 154
6.1.2 部署機器學(xué)習(xí)模型的常見挑戰(zhàn) 155
6.2 對業(yè)務(wù)的驅(qū)動邏輯 156
6.2.1 模型部署的邊界 156
6.2.2 模型部署與業(yè)務(wù)應(yīng)用流程的關(guān)系 157
6.3 常見的設(shè)計模式 158
6.3.1 用于在線推理的機器學(xué)習(xí)模型部署的挑戰(zhàn) 159
6.3.2 什么時候需要在線推理 162
6.3.3 什么時候使用批量推理 162
6.3.4 數(shù)據(jù)庫批量推理模式 163
6.3.5 嵌入式推理模式 164
6.3.6 單服務(wù)推理模式 165
6.3.7 微服務(wù)推理模式 166
6.4 構(gòu)建MLOps通用推理服務(wù):模型即服務(wù) 168
6.4.1 模型即服務(wù)的工作流程 169
6.4.2 模型即服務(wù)的核心服務(wù)模塊 171
6.5 Web服務(wù)框架及應(yīng)用生態(tài) 172
6.5.1 Web應(yīng)用程序 172
6.5.2 WSGI服務(wù)器 173
6.5.3 Web服務(wù)器 176
6.5.4 使用REST API為模型提供服務(wù) 178
6.6 基于Docker的模型應(yīng)用程序部署 179
6.6.1 Docker的定義 180
6.6.2 Docker容器、Python虛擬環(huán)境和虛擬機 180
6.6.3 構(gòu)建HTTP REST API 181
6.6.4 創(chuàng)建生產(chǎn)級的Docker鏡像 182
6.6.5 構(gòu)建并運行Docker容器 183
6.7 模型即服務(wù)的自動化 184
6.7.1 模型即服務(wù)的邏輯設(shè)計 184
6.7.2 模型即服務(wù)的通用接口定義 187
6.7.3 使用SQLAlchemy ORM重構(gòu)MLOps的信息存儲表 187
6.8 在MLOps框架下實現(xiàn)模型部署示例 190
6.8.1 將構(gòu)建好的模型進(jìn)行注冊 190
6.8.2 模型部署和服務(wù)化 193
6.8.3 機器學(xué)習(xí)實驗跟蹤功能升級 195
6.9 基于開源項目的模型服務(wù)解決方案 199
6.9.1 基于Kubernetes的資源管理項目KFServing 199
6.9.2 機器學(xué)習(xí)部署平臺Seldon Core 199
6.9.3 輕量級模型部署及管理平臺BentoML 200
6.9.4 機器學(xué)習(xí)生命周期管理平臺MLflow 200
6.9.5 機器學(xué)習(xí)模型服務(wù)開源方案的總結(jié) 201
6.9.6 關(guān)于機器學(xué)習(xí)模型部署和服務(wù)方案的思考 201
6.10 本章總結(jié) 202
第7章 MLOps框架下的模型發(fā)布及零停機模型更新 204
7.1 機器學(xué)習(xí)在生產(chǎn)中的CI/CD 205
7.1.1 模型在生產(chǎn)中持續(xù)迭代的挑戰(zhàn) 206
7.1.2 在MLOps框架中添加模型的發(fā)布流程 207
7.1.3 CI階段的實踐 208
7.1.4 CD階段的實踐 211
7.2 模型服務(wù)的發(fā)布策略 211
7.2.1 傳統(tǒng)軟件工程的發(fā)布策略 212
7.2.2 部署即發(fā)布 212
7.2.3 制定機器學(xué)習(xí)模型服務(wù)發(fā)布策略的必要性 213
7.2.4 影子測試策略與漸進(jìn)式推出策略 214
7.2.5 競爭策略 216
7.3 零停機更新模型服務(wù) 218
7.3.1 生產(chǎn)中Flask的局限性 219
7.3.2 關(guān)于GIL、線程和進(jìn)程的入門知識 219
7.3.3 從單線程的Flask到uWSGI 220
7.3.4 模型更新條件檢查 222
7.3.5 動態(tài)更新模型方案 222
7.3.6 基于Kubernetes的擴(kuò)展方案 227
7.4 本章總結(jié) 228
第8章 MLOps框架下的模型監(jiān)控與運維 230
8.1 機器學(xué)習(xí)模型監(jiān)控簡介 230
8.1.1 模型的監(jiān)控場景 231
8.1.2 為什么監(jiān)控很重要 232
8.1.3 機器學(xué)習(xí)監(jiān)控與傳統(tǒng)軟件監(jiān)控的區(qū)別 233
8.1.4 誰需要關(guān)注機器學(xué)習(xí)的監(jiān)控結(jié)果 234
8.1.5 生產(chǎn)中導(dǎo)致模型衰退或出錯的原因 235
8.2 數(shù)據(jù)科學(xué)問題的監(jiān)控 236
8.2.1 模型漂移 237
8.2.2 決策邊界的改變 238
8.2.3 模擬漂移與模型重建修正 239
8.2.4 數(shù)據(jù)科學(xué)問題監(jiān)控的常見指標(biāo)和方法 240
8.3 運維問題的監(jiān)控 241
8.3.1 運維問題的監(jiān)控與可觀察性 242
8.3.2 運維問題監(jiān)控的指標(biāo)定義 242
8.4 在MLOps框架內(nèi)增加監(jiān)控功能 243
8.4.1 機器學(xué)習(xí)的日志信息記錄 244
8.4.2 使用特征存儲簡化模型監(jiān)控 245
8.4.3 A/B在線實驗閉環(huán) 246
8.4.4 模型衰退檢測 247
8.4.5 模型維護(hù) 249
8.4.6 模型自動持續(xù)訓(xùn)練 251
8.4.7 API緩沖 252
8.5 本章總結(jié) 252
第9章 對MLOps的一些實踐經(jīng)驗總結(jié) 254
9.1 機器學(xué)習(xí)和MLOps平臺比較 254
9.1.1 聚焦傳統(tǒng)機器學(xué)習(xí)與聚焦深度學(xué)習(xí) 254
9.1.2 聚焦分析探索與聚焦產(chǎn)品化 255
9.1.3 面向平民化數(shù)據(jù)科學(xué)與面向數(shù)據(jù)科學(xué)專家 256
9.1.4 專業(yè)化平臺與端到端平臺 256
9.2 自研MLOps平臺 257
9.2.1 自研MLOps平臺的經(jīng)驗總結(jié) 258
9.2.2 MLOps框架或平臺的搭建原則 261
9.2.3 MLOps的架構(gòu)參考 264
9.3 MLOps架構(gòu)的成熟度評估 266
9.3.1 對業(yè)務(wù)需求的定義 267
9.3.2 數(shù)據(jù)準(zhǔn)備 267
9.3.3 模型實驗 268
9.3.4 模型部署 268
9.3.5 模型監(jiān)控 269
9.3.6 模型的持續(xù)訓(xùn)練 270
9.3.7 關(guān)于MLOps架構(gòu)成熟度評估的思考 271
9.4 本章總結(jié) 271