過往我們關注模型的訓練結果,會追蹤該模型在每次 epochs 之後的 AUC 、 ACC、 loss 等指標變化,並且以視覺化繪圖方式呈現模型進展,此時擅長分析該模型狀況的 TensorBoard 就很好用。
但是,如果要深入觀察模型「各版次」的狀況時,TensorFlow Model Analysis (TFMA) 可以視覺化分析不同版次的模型狀況,讓您評估是否讓新模型更新上線,而不是把糟糕的模型替代原本的。
TFMA 在 TFX 自動化流程中實現的組件為 ExampleValidator,讓模型訓練完進行模型驗證,達到持續訓練的目的,續接完成自動部署模型。
更重要的是,模型驗證非常關心模型的「公平性」,善用模型分析工具能抓出模型弱點,進而回頭改進資料與模型。
TFMA 可以做到以下任務:
TFMA 用來評估 TensorFlow 模型的程式庫,可搭配 TensorFlow 來建立 EvalSavedModel 做為分析的依據。使用者可透過這個程式庫,使用訓練程式中定義的相同指標,以分散的方式評估大量資料的模型。這些指標可根據不同的資料片段運算得出,並在 Jupyter 筆記本中以視覺化的方式呈現。
,但因範例略顯臃腫,建議配合本文服用。安裝 tensorflow-model-analysis。
# Upgrade pip to the latest, and install TFMA.
!pip install -U pip
!pip install tensorflow-model-analysis
# Restart Runtime
下載資料集
解析 Schema
使用 Schema 建立 TFRecords 檔案
*.tfRecords,需撰寫程式將原始資料data.csv 轉換為符合 Schema 的資料型態( int、 float、str)、數據範圍檔案引入。
*.csv 轉為 *.tfrecords 的函數官方範例已寫好。TF keras、基於 TF2 產生的 API 、 tf.estimator 、 pd.DataFrame 等類型。tf.keras 模型、 tf.estimator 等 2 種做法供您參考,並分別保存為 EvalSavedModel 。tfma.EvalConfig。
tfma.EvalSharedModel 。tfma.run_model_analysis 創建 tfma.EvalResult ,即可視覺化呈現模型績效。以 tfma.view.render_slicing_metrics() 視覺化呈現模型績效,您可以選擇想要觀察的切片、切換,此範例 slicing_column='trip_start_hour' 。
在圖表中:
Overview 顯示每個切片,Metrics Histogram 是將結果分桶顯示。tfma.EvalSharedModel 時設置的,視需要可增減。更多的嘗試
例如替換切片欄位 'slicing_column=trip_start_day' 觀察。
交叉組合觀察切片。
tfma.view.render_slicing_metrics(
    eval_result,
    slicing_spec=tfma.SlicingSpec(
        feature_keys=['trip_start_hour', 'trip_start_day']))
設定feature_values 篩選特徵值。
tfma.view.render_slicing_metrics(
    eval_result,
    slicing_spec=tfma.SlicingSpec(
        feature_keys=['trip_start_day'], 
        feature_values={'trip_start_hour': '12'}))

另外也有 tfma.view.render_plot 顯示指定切片與觀察值,勾選 Show all plots 後,您可以看到非常豐富的視覺化圖表。
tfma.ValidationResult 查看驗證結果,如低於門檻值則驗證失敗。
validation_result = tfma.load_validation_result(validation_output_path)
print(validation_result.validation_ok)
# False
tfma.EvalConfig ,這也算是 TensorFlow 比較難以親近的風格吧。