AWS-ML認證筆記 — Domain 3 Part 3

SgaeMaker的內建演算法

SageMaker 中的強化式學習

  • 使用具有 Tensorflow 和 MXNet 的深度學習框架
  • 支援 Intel Coach 和 Ray Rllib toolkits
  • 支援客製、開源或收錢的環境。例如:MATLAB/Simulink/EnergyPlus/RoboSchool/PyBullet/Amazon Sumerian/AWS RoboMaker

SageMaker RL的分散式訓練:

  • 可以分散訓練和(或)環境部署
  • Multi-core and multi-instance

關鍵字:

  • Environment — 棋盤/迷宮這一類佈局
  • State — 玩家/棋子在哪裡
  • Action — 向特定方向移動等
  • Reward — 與該狀態的操作關聯的值
  • Observation — 即迷宮中的環境、棋盤的狀態

超參數調整

  • 我們選擇的參數可能會被抽象化
  • SageMaker 中的超參數調整可以最佳化它們

Instance Types

  • 開發者指南中沒有給出具體指導
  • 但是,這是深度學習 — — 所以 GPU 很有幫助
  • 支援多個實例(instances)和多核心

SageMaker的Automatic Model Tuning

我們如何知道learning rate、batch size、depth等的最佳值?大多時候我們都必須嘗試。但當我們有一大堆的超參數時,問題很快就出現了;需要以某種方式嘗試每種可能值的每種組合,訓練模型並每次評估它。

我們應該定義我們聚焦的超參數和想要嘗試的範圍,以及要最佳化的指標。SageMaker 可以啟動“HyperParameter Tuning Job”,來訓練我們允許的盡可能多的組合。訓練實例根據需要來啟動,可能很多。然後可以將產生最佳結果的一組超參數部署為模型,它會不斷學習,因此不必嘗試所有可能的組合。

最佳實踐

  1. 不要一次優化太多超參數
  2. 將範圍限制在盡可能小的範圍內
  3. 適當時使用logarithmic scales
  4. 不要同時執行太多訓練作業,因為這限制了訓練作業的學習效果
  5. 確保在多個實例上執行的訓練作業最終可以報告正確的目標指標

SageMaker與Spark

SageMaker與Spark的整合:

  • 使用 Spark 來預處理資料 — 這會產生DataFrames
  • 使用 sagemaker-spark 函式庫
  • SageMakerEstimator — KMeans、PCA、XGBoost
  • SageMakerModel(用來推論)
    Noetbook可以使用 SparkMagic (PySpark) kernel
  • 將Notebook連線到遠端 EMR cluster來執行 Spark (或使用 Zeppelin)
  • 訓練Dataframe應具有:
    — A features column that is a vector of Doubles
    — An optional labels column of Doubles
  • 在 SageMakerEstimator 上呼叫 fit 來取得 SageMakerModel
  • 對 SageMakerModel 呼叫transform以進行推論
  • 也適用於 Spark Pipelines

SageMaker Studio

功能包含:

Notebooks

  • 使用 SageMaker Studio 建立和分享 Jupyter notebooks
  • 在硬體配置之間切換(無需管理基礎架構)

Experiments

在我們的ML作業中組織、擷取、比對與搜尋

