在正式版機器學習中,目標並非建構單一模型並部署,目標是建構自動化管道,以便長期開發、測試及部署模型。這是因為隨著世界變化,資料趨勢也會轉移,導致正式版模型過時。模型通常需要使用最新資料重新訓練,才能長期提供高品質的預測結果。換句話說,您需要一種方法,以新模型取代過時模型。
如果沒有管道,更換過時模型就容易出錯。舉例來說,一旦模型開始提供錯誤的預測結果,就必須有人手動收集及處理新資料、訓練新模型、驗證模型品質,最後再部署模型。機器學習管道可自動執行許多重複程序,讓模型管理和維護作業更有效率且可靠。
建立管道
機器學習管線會將建構及部署模型的步驟整理成明確定義的任務。管道有兩種功能:提供預測結果或更新模型。
提供預測結果
服務管線會提供預測結果。讓使用者存取模型。舉例來說,當使用者想取得預測結果 (例如明天的天氣、前往機場需要多少時間,或建議影片清單) 時,服務管道會接收及處理使用者的資料、做出預測,然後將結果提供給使用者。
更新模型
模型導入正式環境後,幾乎會立即過時。本質上,這些模型是使用舊資訊進行預測。訓練資料集擷取的是前一天或前一小時的世界狀態。世界不斷變化:使用者觀看更多影片,需要新的推薦清單;下雨導致交通緩慢,使用者需要更新抵達時間預估;熱門趨勢導致零售商要求更新特定商品的庫存預測。
通常團隊會在正式版模型過時前,訓練出新模型。 在某些情況下,團隊會在持續訓練和部署週期中,每天訓練及部署新模型。理想情況下,您應在新模型過時前訓練新模型。
下列管道會共同運作,訓練新模型:
- 資料管道。資料管道會處理使用者資料,以建立訓練和測試資料集。
- 訓練管道。訓練管道會使用資料管道中的新訓練資料集訓練模型。
- 驗證管道。驗證管道會使用資料管道產生的測試資料集,將訓練好的模型與實際工作環境模型進行比較,藉此驗證訓練好的模型。
圖 4 說明每個 ML 管道的輸入和輸出。
機器學習管道
圖 4. 機器學習管道可自動執行許多程序,以開發及維護模型。每個管道都會顯示輸入和輸出內容。
一般來說,管道會以以下方式確保模型在正式環境中保持最新狀態:
首先,模型會進入正式環境,服務管道也會開始提供預測結果。
資料管道會立即開始收集資料,以產生新的訓練和測試資料集。
訓練和驗證管道會根據排程或觸發條件,使用資料管道產生的資料集訓練及驗證新模型。
驗證管道確認新模型不會比正式版模型差後,就會部署新模型。
這項程序會持續重複進行。
模型過時程度和訓練頻率
幾乎所有模型都會過時。有些模型比其他模型更快過時。舉例來說,推薦服飾的模型通常很快就會過時,因為消費者偏好眾所皆知變化快速。另一方面,辨識花朵的模型可能永遠不會過時。花朵的特徵保持不變。
大多數模型一經投入生產,就會立即開始過時。 建議您根據資料性質設定訓練頻率。如果是動態資料,請經常訓練模型。如果動態程度較低,可能就不需要經常訓練。
在模型過時前訓練模型。提早訓練可提供緩衝時間,解決潛在問題,例如資料或訓練管道失敗,或是模型品質不佳。
建議的最佳做法是每天訓練及部署新模型。 就像一般軟體專案的每日建構和發布程序一樣,訓練和驗證用的 ML 管道通常每天執行一次效果最佳。
隨堂測驗
服務管道
服務管線會透過線上或離線方式產生及提供預測。
線上預測:線上預測會即時進行,通常是將要求傳送至線上伺服器,並傳回預測結果。舉例來說,當使用者需要預測結果時,系統會將使用者的資料傳送至模型,模型則會傳回預測結果。
離線預測:離線預測會預先運算並快取。如要提供預測結果,應用程式會在資料庫中找出快取的預測結果並傳回。舉例來說,訂閱制服務可能會預測訂閱者的流失率。模型會預測每位訂閱者的流失可能性,並將預測結果儲存在快取中。當應用程式需要預測結果時 (例如,為了激勵可能即將流失的使用者),只要查詢預先計算的預測結果即可。
圖 5 顯示如何產生及提供線上和離線預測。
線上和離線預測
圖 5:線上預測會即時提供預測結果。系統會快取離線預測結果,並在提供預測時查詢。
預測後續處理
一般來說,預測結果會先經過後續處理,才會傳送給您。舉例來說,預測結果可能會經過後續處理,以移除有害或有偏見的內容。分類結果可能會使用微調程序重新排序結果,而非顯示模型的原始輸出內容,例如提升權威內容、呈現多元結果、降低特定結果 (如點擊誘餌) 的排名,或基於法律原因移除結果。
圖 6 顯示服務管道,以及提供預測時涉及的常見工作。
後續處理預測
圖 6. 服務管線:說明提供預測結果時通常會執行的工作。
請注意, 特徵工程 步驟通常會建構在模型中,而不是獨立的程序。服務管道中的資料處理程式碼,通常與資料管道用於建立訓練和測試資料集的資料處理程式碼幾乎相同。
資產和中繼資料儲存空間
服務管道應納入存放區,用於記錄模型預測結果,以及實際資料 (如有可能)。
記錄模型預測結果可協助您監控模型品質。彙整預測結果後,您就能監控模型的整體品質,並判斷模型是否開始失去品質。一般來說,實際工作環境模型的預測結果平均值,應與訓練資料集的標籤相同。詳情請參閱預測偏差。
擷取真值
在某些情況下,實際情況可能要過一段時間才會顯示。舉例來說,如果天氣應用程式預測六週後的天氣,六週後才能取得實際天氣的實況資料。
如有可能,請在應用程式中加入意見回饋機制,讓使用者回報實際情況。舉例來說,如果使用者將郵件從收件匣移至垃圾郵件資料夾,郵件應用程式就能隱含擷取使用者意見回饋。不過,這項功能只會在使用者正確分類郵件時運作。如果使用者將垃圾郵件留在收件匣中 (因為他們知道是垃圾郵件,而且從未開啟),訓練資料就會不準確。該郵件會被標示為「非垃圾郵件」,但其實是「垃圾郵件」。換句話說,請盡量找出擷取及記錄實際資料的方式,但也要留意意見回饋機制可能存在的缺點。
圖 7 顯示預測結果傳送給使用者,並記錄到存放區。
記錄預測
圖 7. 記錄預測結果,監控模型品質。
資料管道
資料管道會根據應用程式資料產生訓練和測試資料集。訓練和驗證管道接著會使用這些資料集,訓練及驗證新模型。
資料管道會建立訓練和測試資料集,這些資料集具有與最初訓練模型時相同的特徵和標籤,但包含較新的資訊。舉例來說,地圖應用程式會從數百萬名使用者最近的兩點間行車時間,以及天氣等其他相關資料,產生訓練和測試資料集。
影片推薦應用程式會產生訓練和測試資料集,其中包含使用者從推薦清單點選的影片 (以及未點選的影片),以及觀看記錄等其他相關資料。
圖 8 說明如何使用應用程式資料產生訓練和測試資料集。
資料管道
圖 8. 資料管道會處理應用程式資料,為訓練和驗證管道建立資料集。
資料收集和處理
資料管道中收集及處理資料的工作,可能與實驗階段 (您在該階段確定解決方案可行) 不同:
資料收集。實驗期間,收集資料通常需要存取已儲存的資料。如果是資料管道,收集資料可能需要先探索並取得串流記錄資料的存取權。
如果您需要人工標註的資料 (例如醫療影像),也需要收集及更新資料的程序。
資料處理。在實驗期間,我們透過擷取、合併及取樣實驗資料集,取得合適的特徵。對於資料管道,產生這些相同特徵可能需要完全不同的程序。不過,請務必對特徵和標籤套用相同的數學運算,複製實驗階段的資料轉換。
資產和中繼資料儲存空間
您需要建立程序,儲存、控管及管理訓練和測試資料集。受到版本管控的存放區有以下優點:
可重現性:重新建立及標準化模型訓練環境,並比較不同模型的預測品質。
法規遵循。遵守可稽核性和透明度的法規遵循規定。
續訂率。設定資料保留值,決定資料的儲存時間。
存取權管理。透過精細的權限管理機制,控管資料存取權。
資料完整性:追蹤及瞭解資料集隨時間的變化,以便診斷資料或模型的問題。
可探索性。讓其他人輕鬆找到您的資料集和特徵。其他團隊就能判斷這些範本是否符合自身需求。
記錄資料
良好的文件可協助他人瞭解資料的重要資訊,例如資料類型、來源、大小和其他必要的中繼資料。在大多數情況下,在設計文件 中記錄資料就足夠了。如要分享或發布資料,請使用 資料資訊卡 整理資訊。資料資訊卡可讓其他人更輕鬆地發掘及瞭解資料集。
訓練和驗證管道
訓練和驗證管道會產生新模型,取代過時的正式版模型。持續訓練及驗證新模型,確保正式環境中一律使用最佳模型。
訓練管道會根據訓練資料集產生新模型,驗證管道則會使用測試資料集,比較新模型與正式版模型的品質。
圖 9 說明訓練管道如何使用訓練資料集訓練新模型。
訓練管線
圖 9. 訓練管道會使用最新的訓練資料集訓練新模型。
模型訓練完成後,驗證管道會使用測試資料集,比較訓練模型與正式版模型的品質。
一般來說,如果訓練模型的效能不會明顯低於正式模型,就會將訓練模型投入正式環境。如果訓練模型效能較差,監控基礎架構應建立快訊。如果訓練模型的預測品質較差,可能表示資料或驗證管道有潛在問題。這個方法可確保正式環境中一律使用以最新資料訓練的最佳模型。
資產和中繼資料儲存空間
模型及其中繼資料應儲存在版本化存放區中,以整理及追蹤模型部署作業。模型存放區提供下列優點:
追蹤與評估。追蹤實際工作環境中的模型,並瞭解模型的評估和預測品質指標。
模型發布程序。輕鬆審查、核准、發布或還原模型。
可重現性和偵錯:追蹤模型在各項部署作業中的資料集和依附元件,重現模型結果,並更有效率地偵錯問題。
可探索性。讓其他人輕鬆找到你的模型。其他團隊就能判斷是否可將您的模型 (或部分模型) 用於自身用途。
圖 10 說明儲存在模型存放區中的已驗證模型。
模型儲存空間
圖 10. 經過驗證的模型會儲存在模型存放區中,方便追蹤及探索。
使用 模型資訊卡 記錄及分享模型的重要資訊,例如用途、架構、硬體需求、評估指標等。
隨堂測驗
建構管道的挑戰
建構管道時,您可能會遇到下列挑戰:
取得所需資料的存取權。您可能需要說明存取資料的原因。例如,您可能需要說明資料的使用方式,並釐清個人識別資訊 (PII) 問題的解決方式。請準備好概念驗證,說明模型如何透過存取特定類型的資料,做出更準確的預測。
取得合適的功能:在某些情況下,實驗階段使用的功能無法從即時資料取得。因此,進行實驗時,請盡量確認您能在正式版中取得相同功能。
瞭解資料的收集和呈現方式。瞭解資料的收集方式、收集者和收集方式 (以及其他問題) 可能需要時間和精力。請務必徹底瞭解資料。請勿使用您不確定的資料訓練模型,以免模型用於正式版。
瞭解工作量、成本和模型品質之間的取捨關係。 將新功能納入資料管道可能需要大量心力。不過,額外功能可能只會稍微提升模型品質。在其他情況下,新增功能可能很簡單。 不過,取得及儲存這項功能的資源可能非常昂貴。
取得運算資源。如果需要 TPU 重新訓練模型,可能難以取得所需配額。此外,管理 TPU 也很複雜。舉例來說,您可能需要專為 TPU 設計模型或資料的某些部分,方法是將這些部分分散到多個 TPU 晶片。
找出合適的黃金資料集。如果資料經常變更,要取得標籤一致且準確的黃金資料集可能會有困難。
在實驗期間發現這類問題可節省時間。舉例來說,您不會希望開發出最佳特徵和模型,卻發現這些特徵和模型無法在實際作業環境中運作。因此,請盡可能提早確認解決方案是否能在正式環境的限制條件下運作。與其在管道階段發現無法克服的問題,而必須回到實驗階段,不如花時間驗證解決方案是否有效。