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