一日千星的「機器學習系統設計指南」,這個NVIDIA 小姐姐的項目火了
- 2019 年 12 月 6 日
- 筆記
機器之心整理
機器之心編輯部
今年 8 月份,畢業於斯坦福、現就職於NVIDIA 人工智慧應用團隊的一位小姐姐在推特上列出了十大優質的免費機器學習課程資源,並將它們串成了一條高效的學習路線。該課程資源現已獲得 8000 多贊。近日,她又為讀者帶來了新的福利,這次是深度學習系統的設計教程。
將機器學習模型變為可以提供服務和 AI 能力的系統是近來備受關注的話題。Chip Huyen 此次公開的深度學習系統設計教程是一篇 8000 字的長文,得到了廣泛的關注。目前其推特已有 5000 贊,而 GitHub 項目也在一天內獲得了 1000 多星。
- 教程地址:https://github.com/chiphuyen/machine-learning-systems-design/blob/master/build/build1/consolidated.pdf
- 項目地址:https://github.com/chiphuyen/machine-learning-systems-design

從理論到實踐,八千字教程解讀 ML 系統設計
該教程共包含四個部分:引言、機器學習系統的設計、案例教學和習題。其中,案例教學和習題部分分別包含 10 個生產環境經典案例和 27 個面試中可能遇到的問題。
全書主要以方法論為主,重點在於提供相應的指導原則,幫助讀者思考構建系統的必要步驟。

引言
在第一部分,作者介紹了機器學習研究和生產的主要區別。這些區別體現在兩個方面:性能需求和計算需求。
在性能需求方面,對於機器學習研究者而言,SOTA 就是一切。他們會不惜使用各種複雜的技術及其組合來追求百分之一的性能提升,但這種提升在生產環境中可能並不適用,而且會因為過於複雜而消耗更多計算資源。
在計算需求方面,由於目前流行的大模型需要昂貴的計算資源,因此如果想把這些模型應用到生產環境中,還需要社區去探索模型壓縮、預訓練等技術,使得模型更小、更快。生產領域的開發者應該時刻牢記以生產為目標進行機器學習系統的設計。
機器學習系統設計四部曲
第二部分是這本書的核心內容,即如何設計一個機器學習系統。作者將這一設計過程分為四步:項目設置、數據 pipeline、建模(選擇、訓練和調試模型)和服務(測試、部署和維護模型)。

