1. 程式人生 > 實用技巧 >【模型部署】TFX介紹

【模型部署】TFX介紹

TFX是一個基於TensorFlow的google生產規模的機器學習工具包。它提供了一個配置框架和共享庫,以整合定義、啟動和監視機器學習系統所需的通用元件。

TFX is a platform for building and managing ML workflows in a production environment. TFX provides the following:

  • A toolkit for building ML pipelines. TFX pipelines let you orchestrate your ML workflow on several platforms, such as: Apache Airflow, Apache Beam, and Kubeflow Pipelines.
    Learn more about TFX pipelines.
  • A set of standard components that you can use as a part of a pipeline, or as a part of your ML training script. TFX standard components provide proven functionality to help you get started building an ML process easily.
    Learn more about TFX standard components.
  • Libraries
    which provide the base functionality for many of the standard components. You can use the TFX libraries to add this functionality to your own custom components, or use them separately.

TFX Standard Components

TFX管道是實現ML管道的一系列元件,它是專門為可擴充套件的、高效能的機器學習任務而設計的。這包括建模、培訓、服務推理和管理針對線上、本地移動和JavaScript目標的部署。

A TFX pipeline typically includes the following components:

  • ExampleGen是管道的初始輸入元件,它攝入並可選地分割輸入資料集。
  • StatisticsGencalculates statistics for the dataset.
  • SchemaGen檢查統計資料並建立資料模式。
  • ExampleValidator查詢資料集中的異常和缺失值。
  • Transformperforms feature engineering on the dataset.
  • Trainertrains the model.
  • Tuner調整模型的超引數。
  • Evaluator訓練結果進行深入分析,並幫助您驗證匯出的模型,確保它們足夠好,可以推向生產。
  • InfraValidator檢查模型實際上是可從基礎設施服務的,並防止壞模型被推入。
  • Pusher在服務基礎設施上部署模型。
  • BulkInferrer對帶有未標記推理請求的模型執行批處理。

This diagram illustrates the flow of data between these components:

TFX Libraries

TFX包括庫和管道元件。這張圖展示了TFX庫和管道元件之間的關係:

可以使用這些庫來穿建立自己pipelines的元件

TFX libraries include:

  • TensorFlow Data Validation (TFDV)是一個用於分析和驗證機器學習資料的庫。它被設計為具有高度可伸縮性,並能與TensorFlowTFX很好地工作。TFDV包括:

•可伸縮的計算總結統計的訓練和測試資料。與檢視器整合,用於資料分佈和統計,以及資料集對的面比較(面)。

•自動生成資料模式,以描述對資料的期望,如所需值、範圍和詞彙表。

•幫助您檢查模式的模式檢視器。

•異常檢測,,舉幾個例子,以識別異常,如缺失特徵,超出範圍的值,或錯誤的特徵型別

•異常檢視器,便於您檢視哪些特徵存在異常,並瞭解詳情以進行修正

  • TensorFlow Transform (TFT) 是一個使用TensorFlow預處理資料的庫。TensorFlow轉換對於需要全遍歷的資料非常有用,例如:

•用平均值和標準差對輸入值進行規格化。

•通過在所有輸入值上生成詞彙表,將字串轉換為整數。

•根據觀察到的資料分佈,將浮點數分配給bucket,將其轉換為整數。

  • TensorFlow用於TFX的訓練模型。它攝取訓練資料和建模程式碼,並建立一個SavedModel結果。它還集成了一個由TensorFlow Transform建立的用於預處理輸入資料的feature engineering管道。
  • KerasTuner用於調優模型的超引數。Note:TFX supports TensorFlow 1.15 and, with some exceptions, 2.x. For details, seeDesigning TensorFlow Modeling Code For TFX.
  • TensorFlow Model Analysis (TFMA)是一個用於評估TensorFlow模型的庫。它與TensorFlow一起用於建立一個EvalSavedModel,這是分析的基礎。它允許使用者以分散式的方式,使用在他們trainer中定義的相同metrics,在大量資料上評估模型。這些度量可以在不同的資料切片上計算,並在Jupyter notebooks視覺化。

  • TensorFlow Metadata (TFMD)為使用TensorFlow訓練機器學習模型時有用的元資料提供標準表示。元資料可以在輸入資料分析期間手工生成或自動生成,並且可以用於資料驗證、探索和轉換。元資料序列化格式包括:
  • A schema describing tabular data (e.g., tf.Examples).
  • A collection of summary statistics over such datasets.
  • ML Metadata (MLMD)ML或者資料科學家在工作中用來記錄和檢索元資料的庫 大多元資料用TFMD表示MLMD使用SQL-Lite,MySQL,或者其他類似的資料庫來持久化他們.

