機器學習專案需要具備多種技能、專業知識和職責的團隊成員,才能與機器學習相關。以下是一般機器學習團隊最常見的角色:
角色 | 知識和技能 | 主要成果 |
---|---|---|
機器學習產品經理 | 機器學習產品經理對機器學習的優缺點和開發流程瞭若指掌。他們會直接與機器學習團隊、使用者和其他利害關係人合作,將業務問題與機器學習解決方案進行對應。他們會建立產品願景、定義用途和需求,並規劃及排定專案優先順序。 |
產品需求文件 (PRD)。 |
工程部門經理 | 工程管理員會設定、傳達及達成團隊優先事項,以達成業務目標。就像機器學習產品經理一樣,他們會將機器學習解決方案與業務問題保持一致。他們會為團隊成員設定明確的期望、進行績效評估,並協助他們發展職涯和專業。 |
設計文件、專案計畫和績效評估。 |
數據資料學家 | 數據資料學家會運用量化和統計分析,從資料中擷取洞察和價值。有助於識別及測試功能和模型原型,並協助改善模型的可解讀性。 | 透過統計分析解答業務問題的報表和資料視覺化資料。 |
機器學習工程師 | 機器學習工程師負責設計、建構、推送至正式版環境及管理機器學習模型。他們是優秀的軟體工程師,對機器學習技術和最佳做法有深入的瞭解。 | 部署的模型具有足夠的預測品質,可達成業務目標。 |
資料工程師 | 資料工程師會建構資料管道,用於儲存、匯總及處理大量資料。他們會開發基礎架構和系統,收集原始資料並轉換成可供模型訓練和提供的實用格式。資料工程師負責整個機器學習開發程序中的資料。 | 完全正式發布的資料管道,內含必要的監控和快訊功能。 |
開發人員作業 (DevOps) 工程師 | 開發運作工程師會開發、部署、擴充及監控機器學習模型的服務基礎架構。 | 自動化程序,可用於提供、監控、測試及發出模型行為警示。 |
成功的機器學習專案團隊,都會妥善安排各個角色。在較小的團隊中,個人需要處理多個角色的職責。
建立團隊做法
由於 ML 開發人員的角色、工具和架構差異極大,因此透過優異的程序文件建立常見做法至關重要。舉例來說,某位工程師可能認為只要取得正確的資料,就能開始訓練模型,但較負責任的工程師會驗證資料集是否正確匿名,並記錄其中繼資料和來源。確保工程師共用流程和設計模式的共同定義,可減少混淆情形,並提高團隊的速度。
程序說明文件
程序文件應定義團隊用於機器學習開發的工具、基礎架構和程序。良好的程序文件有助於讓新成員和現有團隊成員保持一致。應能回答下列類型的提問:
- 如何為模型產生資料?
- 如何檢查、驗證及呈現資料?
- 如何修改訓練資料中的輸入特徵或標籤?
- 如何自訂資料產生、訓練和評估管道?
- 如何變更模型架構,以便因應輸入特徵或標籤的變更?
- 我們如何取得測試範例?
- 我們會使用哪些指標來評估模型品質?
- 如何在正式環境中發布模型?
- 如何判斷模型是否有問題?
- 模型依賴哪些上游系統?
- 如何讓 SQL 可維護且可重複使用?
其他可能的問題
模型我可以針對同一管道中的不同資料集訓練模型嗎?例如微調?
如何在管道中新增新的測試資料集?
如何檢查模型對手動建立範例的預測結果?
如何找出模型出錯的示例,並進行檢查及視覺化?
如何判斷哪個特徵最能影響特定預測結果?
如何瞭解哪些特徵對特定樣本中的預測結果影響最大?
如何針對所選資料集或樣本計算或繪製模型預測結果?
如何針對所選資料集計算模型預測的標準指標?
如何開發及計算自訂指標?
如何在離線狀態下比較模型與其他模型?
我可以在單一開發環境中,針對多個模型評估執行元分析嗎?
我可以將目前的模型與 10 個月前的模型進行比較嗎?
我認為自己建立的模型不錯。如何在實際環境中發布?
如何驗證新模型是否在實際運作環境中正確執行?
我可以取得模型評估的歷程記錄嗎?
如何得知模型有問題?
我被指派的網頁/錯誤提到了模型相關內容。 該怎麼辦?
如何自訂資料產生/訓練/評估管道?
我應該何時及如何建立全新管道?
我需要使用 SQL 產生一些資料。我該將其放在哪裡?
模型放送的運作方式為何?是否有圖表?
我的模型依賴哪些上游系統,我應該注意什麼?
我無法找出原因。該與誰聯絡?如何聯絡?
注意事項
不同公司、團隊和個人對「機器學習最佳做法」的定義可能不同。舉例來說,部分團隊成員可能會將實驗性 Colab 視為主要成果,而其他人則想在 R 中工作。有些人可能熱衷於軟體工程,有些人認為監控是最重要的事,但有些人則瞭解優質功能的正式版化做法,但想使用 Scala。每個人都有自己的「正確」觀點,如果能正確引導,混合型態就會成為強大的力量。否則可能會造成混亂。
在撰寫程式碼之前,先建立團隊將用到的工具、程序和基礎架構,這麼做可以避免專案在兩年後失敗,或提前一個季度成功推出。
成效評估
由於 ML 本身具有不確定性和模糊性,人力資源經理必須設定明確的期望,並提前定義可交付的成果。
在決定期望和成果時,請考量如果專案或做法不成功,這些項目會如何受到評估。換句話說,團隊成員的表現與專案的成敗並無直接關聯,舉例來說,團隊成員經常花費數週時間調查解決方案,但最終卻無法成功。即使是這種情況,他們的優質程式碼、完整說明文件和有效協作,仍應對評估結果帶來正面影響。