本文主要介紹了在機器學習項目的最初設計階段中,你可能會遇到的陷阱,並詳細闡述如何避免這些陷阱的最佳實踐。
本文最初發表於 Towards Data Science 博客,經原作者 Bruce H. Cottman 授權,InfoQ 中文站翻譯並分享。
圖 1:機器學習應用的迭代生命周期
你是否成功設計、訓練和測試了一個機器學習應用(Machine Learning Application,MLA)?雖然經過了實驗室的審核,但機器學習應用的表現卻是不能令人接受的,甚至可能在生產中失敗?
如果是這樣,請繼續閱讀本文,我將詳細介紹我的同事和我遇到過的陷阱。接下來我將詳細討論最佳實踐,其中一些是我們已經開發的可避免這些陷阱的解決方案。
降低機器學習應用設計、開發和部署的高成本和負擔,是 DataOps、DevOps、MLOps、GitOps、CloudOps.xOps 的方法論領域,其中,Ops 代表運營(Operations)。
我們認為,你應該按照這個順序,先學會爬行,再學會行走,再學會跑步,然後也許是再學會飛行。
在我們看來,xOps 就相當於機器學習應用生命周期中的行走、跑步和飛行。
我們從爬行開始。
本文重點討論項目啟動時的陷阱和最佳實踐:機器學習應用設計階段。
項目管理被描述為陷阱和最佳實踐。
項目管理可以布置成一個步驟圖(邊和節點)。按特定順序執行的任務就是瀑布式項目管理方法。一個例子是按設計、開發、測試和最後部署的順序排列。
註:我們有兩個項目取得了成功,但也有很多項目失敗了。用瀑布項目方法按順序完成這些任務。對於失敗的項目,我們不是沒有時間,就是沒有資金。這些項目都麻煩,要花掉很多周末的時間。
機器學習應用項目管理被想像成一種連續的任務循環圖(參見圖 1)。我們也可以把一個應用項目看作是一個任務清單,其中每個任務都是部分完成的。這些任務中有些可以並行執行,有些依賴於其他任務,有些重複執行,直到應用變成「垃圾箱」。
註:我們建議你通過迭代和異步的方式來完成任務。
但願以上就是我們需要討論的關於機器學習應用項目管理方法的全部內容。從現在開始,我們將重點介紹一些在機器學習應用設計階段所遇到的比較多的陷阱。這些陷阱來自於 40 多年的綜合經驗和大約 18 個機器學習應用項目。
對於本文所列舉的任何陷阱,都會詳細說明一種或多種最佳實踐的變通辦法或解決方案。每個最佳實踐通常都是一個組件任務,它只有儘可能少的先驗輸入。你會注意到,有些任務有不可避免的啟動依賴性。
在機器學習應用項目生命周期中,我們也陷入了開發和生產過程中的陷阱。我們(通常)用最佳實踐來發現自我。
我們之所以把這個陷阱放在第一個位置,是因為作為一家諮詢集團,主要是在 2016 年及更早的時候,在業務問題不需要機器學習解決方案的時候,我們常常將精力投入到機器學習方案。
對所有這些客戶來說,他們想要說他們正在使用機器學習應用,無論他們是否需要機器學習,還是沒有為機器學習做好準備。
請不要笑,但在 2017 年之前的早些時候,我們受僱於客戶,卻沒有發現任何數據或問題。
我們發現,第 1 個陷阱和第 2 個陷阱都需要解決,然後才能繼續。
最佳實踐 1:了解業務問題,定義機器學習應用解決方案不要與那些不能或不願意讓你定義可行的機器學習解決方案的公司合作。
你的第一個項目應該增加功能,而不是替換和改進現有功能。
要證明機器學習的增值,首先要避免將機器學習應用於組織的遺留(現有)系統。說起來容易做起來難!
註:你可能最終會理解組織或部門的業務流程以及該流程的系統實現。對於希望用機器學習解決的業務用例,系統實現將很少或完全不了解。
最佳實踐 3:查找並確定業務用例、流程和 / 或數據流圖關鍵績效指標(Key Performance Indicators,KPI)被組織視為重要指標。組織可以衡量各部門、流程和項目的健康指標。
另外,對利益相關者進行調查,找出最讓他們失望的地方。
舉例來說,一家連鎖酒店衡量房間的可用性,或者一家餐廳衡量桌子的可用性。機器學習可以根據過去的預訂情況預測未來的預訂情況。但是,更有價值的機器學習會降低可用性。
一旦確定了業務用例問題,就可以提出一個機器學習應用解決方案。在第一個機器學習應用取得可衡量的成功之後,你就可以啟動其他的機器學習應用項目了。
最佳實踐 5:當第一個機器學習應用取得成功後,通過啟動更多的機器學習應用項目來增加投資這種最佳實踐是突出的。但不那麼明顯的是,在第一個機器學習應用項目投入生產之前,你的贊助商可能希望啟動更多的機器學習應用項目。
你的贊助者(或你)可能會因為實驗室中訓練、測試和驗證的漂亮結果而非常興奮。提醒自己和他們要對過去的災難保持警覺。
創建單體應用會導致瀑布式開發過程。不同的步驟和應用的各個部分是高度相關的。
將機器學習應用設計成組件或微服務的管道。在這種情況下,每個組件都是一個可分離的機器學習微服務。每個組件都是完全可執行的,彼此獨立,需要明確定義的輸入和輸出。
技巧:基於組件的架構能夠讓你的團隊以異步的方式進行開發機器學習應用的不同部分。
設計的第一部分規定了機器學習應用的功能性和非功能性需求。確定的需求構成了機器學習應用的架構設計。此外,需求將決定生產策略,並對機器學習應用進行具體測試。
技巧:制定並廣泛分享機器學習應用架構藍圖,展示端到端集成機器學習應用管道中的各個邏輯組件。
在機器學習中運用軟體開發項目的經驗。
由於輸入數據和調整參數對隨機機器學習的應用比確定性應用有更大的影響,因此機器學習就不同。然而,你將會發現你過去的大部分軟體工程方法和最佳實踐都適用於你的機器學習項目。
我們看到了很多因為前期工作研究不到位而不得不重新啟動項目的例子。
能工摹形,巧匠竊意。(Good artists borrow, great artists steal.)
——Pablo Ruiz Picasso(1881 年 10 月 25 日——1973 年 4 月 8 日)技巧:一開始花點時間在 GitHub 上搜索一下,然後繼續完成這個項目。技巧:我們的經驗是,arvix.org 上的好論文都是用代碼實現的,並放在 GitHub 上。代碼片段有助於啟動項目。
對於較小規模的項目,一個開箱即用的解決方案可能就足夠了。不幸的是,為了確保在競爭中的領先優勢,可能需要定製功能或多個機器學習模型組合。
最佳實踐 9:自然語言處理應用架構需要 Transformer由於自然語言處理應用在近兩年發生了顯著的變化,我們決定在本文中加入孤立的最佳實踐。
我們曾在 2017 年部署了基於 GLOVE 的自然語言處理應用 。2018 年出現了 BERT Transformer。通過兩個關鍵的改進,BERT 帶來了自然語言處理性能的大躍進:
BERT 被預先訓練在一個語料庫大小至少 4 個數量級(10000 倍)比我們的基於 GLOVE 的機器學習模型更加巨大;
BERT 的模型參數的數量比我們基於 GLOVE 的 ML 模型大兩個數量級(100 倍)。
[……] 擴展到極端規模的模型也會帶來很大的改進 [……]
——Devlin 等人,2018 年
無論機器學習應用有多成功,在項目過程中都會出現一些小問題。我們已經找到了一份提供給客戶項目發起人和經理的 1~2 頁的每周狀態報告,即使他們沒有要求這麼做,但這可以消除項目中的大部分溝通錯誤。
故事:有一次,我們被炒了魷魚,但幸運的是,在兩天之後,當幾次誤解澄清之後,我們又被重新僱用了。從此以後,每周的狀態報告就成了必需的最佳實踐。
無論你在項目中的位置如何,你的要求都是錯誤的,你需要停下來並重新評估。做好重新開始或者被解僱的準備。記錄你新提出的解決方案。人生苦短,無法繼續推出一個需要解決問題的機器學習應用解決方案。
陷阱 8 與陷阱 7 類似。由於你正確地處理了業務用例,所以我們把它列在這裡,但目前業務需求的優先級不高,或者消失了。這樣的話,你唯一能做的就是提出不同的需求,去滿足它們。要做好走人的準備。
早些時候,我們舉辦了《如何從機器學習中獲益?》(How to benefit from Machine Learning?)課程。現在,我們將這些課程指向 Github、Coursera 和 Medium 博客上的 Awesome-X URL。
但我們不會放棄幻燈片,因為我們還是會經常用到它。
技巧:為客戶的開發人員提供機器學習實踐的指導。
對於「我們沒有 ML 部署基礎設施」這個問題,我們只有一個答案(可行的解決方案),那就是去獲取一個雲帳戶。
推出自己的基礎設施是可以做到的。Apple、Amazon、Google、IBM、Zillow 和其他數十億(或數萬億)的公司都已經做到了。我們的答案是:去獲取一個雲帳戶。
Google Cloud Platform(GCP)是基於雲端部署機器學習模型的主要選擇之一。其他選擇有 AWS、Microsoft Azure、Paperspace 等。
技巧:我們最喜歡的是免費的 GCP Colab。
機器學習的最新進展正在發生,並且正在加速。你不想被另一個 BERT 類的事情蒙蔽雙眼。
要及時掌握最新文獻。你還可以向你的客戶宣傳全新的、優秀的機器學習項目。
我們是從外部顧問的角度為客戶設計機器學習應用而寫的本文。但是,如果你是負責設計機器學習應用解決方案的內部員工或團隊,那麼本文提到的所有陷阱和最佳實踐都同樣適用。
人工智慧 1.0 行業的第一波浪潮在 20 世紀 80 年代末可以說是失敗的。人工智慧 1.0 行業由於難以推出強大的生產機器學習應用而夭折。
人工智慧 2.0 行業之所以取得成功,是因為強大的生產機器學習應用的推廣和日常使用。我們預計成功將會持續增長,人們在生活中使用機器學習,甚至都沒有意識到這一點(儘管存在營銷行為)。
但願這些陷阱和最佳實踐能幫助你設計機器學習應用,並使它們成功地投入到生產環境中。
我們將詳述在機器學習項目生命周期的開發和部署階段遇到的更多陷阱。此外,我們還將列出我們用來擺脫困境的最佳實踐。我們在後續博文中完成這一任務。
作者介紹:
Bruce H. Cottman,博士,物理學家、機器學習科學家、不斷取得進步的軟體工程師。熱衷從新興技術中推斷未來。
原文連結:
https://towardsdatascience.com/10-pitfalls-and-11-best-practices-for-the-design-phase-of-a-machine-learning-application-project-66c3d599f87
你也「在看」嗎?👇