作者提出的深度學習系統構建流程。
項目設置即對項目進行評估、設計的環節。這一環節的目標在於定義深度學習所需要解決的實際問題(產品的意義)、性能限制、項目限制、評估方法和個性化等。只有定義清楚項目的目標和實現方法,才能夠確保構建的系統能夠滿足要求,解決實際問題。
數據是深度學習最不可或缺的部分,儘管研究領域的大部分模型都有著充足、平衡且乾淨的數據集,但是生產條件下則不一定。因此,系統設計中也需要考慮到數據的問題,包括如何獲得可靠、充足、大量的數據,同時需要面對隱私保護、數據安全、數據存儲和數據平衡方面的問題,並提供可行的解決方案。
在建模過程中,需要經過模型選型、訓練、調試和評估幾個環節。其中,在模型選擇時需要考慮找到最合適的基準,如隨機基準、人類基準或啟發式基準。採用的模型則應當從簡單到複雜,訓練的過程也應當是從少量的數據開始,如果行得通就擴大模型規模,增加投入的數據批的大小,並進行調參工作。如果模型的推理性能不佳,則需要考慮是否是數據問題、錯誤的假設和模型/數據擬合,超參選擇錯誤等。
在服務階段,設計者需要考慮模型怎樣根據接收到的輸入提供合適的結果,用戶怎樣收到這些結果,怎樣能夠讓他們的回饋更好地改進現有的模型。同時,模型也不是一成不變的,它需要不斷地訓練。從現有數據進行訓練使其變得更精準與給模型增加一個新標籤進行訓練是不同的。前者只需要在現有模型上進行訓練,而後者則需要從頭開始訓練。
10 個經典案例
為了避免理論上的「紙上談兵」,在全書的第三部分,作者提供了 10 個案例教學,用於幫助讀者理解理論,學習實踐。
閱讀這些案例可以學到如何在生產環境中克服種種部署要求和約束。Airbnb、Lyft、Uber、Netflix 等很多公司都開設了部落格來介紹自己使用機器學習改進產品或生產流程的經驗。需要面試的小夥伴可以經常瀏覽這些部落格。本教程介紹了其中的一些精華案例,包括:
1. 利用機器學習預測 Airbnb 上的房屋價值。
- 鏈接:https://medium.com/airbnb-engineering/using-machine-learning-to-predict-value-of-homes-on-airbnb-9272d3d4739d
2. 利用機器學習提高 Netflix 上的數據流品質。
- 鏈接:https://medium.com/netflix-techblog/using-machine-learning-to-improve-streaming-quality-at-netflix-9651263ef09f
3. 繽客網 150 個成功的機器學習模型:從中學到的 6 個經驗教訓 。
- 鏈接:https://blog.acolyer.org/2019/10/07/150-successful-machine-learning-models/
4. 從零到 400 萬女性用戶的時尚 APP——Chicisimo。
- 鏈接:https://medium.com/hackernoon/how-we-grew-from-0-to-4-million-women-on-our-fashion-app-with-a-vertical-machine-learning-approach-f8b7fc0a89d7
5. 用機器學習驅動 Airbnb 搜索體驗。
- 鏈接:https://medium.com/airbnb-engineering/machine-learning-powered-search-ranking-of-airbnb-experiences-110b4b1a0789
6. Lyft 公司的反欺詐機器學習系統。
- 鏈接:https://eng.lyft.com/from-shallow-to-deep-learning-in-fraud-9dafcbcef743
7. Instacart 外送服務中的路徑優化。
- 鏈接:https://tech.instacart.com/space-time-and-groceries-a315925acf3a
8. Uber 的大數據平台:具有分鐘級延遲的 100+Petabytes。
- 鏈接:https://eng.uber.com/uber-big-data-platform/
9. 利用電腦視覺和深度學習來創建現代化的 OCR 管道。
- 鏈接:https://blogs.dropbox.com/tech/2017/04/creating-a-modern-ocr-pipeline-using-computer-vision-and-deep-learning/
10. 利用 Uber 推出的 Michelangelo 機器學習平台來擴展機器學習。
- 鏈接:https://eng.uber.com/scaling-michelangelo/
27 個練習題
最後,還有 27 個練習題可供上手嘗試。習題的答案將在《Machine Learning Interviews》一書中給出。
想貢獻答案的同學可以戳:https://github.com/chiphuyen/machine-learning-systems-design/tree/master/answers



此外,作者提醒大家注意,這裡的問題有些是模稜兩可的。如果在面試中遇到這些問題,你需要引導面試官把問題描述清楚、縮小範圍。
作者簡介
Chip Huyen 是一位來自越南的作家和電腦科學家,現居於美國矽谷,就職於NVIDIA 人工智慧應用團隊。

Chip Huyen。
她本科和碩士均就讀於斯坦福大學電腦科學專業,曾開設和講授課程《TensorFlow for Deep Learning Research》。
- 課程鏈接:http://web.stanford.edu/class/cs20si/
她還曾協助推出越南第二受歡迎的網路瀏覽器 Coc Coc,每月活躍用戶數量達 2000 萬以上。
她目前正在進行的一些項目包括 SOTAWHAT(查詢和總結 SOTA 人工智慧研究成果)、OpenSeq2Seq(利用語音識別、Text2Speech 和 NLP 進行高效實驗的工具包)以及 Free Hugs Vietnam(為越南青少年提供軟技能的非盈利項目)等。