需要的技術支援:

必選:Apache BeamApache Beam是一個開源的統一模型,用於定義批處理和流資料並行處理管道。TFX使用Apache Beam來實現資料並行管道。然後,該管道由Beam支援的分散式處理後端執行,其中包括Apache Flink、Apache Spark、谷歌雲資料流等。

可選:

Apache Airflow TFX使用AirFlow生成任務的有向無環圖(DAGs)。AirFlow排程器在執行指定的依賴項時,對一組工作程式執行任務。豐富的命令列工具使得在DAGs上執行復雜的任務非常簡單。豐富的使用者介面使您可以輕鬆地視覺化生產中執行的管道、監視程序和在需要時排除問題。當工作流被定義為程式碼時,它們變得更加可維護、版本化、可測試和協作。

Kubeflow 致力於使Kubernetes上的機器學習(ML)工作流的部署簡單、可移植和可伸縮。Kubeflow的目標不是重新建立其他服務,而是提供一種直接的方法,將最佳的ML開源系統部署到不同的基礎設施中。Kubeflow管道能夠在Kubeflow上組合和執行可重複的工作流,並與實驗和基於lnotebook的實驗相結合。Kubeflow管道服務在Kubernetes上包括託管的元資料儲存、基於容器的編排引擎、筆記本伺服器和UI,以幫助使用者大規模開發、執行和管理複雜的ML管道。Kubeflow pipeline SDK允許以程式設計方式建立和共享元件以及管道組合。

Portability and Interoperability

TFX被設計為可移植到多種環境和編配框架,包括Apache氣流,Apache Beam和Kubeflow。它還可以移植到不同的計算平臺,包括內部的計算平臺和雲平臺,比如谷歌雲平臺(GCP)。特別地,TFX與伺服器管理的GCP服務進行互動,例如用於訓練和預測的雲AI平臺,以及用於ML生命週期其他幾個方面的分散式資料處理的雲資料流。

Note:指南的當前修訂版主要討論了在裸屬系統上使用Apache氣流進行編排的部署。

Model vs. SavedMode

model

模型是訓練過程的輸出。它是在訓練過程中獲得的權重的連續記錄。這些權重可以隨後用於計算新的輸入示例的預測。對於TFX和TensorFlow,“模型”是指包含在此之前學到的權重的檢查點。

注意,“model”也可能引用TensorFlow計算圖(即Python檔案)的定義,它表示如何計算預測。根據上下文,這兩種意思可以互換使用。

SavedModel

  • 什麼是SavedModel:一種通用、獨立於語言、封閉且可恢復的 TensorFlow 模型序列化格式。
  • 為什麼它如此重要:它可讓較高級別的系統使用單一抽象層建立、變換和使用 TensorFlow 模型。

SavedModel 是在生產環境中應用 TensorFlow 模型或為原生移動應用或 JavaScript 應用匯出經過訓練的模型時推薦使用的序列化格式。例如,如需將模型轉換為 REST 服務以進行預測,您可以將該模型序列化為 SavedModel,並使用 TensorFlow Serving 應用該模型。如需瞭解詳情,請參閱應用 TensorFlow 模型

架構

即protobuf。使用TensorFlow Data Validation (TFDV) 的好處之一是,它會通過從訓練資料中推斷出型別、類別和範圍來自動生成架構

使用 TFX 進行開發

資料探索、視覺化和清理