Debugger

  • 定期保存內部模型狀態
    — 訓練模型時隨時間變化的梯度(Gradient)/張量(Tensors)
    — 定義規則,該規則是在訓練時偵測不需要的條件
    — 配置的每個規則執行debug job
    — 滿足規則時記錄並觸發 CloudWatch event
  • SageMaker Studio Debugger dashboards
  • 自動產生的訓練報告
  • 內建的規則:
    — 監控系統瓶頸
    — Profile model framework operations
    — Debug model parameters
  • 支援的Frameworksm與演算法
    Tensorflow/PyTorch/MXNet/XGBoost/SageMaker generic estimator(用在我們客製化的訓練容器)
  • GitHub 中提供了Debugger API
    — 為CreateTrainingJob和DescribeTrainingJob API建立hooks和rules
    — SMDebug client library可讓我們register用於存取訓練資料的hooks
  • SageMaker Debugger Insights Dashboard
  • Debugger ProfilerRule
    — ProfilerReport
    — Hardware system metrics (CPUBottlenck, GPUMemoryIncrease, etc)
    — Framework Metrics (MaxInitializationTime, OverallFrameworkMetrics, StepOutlier)
  • 用於接收通知或停止訓練的內建操作
    — StopTraining(), Email(), or SMS()
    — 回應Debugger Rules
    — 透過SNS傳送通知
  • Profiling system resource usage and training

Autopilot

Auotpilot的作用在於透過自動化建置和部署機器學習模型的程序,簡化並加速機器學習工作流程的各個階段

能夠自動化的有:

  • 所有的Infra管理
  • 演算法選擇
  • 資料預處裡
  • 模型調整

Autopilot幫我們完成所有的trial & error。更廣泛地說,這稱為 AutoML。

Autopilot workflow

  1. 從 S3 載入資料進行訓練
  2. 選擇我們要預測的目標欄位(target column)
  3. 自動建立模型
  4. Model notebook可供檢視與控制
  5. 模型排行榜
    它會產生一個排行榜,我們可以選擇其中一個
  6. 部署和監控模型,如果需要,可以透過notebook進行最佳化
  7. 能加入類指引
  8. SageMaker Studio 或 AWS SDK 中包含或不包含代碼
  9. 解決的問題類型 — Linear Learner/ XGBoost/ Deep Learning (MLP’s)/ Ensemble mode
  10. 資料格式必須是tabular CSV或Parquet

Autopilot Training Modes

有以下三種模式

HPO (Hyperparameter optimization):

  1. 選擇與我們的資料集最相關的演算法,如Linear Learner/ XGBoost/ Deep Learning
  2. 選擇最佳的超參數範圍來調整模型
    運行達 100 次試驗(trial)以找到該範圍內的最佳超參數
  3. 如果資料集 < 100MB,則使用貝葉斯(Bayesian)最佳化
  4. 如果 > 100MB,則進行Multi-fidelity optimization
    如果試驗表現不佳則提前停止(Early stopping)

Ensembling:

  • 使用 AutoGluon 函式庫訓練多個基本模型
    更廣泛的模型,包括更多tree-based的演算法和神經網路演算法
  • 使用不同的模型和參數設定運行 10 次試驗
  • 模型與堆疊整合方法結合

Auto:

  • 資料> 100M,就使用HPO
  • 資料<100M,會用Ensembling
  • Autopilot 需要能夠讀取資料集的大小,否則將預設為 HPO。要注意:
    — 隱藏在VPC內的S3 bucket
    — S3 資料型態是 ManifestFile
    — S3 Uri 包含超過 1000 個items

Autopilot可解釋性(Explainability)

  • 與 SageMaker Clarify 整合
  • 模型如何得出預測的透明度
  • 特徵歸因(Feature attribution)
    — 使用 SHAP Baselines/Shapley 值
    — 合作賽局理論研究
    — 為特定預測分配每個特徵的importance value

SageMaker Model Monitor

  • 取得有關已部署模型的quality deviations的告警(透過 CloudWatch)
  • 可視化資料漂移(data drift)。例如:由於輸入特徵漂移或缺失,貸款模型開始為客戶提供更多信貸
  • 偵測異常值和離群值
  • 偵測新特徵
  • 無需代碼
  • 監控資料儲存在 S3 中並受到保護
  • 監控作業透過監控排程進行
  • 指標發送到 CloudWatch
    CloudWatch notifications可用於觸發告警,然後就可採取糾正措施(重新訓練模型、審核資料)
  • 與 Tensorboard、QuickSight、Tableau 整合,或只是在 SageMaker Studio 中進行視覺化

