本書以項目為基礎,全面介紹如何將云計算應用于數(shù)據(jù)分析,內容涵蓋大數(shù)據(jù)和機器學習。首先討論異步技術并介紹云計算基礎知識以及虛擬化、容器化和彈性化,然后討論分布式計算、無服務器ETL技術和可管理的機器學習系統(tǒng),還展示了數(shù)據(jù)科學案例研究,作者還分享了一些見解以及對職業(yè)化規(guī)劃的建議。本書包含大量的實踐作業(yè),使用了豐富的資源,包括Python在云平臺(谷歌、AWS、Azure)上的交互式實驗室。
歡迎開啟學習數(shù)據(jù)云計算的旅程。本書設計得非常實用,無論你打開哪一章,都將是開卷有益的。這些資料來自我職業(yè)生涯中所做的真實項目,我在世界各地的大學里使用這些資料進行了教學。
讀完本書后,你將能完成以下工作:
創(chuàng)建云機器學習工作區(qū)。
管理機器學習實驗和計算環(huán)境。
使用機器學習Designer GUI工具創(chuàng)建模型。
使用各種云平臺創(chuàng)建訓練管道(pipeline)。
自動化并監(jiān)視管道。
自動化并觀察實驗。
使用AutoML。
將機器學習模型部署到Azure、GCP和AWS上。
對機器學習端點進行負載測試。
使用機器學習模型調試生產(chǎn)問題。
為機器學習模型建立有用的日志。
為機器學習模型創(chuàng)建有用的API。
為生產(chǎn)部署確定合適的云架構(例如GPU、彈性端點等)。
將持續(xù)交付應用到機器學習系統(tǒng)中。
構建一個基于云的機器學習工程組合項目。
為業(yè)務問題創(chuàng)建一個機器學習工程解決方案。
利用創(chuàng)意為項目制作精彩的錄屏。
挪亞·吉夫特(Noah Gift),加州大學戴維斯分校管理研究生院MSBA項目的講師和顧問。Noah擁有大約20年的Python編程經(jīng)驗,是Python軟件基金會成員。他曾在多家公司擔任過首席技術官、總經(jīng)理、咨詢首席技術官和云架構師。目前,他正在為初創(chuàng)企業(yè)和其他公司提供機器學習和云架構方面的咨詢,并通過Noah Gift Consulting從事CTO級別的咨詢工作。他已經(jīng)出版了近100種技術出版物,其中包括兩本關于從云機器學習到DevOps的書籍。他還是一名已認證的AWS解決方案架構師。
前 言
第1章 開始 1
1.1 有效的異步技術討論 1
1.1.1 可復制代碼 1
1.1.2 音頻、視頻和圖像 5
1.1.3 制作一次,重復使用多次 6
1.1.4 技術討論作為一種主動學習的形式 6
1.1.5 結論 6
1.1.6 練習:創(chuàng)造技術性帖子 6
1.2 有效的異步技術項目管理 7
1.2.1 為什么軟件項目失敗了 7
1.2.2 如何按時交付高質量的軟件 7
1.2.3 其他高失敗率的例子 9
1.2.4 練習:為終項目創(chuàng)建一個技術項目計劃 10
1.3 上AWS、GCP和Azure云 10
1.3.1 AWS 10
1.3.2 微軟的Azure 12
1.3.3 GCP 16
1.3.4 練習:設置CI云 18
1.3.5 練習:上云實驗室 19
1.3.6 高級案例研究:使用Docker和CircleCI從零開始建立云環(huán)境持續(xù)集成 19
1.3.7 使用Docker容器來擴展Makefile的使用 23
1.4 總結 24
1.5 其他相關資源 25
第2章 云計算基礎 26
2.1 為什么應該考慮使用基于云的開發(fā)環(huán)境 26
2.2 云計算概述 27
2.2.1 云計算的經(jīng)濟效益 27
2.2.2 云服務模型:SaaS、PaaS、IaaS、MaaS、Serverless 27
2.3 PaaS持續(xù)交付 29
2.3.1 谷歌應用引擎和云構建持續(xù)交付 29
2.3.2 建立多種類型的網(wǎng)站 36
2.3.3 練習:創(chuàng)建四個網(wǎng)站 39
2.4 基礎設施即代碼 39
2.5 什么是持續(xù)交付和持續(xù)部署 40
2.6 從零開始持續(xù)交付Hugo靜態(tài)站點 40
2.7 總結 60
第3章 虛擬化、容器化和彈性化 61
3.1 彈性資源 61
3.2 容器:Docker 63
3.2.1 Docker入門 63
3.2.2 容器的真實例子 65
3.2.3 運行Docker容器 66
3.2.4 容器注冊表 69
3.2.5 在AWS Cloud9上從零開始構建容器化應用 69
3.2.6 練習:在AWS Cloud9中構建Hello World容器 72
3.3 Kubernetes 72
3.3.1 安裝Kubernetes 73
3.3.2 Kubernetes概述 73
3.3.3 自動伸縮的Kubernetes 77
3.3.4 云中的Kubernetes 78
3.3.5 混合云和多云Kubernetes 78
3.3.6 Kubernetes總結 79
3.4 運行微服務概述 79
3.4.1 創(chuàng)建有效的報警 82
3.4.2 Prometheus入門 84
3.4.3 使用Flask創(chuàng)建Locust負載測試 86
3.4.4 微服務的無服務器實踐、災難恢復和備份 88
3.5 練習:運行Kubernetes Engine 89
3.6 總結 90
第4章 分布式計算的挑戰(zhàn)和機遇 91
4.1 終一致性 91
4.2 CAP定理 92
4.3 阿姆達爾定律 92
4.4 彈性 93
4.5 高可用 93
4.6 摩爾定律的終結 94
4.7 ASIC:GPU、TPU、FPGA 95
4.7.1 ASIC、CPU與GPU 95
4.7.2 使用GPU和JIT 97
4.7.3 練習:GPU編程 100
4.8 總結 100
第5章 云存儲 101
5.1 云存儲類型 101
5.2 數(shù)據(jù)治理 103
5.3 云數(shù)據(jù)庫 104
5.4 鍵-值數(shù)據(jù)庫 105
5.5 圖形數(shù)據(jù)庫 106
5.5.1 為什么不是關系型數(shù)據(jù)庫而是圖形數(shù)據(jù)庫 107
5.5.2 AWS Neptune 107
5.5.3 Neo4j 108
5.5.4 大數(shù)據(jù)的三個V 116
5.6 批處理數(shù)據(jù)與流數(shù)據(jù)和機器學習 117
5.7 云數(shù)據(jù)倉庫 118
5.8 GCP BigQuery 118
5.9 AWS Redshift 123
5.9.1 Redshift工作流中的關鍵操作 123
5.9.2 AWS Redshift總結 124
5.10 總結 124
第6章 無服務器ETL技術 125
6.1 AWS Lambda 125
6.2 使用AWS Cloud9開發(fā)AWS Lambda函數(shù) 128
6.2.1 構建一個API 128
6.2.2 構建一個無服務器數(shù)據(jù)工程管道 129
6.2.3 使用AWS Lambda在AWS S3桶上實現(xiàn)計算機視覺 130
6.2.4 練習:AWS Lambda Step Function 130
6.3 函數(shù)即服務 131
6.4 AWS Lambda的Chalice框架 132
6.5 谷歌云函數(shù) 133
6.6 Azure Flask無服務器機器學習 141
6.7 Cloud ETL 142
6.8 使用ETL從零開始構建社交網(wǎng)絡的現(xiàn)實問題 143
6.8.1 冷啟動問題 143
6.8.2 從零開始構建社交網(wǎng)絡機器學習管道 144
6.8.3 案例研究:如何構建一個新聞提要 146
6.9 總結 146
第7章 可管理的機器學習系統(tǒng) 147
7.1 Jupyter Notebook工作流 147
7.2 AWS Sagemaker概述 152
7.2.1 AWS Sagemaker彈性架構 152
7.2.2 練習:使用Sagemaker 152
7.3 Azure ML Studio概述 154
7.4 谷歌AutoML計算機視覺 154
7.5 總結 155
第8章 數(shù)據(jù)科學案例研究和項目 156
第9章 隨筆 163
9.1 為什么在2029年前將不會有數(shù)據(jù)科學這個職位 163
9.2 利用教育的拆分 165
9.3 垂直集成的AI棧將如何影響IT機構 168
9.4 notebook來了 170
9.5 云原生機器學習和AI 172
9.6 到2021年會培訓100萬人 174
9.6.1 高等教育的現(xiàn)狀將會被打破 175
9.6.2 地方就業(yè)市場將會被打破 179
9.6.3 招聘流