TFX 流水線通常從ExampleGen元件開始,該元件會接受輸入資料並將其格式化為 tf.Example。這通常是在將資料拆分成訓練資料集和評估資料集之後進行的,因此實際上有兩份 ExampleGen 元件,分別用於訓練和評估。StatisticsGen元件和SchemaGen元件通常緊跟其後,這兩個元件會檢查您的資料並推斷出資料架構和統計資訊。架構和統計資訊將供ExampleValidator元件使用,該元件會查詢資料中的異常情況、缺失的值和不正確的資料型別。所有這些元件均會利用TensorFlow Data Validation庫的功能。

TensorFlow Data Validation (TFDV)是一種驗證工具,在初步探索、視覺化和清理資料集時很有用。TFDV 會檢查您的資料並推斷資料型別、類別和範圍,然後自動幫助您識別異常情況和缺失的值。它還提供了視覺化工具,可以幫助您檢查和了解資料集。流水線完成後,您可以從MLMD中讀取元資料,並在 Jupyter 筆記本中使用 TFDV 的視覺化工具分析資料。

在初始模型訓練和部署之後,TFDV 可用於監控從向已部署模型傳送的推斷請求獲得的新資料,並查詢異常和/或偏移情況。這對於因趨勢或季節性因素而隨時間變

資料視覺化

通過流水線中使用 TFDV 的部分(通常為 StatisticsGen、SchemaGen 和ExampleValidator)完成首次資料執行之後,您可以在 Jupyter 筆記本中視覺化結果。執行更多次之後,您可以在做出調整後比較這些結果,直到模型和應用獲得最佳資料為止。

您首先需要查詢ML Metadata (MLMD),找到這些元件的執行結果,然後使用 TFDV 中的視覺化支援 API 在筆記本中建立視覺化效果。其中包括tfdv.load_statistics()tfdv.visualize_statistics()。這種視覺化效果可以讓您更好地瞭解資料集的特性,並根據需要進行修改。

開發和訓練模型

典型的 TFX 流水線包含一個Transform元件,該元件將利用TensorFlow Transform (TFT)庫的功能執行特徵工程。Transform 元件會使用由 SchemaGen 元件建立的架構,並應用資料轉換來建立、合併和轉換將用於訓練模型的特徵。如果為推斷請求傳送的資料中也有可能存在缺失的值和型別轉換,還應該在 Transform 元件中清除這些內容。在 TFX 中設計 TensorFlow 訓練程式碼時,需要考慮一些重要事項

Transform 元件的結果是 SavedModel,SavedModel 將匯入Trainer元件中,並應用於您在 TensorFlow 中的建模程式碼。SavedModel 包含已在 Transform 元件中建立的所有資料工程轉換,這樣就可以在訓練和推斷過程中使用完全相同的程式碼執行相同的轉換。藉助建模程式碼(包括 Transform 元件中的 SavedModel),您可以使用訓練和評估資料訓練模型。

在建模程式碼的最後一部分中,您應將模型同時另存為 SavedModel 和 EvalSavedModel。另存為 EvalSavedModel 時,您必須在 Trainer 元件中匯入並應用TensorFlow Model Analysis (TFMA)庫。

分析和了解模型效果

在進行初始模型開發和訓練之後,分析並真正瞭解模型的效果非常重要。典型的 TFX 流水線包含一個Evaluator元件,該元件會利用TensorFlow Model Analysis (TFMA)庫的功能,為這個開發階段提供強大的工具包。Evaluator 元件會使用您在上面匯出的 EvalSavedModel,並允許您指定可在視覺化和分析模型效果時使用的SliceSpecs列表。每個 SliceSpec 都會定義您要檢查的訓練資料切片,例如分類特徵的特定類別或數字特徵的特定範圍。

例如,如果您想了解模型對於不同客戶群體的效果,請務必遵循上述做法;客戶群體可以按年購買量、地理位置資料、年齡段或性別劃分。這對於長尾資料集尤為重要,因為在這種資料集中,即使重要但規模較小的群組的表現不可接受,也可能會被主流群組的表現掩蓋。例如,您的模型可能在普通員工中效果良好,但在主管人員中的效果卻很差,那麼您需要知道這一點。

模型分析和視覺化