SageMaker Model Monitor 與Clarify的整合

  • SageMaker Clarify 偵測潛在偏差(potential bias)。例如在不同群體/年齡/收入階層之間的資料不平衡
  • 透過 Model Monitor,我們可以監控偏差並透過 CloudWatch 收到新的潛在偏差告警
  • SageMaker Clarify 也有助於解釋模型行為。像是了解哪些特徵(features)對預測的貢獻度最大

Clarify 中的預訓練偏差指標(Pre-training Bias Metrics)

  • Class Imbalance (CI)
    如,一個facet(人口群體)的訓練價值比另一個facet少
  • Difference in Proportions of Labels (DPL)
    facet values之間positive outcomes的不平衡
  • Kullback-Leibler Divergence (KL), Jensen-Shannon Divergence(JS)
    Facets diverge的結果分佈有多少差異
  • Lp-norm (LP)
    Facets的結果分佈之間的 P-norm
  • Total Variation Distance (TVD)
    Facets的結果分佈之間的 L1-norm
  • Kolmogorov-Smirnov (KS)
    Facets的分佈結果之間的最大差異
  • Conditional Demographic Disparity (CDD)
    整體和subgroups之間的結果差異

SageMaker Model Monitor Types

  • 資料品質漂移
    相對於我們建立的基線(baseline),「Quality」只是特徵的統計屬性
  • 模型品質的漂移(準確性等)
    與model quality baseline的作業方式相同
    可以與 Ground Truth labels整合
  • 偏差漂移(Bias drift)
  • 特徵歸因漂移(Feature attribution drift)
    基於NDCG(Normalized Discounted Cumulative Gain)分數
    這是比較訓練資料與實際資料的特徵排名

Deployment Safeguards

Deployment Guardrails:

  • 針對asynchronous或real-time inference endpoints
  • 可以在新舊模型之間控制流量。有幾種部屬模式
    — Blue/Green
    — All at once
    — Canary
    — Linear
  • 也能Auto-rollbacks

Shadow Tests:

  • 將shadow variant與正式環境的效能進行比較
  • 我們可以在 SageMaker console中進行監控並決定何時推廣它

以上介紹的所有SageMaker的功能(如下圖)

其他SageMaker功能

SageMaker Feature Store

  • 尋找、發現和分享 Studio 中的特徵
  • Online(低延遲)或offline(用於訓練或batch inference)模式
  • 特徵被整理成Feature Groups

「特徵」只是用來訓練機器學習模型的屬性。例如,我們可能會根據某人的地址、收入、年齡等「特徵」來預測他的政治頃向。

機器學習模型需要快速、安全地存取特徵資料以進行訓練。保持組織有序並在不同模型之間共享功能也是一個挑戰。特徵的來源可能如下圖所示:

Feature Store對我們的資料整理如下圖所示:

Feature Store的資料擷取(streaming or batch):

透過 PutRecord / GetRecord API 進行STREAMING access。透過offline S3 進行大量存取(與任何存取 S3 的裝置一起分享資料,例如 Athena、Data Wrangler。自動建立 Glue Data Catalog。)

Feature Store的安全性:

  • Encrypted at rest and in transit
  • 與 KMS customer master keys配合使用
  • 使用 IAM 進行Fine-grained access control
  • 也可以透過 AWS PrivateLink 進行保護

SageMaker ML Lineage Tracking

  • 建立並儲存 ML workflow (MLOps)
  • 保存模型的運行歷史記錄
  • 稽核和合規性的追蹤
  • 自動或手動建立tracking entities
  • 與 AWS Resource Access Manager 整合以實現cross-account lineage
  • SageMaker 所建立的lineage graph範例:
Sagemaker 自動建立connected graph或lineage entity metadata來追蹤workflow

