Leo Yeh's Blog

模型部署 TensorFlow (1)

教學目標

初步了解有關 TensorFlow Extended 進行模型部署的基本概念。

重點概念

首先當我們需要建立和維護可靠的正式環境平台用於部署機器學習模型時,則需要協調許多元件,像是基於訓練資料的模型,用於分析和驗證資料、以及建立用於正式環境模型的模組,同時資料隨著時間變化和新模型的挑戰,則需要不斷重新訓練模型,但是在過去通常是使用客製程式碼來臨時完成各個團隊為特定用途所開發的腳本,導致資源浪費和脆弱系統所帶來的技術債。此外當需要為許多人建立一個機器學習平台時,則機器學習管線所對應的工作流程將會變得非常複雜,在機器學習平台中任何元件皆要能夠提供自動化的整合方式,以利處理各式各樣所發生的故障問題,以利確保提供可靠的正式環境進行模型訓練和提供模型服務服務,然而此時在資料儲存架構和機器學習框架方面的需求皆有很大的不同,將會面臨許多的挑戰,並且持續針對模型進行訓練和提供服務,則機器學習平台必須要能夠支援在動態資料上訓練多個模型的情況,同時更需要提供容易上手的操作畫面,讓團隊中的資訊人員能夠輕鬆的部署和監控機器學習平台,以及機器學習平台要能夠適應各種問題所造成的中斷提供可靠性和可擴展性的平台,以利讓團隊輕鬆部署機器學習模型至正式環中的各種產品進行應用,這時我們就能夠透過導入 TensorFlow Extended (TFX) 解決上述問題。

接著 TensorFlow Extended (TFX) 主要就是一個用於部署機器學習模型至正式環境的端至端機器學習管線平台,當準備好需要進行訓練的多個模型,或者準備將最佳模型部署至正式環境中時,TFX 將能夠協助我們建立完整的機器學習管線,專門用於可擴展和高效能的機器學習任務,其中 TFX 管線主要是一系列元件所組成,當然 TFX 更提供函式庫,每個函式庫中會對應多個不同的元件,用於資料擷取、資料驗證、資料轉換、建立模型、模型分析、驗證結果和提供服務。此外 TFX 更提供了對應的 Python 套件其主要是用於建立管線元件的函式庫,分別為:

  1. TensorFlow Data Validation:主要能夠幫助開發者大規模的理解、驗證和監控機器學習資料。
  2. TensorFlow Transform:主要將機器學習應用於資料集時,需要將資料預處理為適合的格式。
  3. TensorFlow:主要用於訓練模型,並且取得訓練資料、產生建模程式碼,以及儲存模型結果。
  4. TensorFlow Model Analysis:主要能夠計算和視覺化模型的評估指標,以確保模型品質符合預期。
  5. TensorFlow Serving:主要提供高效能的機器學習模型服務,並且透過 REST 或 gRPC 介面提供服務。

再來機器學習模型通常是複雜系統的一部份,通常包括大量資料來源進行整合應用,並且機器學習模型會隨著時間而退化,或者因為不同序列化模型格式的元件導致訓練模型或提供服務發生錯誤,而導致客戶體驗不佳,這些問題對於人類來說很難被發現特別是在建立新模型進行訓練時,所以我們需要有個機制能夠自動評估和驗證模型,以利確保提供最佳客戶體驗的服務。但是什麼是好的模型呢?當模型具有所需預測品質指標,並且通過安全驗證,像是當系統在載入時或傳送錯誤或意外的輸入時,模型不應該崩潰或導致服務錯誤,並且模型不應使用太多資源,像是 CPU 或 RAM,此外則是使用的更新版本的機器學習函式庫來訓練模型的結果,需要透過更佳的評估指標或驗證機制確保所提供的服務能夠提高客戶滿意度。此外透過人們進行指標的評估確保模型的品質,此時將會需要提供容易上手的操作畫面,讓團隊中的業務人員能夠輕鬆的根據自動產生的模型評估報告,選擇最適當的模型,一旦團隊對於模型離線效能感到滿意,則建議能夠多個模型進行 A/B 測試實驗,以利確定其模型實際執行情況。

最後機器學習平台所提供的服務必須支援模型版本控制,用於實現模型恢復和更新,以及多個模型進行 A/B 測試實驗,同時還要能夠確保並發模型能夠在硬體加速器上以較低的延遲實現較高的輸出量,像是 GPU 和 TPU,此時 TensorFlow Serving 將能夠每秒處理數千萬次服務,所以透過 TensorFlow Serving 將能夠提供用於正式環境服務系統所要求低延遲、高效率、可靠性和可擴展性的服務。此外 在正式環境上所提供多個模型的服務通常會導致跨模型的干擾,這是一個具有挑戰性的問題,但是 TensorFlow Serving 提供軟模型隔離以利提高執行效能,以及在部署處理大量資料的伺服器時,對於每秒的查詢操作可能會遇到模型載入操作請求處理流程的干擾,此時為了增強這些操作之間的隔離, TensorFlow Serving 提供一個允許單獨設定的功能用於模型載入操作的專用執行緒池,這是允許任何操作在指定的執行緒池中執行,以利確保執行請求處理的執行緒不會模型載入操作的影響,所以 TensorFlow Serving 也支援多租戶能夠讓伺服器同時提供多個機器學習服務。

相關資源

⬅️ Go back