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