一日千星的「機器學(xué)習(xí)系統(tǒng)設(shè)計指南」,這個英偉達小姐姐的項目火了
今年 8 月份,畢業(yè)于斯坦福、現(xiàn)就職于英偉達人工智能應(yīng)用團隊的一位小姐姐在推特上列出了十大優(yōu)質(zhì)的免費機器學(xué)習(xí)課程資源,并將它們串成了一條高效的學(xué)習(xí)路線。該課程資源現(xiàn)已獲得 8000 多贊。近日,她又為讀者帶來了新的福利,這次是深度學(xué)習(xí)系統(tǒng)的設(shè)計教程。
將機器學(xué)習(xí)模型變?yōu)榭梢蕴峁┓?wù)和 AI 能力的系統(tǒng)是近來備受關(guān)注的話題。Chip Huyen 此次公開的深度學(xué)習(xí)系統(tǒng)設(shè)計教程是一篇 8000 字的長文,得到了廣泛的關(guān)注。目前其推特已有 5000 贊,而 GitHub 項目也在一天內(nèi)獲得了 1000 多星。
教程地址:https://github.com/chiphuyen/machine-learning-systems-design/blob/master/build/build1/consolidated.pdf
項目地址:https://github.com/chiphuyen/machine-learning-systems-design

從理論到實踐,八千字教程解讀 ML 系統(tǒng)設(shè)計
該教程共包含四個部分:引言、機器學(xué)習(xí)系統(tǒng)的設(shè)計、案例教學(xué)和習(xí)題。其中,案例教學(xué)和習(xí)題部分分別包含 10 個生產(chǎn)環(huán)境經(jīng)典案例和 27 個面試中可能遇到的問題。
全書主要以方法論為主,重點在于提供相應(yīng)的指導(dǎo)原則,幫助讀者思考構(gòu)建系統(tǒng)的必要步驟。

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

作者提出的深度學(xué)習(xí)系統(tǒng)構(gòu)建流程。
項目設(shè)置即對項目進行評估、設(shè)計的環(huán)節(jié)。這一環(huán)節(jié)的目標在于定義深度學(xué)習(xí)所需要解決的實際問題(產(chǎn)品的意義)、性能限制、項目限制、評估方法和個性化等。只有定義清楚項目的目標和實現(xiàn)方法,才能夠確保構(gòu)建的系統(tǒng)能夠滿足要求,解決實際問題。
數(shù)據(jù)是深度學(xué)習(xí)最不可或缺的部分,盡管研究領(lǐng)域的大部分模型都有著充足、平衡且干凈的數(shù)據(jù)集,但是生產(chǎn)條件下則不一定。因此,系統(tǒng)設(shè)計中也需要考慮到數(shù)據(jù)的問題,包括如何獲得可靠、充足、大量的數(shù)據(jù),同時需要面對隱私保護、數(shù)據(jù)安全、數(shù)據(jù)存儲和數(shù)據(jù)平衡方面的問題,并提供可行的解決方案。
在建模過程中,需要經(jīng)過模型選型、訓(xùn)練、調(diào)試和評估幾個環(huán)節(jié)。其中,在模型選擇時需要考慮找到最合適的基準,如隨機基準、人類基準或啟發(fā)式基準。采用的模型則應(yīng)當從簡單到復(fù)雜,訓(xùn)練的過程也應(yīng)當是從少量的數(shù)據(jù)開始,如果行得通就擴大模型規(guī)模,增加投入的數(shù)據(jù)批的大小,并進行調(diào)參工作。如果模型的推理性能不佳,則需要考慮是否是數(shù)據(jù)問題、錯誤的假設(shè)和模型/數(shù)據(jù)擬合,超參選擇錯誤等。
在服務(wù)階段,設(shè)計者需要考慮模型怎樣根據(jù)接收到的輸入提供合適的結(jié)果,用戶怎樣收到這些結(jié)果,怎樣能夠讓他們的反饋更好地改進現(xiàn)有的模型。同時,模型也不是一成不變的,它需要不斷地訓(xùn)練。從現(xiàn)有數(shù)據(jù)進行訓(xùn)練使其變得更精準與給模型增加一個新標簽進行訓(xùn)練是不同的。前者只需要在現(xiàn)有模型上進行訓(xùn)練,而后者則需要從頭開始訓(xùn)練。
10 個經(jīng)典案例
為了避免理論上的「紙上談兵」,在全書的第三部分,作者提供了 10 個案例教學(xué),用于幫助讀者理解理論,學(xué)習(xí)實踐。
閱讀這些案例可以學(xué)到如何在生產(chǎn)環(huán)境中克服種種部署要求和約束。Airbnb、Lyft、Uber、Netflix 等很多公司都開設(shè)了博客來介紹自己使用機器學(xué)習(xí)改進產(chǎn)品或生產(chǎn)流程的經(jīng)驗。需要面試的小伙伴可以經(jīng)常瀏覽這些博客。本教程介紹了其中的一些精華案例,包括:
1. 利用機器學(xué)習(xí)預(yù)測 Airbnb 上的房屋價值。
鏈接:https://medium.com/airbnb-engineering/using-machine-learning-to-predict-value-of-homes-on-airbnb-9272d3d4739d
2. 利用機器學(xué)習(xí)提高 Netflix 上的數(shù)據(jù)流質(zhì)量。
鏈接:https://medium.com/netflix-techblog/using-machine-learning-to-improve-streaming-quality-at-netflix-9651263ef09f
3. 繽客網(wǎng) 150 個成功的機器學(xué)習(xí)模型:從中學(xué)到的 6 個經(jīng)驗教訓(xùn) 。
鏈接: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. 用機器學(xué)習(xí)驅(qū)動 Airbnb 搜索體驗。
鏈接:https://medium.com/airbnb-engineering/machine-learning-powered-search-ranking-of-airbnb-experiences-110b4b1a0789
6. Lyft 公司的反欺詐機器學(xué)習(xí)系統(tǒng)。
鏈接:https://eng.lyft.com/from-shallow-to-deep-learning-in-fraud-9dafcbcef743
7. Instacart 外送服務(wù)中的路徑優(yōu)化。
鏈接:https://tech.instacart.com/space-time-and-groceries-a315925acf3a
8. Uber 的大數(shù)據(jù)平臺:具有分鐘級延遲的 100+Petabytes。
鏈接:https://eng.uber.com/uber-big-data-platform/
9. 利用計算機視覺和深度學(xué)習(xí)來創(chuàng)建現(xiàn)代化的 OCR 管道。
鏈接:https://blogs.dropbox.com/tech/2017/04/creating-a-modern-ocr-pipeline-using-computer-vision-and-deep-learning/
10. 利用 Uber 推出的 Michelangelo 機器學(xué)習(xí)平臺來擴展機器學(xué)習(xí)。
鏈接:https://eng.uber.com/scaling-michelangelo/
27 個練習(xí)題
最后,還有 27 個練習(xí)題可供上手嘗試。習(xí)題的答案將在《Machine Learning Interviews》一書中給出。
想貢獻答案的同學(xué)可以戳:https://github.com/chiphuyen/machine-learning-systems-design/tree/master/answers



此外,作者提醒大家注意,這里的問題有些是模棱兩可的。如果在面試中遇到這些問題,你需要引導(dǎo)面試官把問題描述清楚、縮小范圍。



