通過訓練模型並針對訓練結果執行Evaluator元件(該元件會利用TFMA)完成首次資料執行之後,您可以在 Jupyter 筆記本中視覺化結果。執行更多次之後,您可以在做出調整後比較這些結果,直到模型和應用獲得最佳結果為止。

您首先需要查詢ML Metadata (MLMD),找到這些元件的執行結果,然後使用 TFMA 中的視覺化支援 API 在筆記本中建立視覺化效果。其中包括tfma.load_eval_results()tfma.view.render_slicing_metrics()。這種視覺化效果可以讓您更好地瞭解模型的特性,並根據需要進行修改。

驗證模型是否可以提供服務

在部署經過訓練的模型之前,您可能需要驗證模型是否在服務基礎架構中確實可以提供服務。這對在生產環境中確保新發布的模型不會阻止系統提供預測尤為重要。InfraValidator元件會在沙盒環境中對您的模型執行 Canary 部署,並可選擇傳送實際請求以檢查模型是否正常執行。

部署目標

在開發並訓練模型後,如果您對模型感到滿意,可以將其部署到一個或多個部署目標,並在其中接收推斷請求。TFX 支援部署到三類部署目標。以 SavedModel 格式匯出的經訓練模型可以部署到這些部署目標中的任意一個,也可以部署到所有這些部署目標。

推斷:TensorFlow Serving

TensorFlow Serving (TFS)是適用於機器學習模型的靈活、高效的服務系統,專為生產環境而設計。它會使用 SavedModel,並通過 REST 或 gRPC 介面接受推斷請求。它作為一組程序在一個或多個網路伺服器上執行,並使用一個高階架構處理同步和分散式計算。如需詳細瞭解如何開發和部署 TFS 解決方案,請參閱TFS 文件

在典型的流水線中,在Trainer元件中訓練過的 SavedModel 將首先在InfraValidator元件中接受基礎架構驗證。InfraValidator 啟動 Canary TFS 模型伺服器,以便實際應用 SavedModel。如果通過驗證,則Pusher元件最終會將 SavedModel 部署到您的 TFS 基礎架構。這包括處理多個版本和模型更新。

原生移動應用和 IoT 應用中的推斷:TensorFlow Lite

TensorFlow Lite是一套工具,旨在幫助開發者在原生移動應用和 IoT 應用中使用經過訓練的 TensorFlow 模型。它與 TensorFlow Serving 使用一樣的 SavedModel,並應用量化和剪枝等優化措施來優化生成的模型的大小和效果,以應對在移動裝置和 IoT 裝置上執行時面臨的難題。如需詳細瞭解如何使用 TensorFlow Lite,請參閱 TensorFlow Lite 文件。

JavaScript 推斷:TensorFlow JS

TensorFlow JS是一個 JavaScript 庫,用於在瀏覽器和 Node.js 上訓練和部署機器學習模型。它與 TensorFlow Serving 和 TensorFlow Lite 使用一樣的 SavedModel,並將它們轉換為 TensorFlow.js Web 格式。如需詳細瞭解如何使用 TensorFlow JS,請參閱 TensorFlow JS 文件。

使用 Airflow 建立 TFX 流水線

如需瞭解詳情,請檢視Airflow 研討會

使用 Kubeflow 建立 TFX 流水線

設定

Kubeflow 需要使用 Kubernetes 叢集大規模執行流水線。請參閱 Kubeflow 部署指南,瞭解部署 Kubeflow 叢集的選項。

配置並執行 TFX 流水線

請按照TFX on Cloud AI Platform Pipeline 教程中的說明在 Kubeflow 上執行 TFX 示例流水線。TFX 元件已經過容器化,可以編寫 Kubeflow 流水線;此示例演示了配置流水線以讀取大型公共資料集並在雲端大規模執行訓練和資料處理步驟的功能。

執行流水線操作的命令列介面

TFX 提供統一 CLI,可幫助您在 Apache Airflow、Apache Beam 和 Kubeflow 等各種 Orchestrator 上執行眾多流水線操作,例如建立、更新、執行、列出和刪除流水線。如需瞭解詳情,請參閱這些說明

原文抄自:https://www.tensorflow.org/tfx/guide,摘錄過來,對不能翻牆的小夥伴方便提取