Lineage Tracking Entities:

  • Trial component(processing jobs, training jobs, transform jobs)
  • Trial(由Trial component組成的模型)
  • Experiment(針對特定用例的一組Trial)
  • Context(entities的邏輯分組)
  • Action(工作流程步驟、模型部署)
  • Artifact(物件或資料,例如 S3 bucket或 ECR 中的image)
  • Association(將entities連接在一起)-具有可選的AssociationType:
    — ContributedTo
    — AssociatedWith
    — DerivedFrom
    — Produced
    — SameAs

Lineage Entities的查詢(Querying):

  • 使用 Python 中的 LineageQuery API
    這是Amazon SageMaker SDK針對Python的一部分
  • 執行諸如查找使用給定工件的所有模型/端點等之類的操作
  • 產生可視化
    需要外部 Visualizer 幫助分類

SageMaker Data Wrangler

  • 在 SageMaker Studio 中"匯入/轉換/分析/匯出/視覺化"資料
  • 用於準備機器學習資料的視覺化介面(在 SageMaker Studio 中)
  • 轉換資料(300 多種轉換可供選擇)
  • 或將我們自訂的 xform 與 pandas、PySpark、PySpark SQL 整合
  • 「Quick Model」用我們的資料訓練自己的模型並測量其結果
Data Wrangler的資料來源

故障排除:

  • 確保 Studio 使用者俱有適當的 IAM 角色
  • 確保資料來源的權限允許 Data Wrangler 存取
    新增 AmazonSageMakerFullAccess policy
  • EC2 instance 限制
    — 如果看到“The following instance type is not available…””錯誤,可能需要請求quota increase
    — 在 ml.m5.4xlarge 實例上執行的服務配額/Amazon SageMaker/Studio KernelGateway 應用程式

SageMaker JumpStart
— 來自model zoos的one-click modles和演算法
— 超過 150 個 NLP、object detections、image classification等領域的開源模型。

其他的功能:

  • SageMaker Edge Manager
    — 邊緣設備的software agent
    — 使用 SageMaker Neo 最佳化的模型
    — 收集和採樣資料以進行監控、標記、再訓練
  • Asynchronous Inference endpoints

SageMaker Canvas

  • 業務分析師的No-code ML
  • 上傳 csv 資料(目前僅限 csv),選擇要預測的column,建立它並進行預測
  • 還可以Join資料集
  • 分類或迴歸
  • 自動資料清理
    — 缺失值
    — 離群值
    — 重複值
  • 可與 SageMaker Studio 分享模型和資料集

其他要點:

  • 本機檔案上傳必須「由 IT 管理員」設定。
    設定具有適當 CORS 權限的 S3 bucket
  • 可以與 Okta SSO 整合
  • Canvas 位於必須手動更新的 SageMaker Domain中
  • 可以設定從 Redshift 導入
  • 時間序列預測(Time series forecasting)必須透過 IAM 啟用
  • 可以在VPC內運行

SageMaker Training Compiler

  • 整合到 AWS DLC(Deep Learning Containers) 中,不能用自己的container
  • 在 GPU 執行個體上編譯並最佳化訓練作業
  • 可以將訓練加速高達 50%
  • 將模型轉換為硬體最佳化指令
  • 使用 Hugging Face transformers library進行測試,或用自己的模型
  • 與 SageMaker distributed training libraries
  • 最佳實踐:
    — 確保使用 GPU 執行個體(ml.p3、ml.p4)
    — PyTorch模型必須使用PyTorch/XLA的model儲存函數
    — 在compiler_config參數中啟用debug flag進行debug

--

--

運用"雲端服務"加速企業的數位轉型願景
運用"雲端服務"加速企業的數位轉型願景

Written by 運用"雲端服務"加速企業的數位轉型願景

我們協助您駕馭名為"雲端運算"的怪獸,馴服它為您所用。諮詢請來信jason.kao@suros.com.tw. https://facebook.com/jason.kao.for.cloud

No responses yet