AWS 機器學習架構框架Part 3

資料處理(Data Processing)

下圖顯示ML 生命週期階段,其中「資料處理階段」擴展到「資料收集子階段」(Collect Data)和「資料準備子階段」(Pre-process Data和Engineer Features)。 本文將更詳細地討論這些子階段。

下圖詳細說明了問題框架階段之後發生的所有 ML 生命週期階段,並顯示了資料處理子階段如何與後續階段(即「模型開發階段」、「模型監控階段」)交互作用。 ,以及「模型監控階段」。

模型開發階段包括訓練、調整和評估。 模型部署階段包括用於安全性和穩健性的模型驗證的暫存環境。 監測是及時發現和緩解drift的關鍵。 跨ML生命週期階段的feedback loops是監控的關鍵推動因素。 Feature store(線上和線下)在模型開發和部署階段提供一致且可重複使用的特徵。 model registry支援模型和資料組件的版本控制和lineage tracking。 上圖還強調了lineage tracking 及其組件,本節將更詳細地討論這些組件。

雲端架構圖(不管事用哪一家的平台技術)提供了具有以下假設的高階最佳實踐:

  • 這裡提出的所有概念都與雲端和技術無關。
  • 黑色實線表示製程。
  • 彩色虛線表示輸入和輸出流程。

上圖所示的 ML 生命週期子階段的組成部分如下:

  • Online/Offline feature store —
    減少重複以及跨團隊與專案重新進行特徵工程代碼的需求。 具有低延遲檢索功能的online feature store非常適合real-time inference。 另一方面,offline feature store旨在維護feature values的歷史記錄,適合training和batch scoring。
  • Model registry —
    用於儲存 ML 模型工件的儲存庫,包括經過訓練的模型和相關metadata(例如資料、代碼和模型)。 它可以追蹤 ML 模型的lineage,因為它可以充當版控系統。
  • Performance feedback loop —
    根據模型開發階段的模型評估進行迭代資料準備階段。
  • Model drift feedback loop —
    根據生產部署階段的模型評估進行迭代資料準備階段。
  • Alarm manager —
    接收來自模型監控系統的告警。然後,它向目標應用程式發送告警的服務發布通知。模型更新re-training pipeline就是這樣的目標應用程式之一
  • Scheduler —
    依業務定義的時間間隔啟動模型重新訓練。
  • Lineage tracker —
    實現可重複的ML實驗。 它能夠在特定時間點重新創建ML環境,重現當時所有資源和環境的版本。

ML lineage tracker collects可追蹤資料、模型和基礎設施資源變更的參考。 它由以下組件組成:

  • System architecture (infrastructure as code to address environment drift)
  • Data (metadata, values, and features)
  • Model (algorithm, features, parameters, and hyperparameters)
  • Code (implementation, modeling, and pipeline)

Lineage tracker透過 ML 生命週期階段的替代迭代來收集變更的引用。 Alternative algorithms與feature lists將作為最終生產部署的實驗進行評估。下圖包括Lineage tracker在不同版本中收集的ML組件及其資訊。 收集到的資訊可以返回到特定的時間點版本並重新建立它。

Lineage tracker組件包含:

  • IaC —
    可以使用IaC來自動化建模、配置和管理雲端運算資源(運算、儲存、網路和應用程式服務)。 雲端運算利用虛擬化來實現資源的按需配置。 IaC 透過自動化消除configuration drift,同時提高基礎架構部署的速度和敏捷性。 IaC 代碼變更將提交至版控儲存庫。
  • Data —
    將Data schemes和metadata儲存在版控系統中。 將資料儲存在儲存媒體中,例如資料湖。 資料的位置或連結可以位於設定檔中並儲存在代碼版控媒體中。
  • Implementation code —
    在任何時間點對任何代碼的變更都可以儲存在版控媒體中。
  • Model feature list —
    本節前面討論的「Feature store保留了Feature的詳細資訊以及任何時間點變更的先前版本。
  • Model algorithm code —
    任何時間點對任何模型演算法代碼的變更都可以儲存在版控媒體中。
  • Model container image —
    任何時間點變更的模型container image版本都可以儲存在由container registry管理的容器儲存庫中。

ML生命週期階段 — 資料處理

在ML Workload中,資料(輸入和相應的所需輸出)具有重要功能,包括:

  • 定義系統的目標:透過輸入和輸出對的輸出呈現以及每個輸出與每個輸入的關係。
  • 訓練將輸入與輸出相關聯的演算法。
  • 根據資料分佈或資料漂移(Data drift)的變化來衡量模型的效能。
  • 建立baseline dataset以擷取data drift。

如下圖所示,資料處理包括資料收集和資料準備。 資料準備包括資料預處理和特徵工程。 它主要使用資料整理進行互動式資料分析,使用資料視覺化進行EDA(exploratory data analysis)。 EDA 著重於理解資料、健全性檢查和資料品質驗證。值得注意的是,應用於訓練資料的相同資料處理步驟序列也需要應用於inference requests。

資料處理組件

資料收集

ML生命週期中的重要步驟是確定所需的資料,然後評估可用於收集資料來訓練模型的各種方法。

資料收集階段的主要組件(如上圖所示)如下:

  • Label —
    標記資料是一組被標記了一個或多個標籤的樣本。 如果標籤遺失,則需要花一些工來標記它(手動或自動)。
  • Ingest and aggregate —
    資料收集包括從多個資料來源ingest和aggregate資料。

Ingest和aggregate組件的子組件(如上圖所示)如下:

  • Data source —
    資料來源包括時間序列、事件、感測器、IoT設備和社交網路,取決於使用案例的性質。 可以使用 SageMaker 的geospatial capability存取來自 AWS(例如 Amazon Location Service)、開源資料集(例如 Open Data on AWS)或自己的地理空間資料來源,也可用來自第三方提供者(例如Planet Labs)的資料。 要了解有關 Amazon SageMaker 中geospatial capability的更多資訊,可以連結Geospatial ML with Amazon SageMaker
  • Data ingestion —
    Data ingestion流程和技術會擷取資料並將其儲存在儲存媒體上。 Data ingestion可以使用串流技術即時進行,也可以使用批次技術以歷史模式進行。
  • Data technologies —
    資料儲存技術有一大堆,從transactional (SQL) 資料庫到資料湖和資料倉儲。 ETL pipeline技術可自動執行和協調跨雲端服務和資源的資料移動和轉換。 資料湖技術可以儲存和分析"結構化和非結構化"資料。

資料準備

ML模型的好壞取決於用於訓練它們的資料。 確保有合適的訓練資料可用,並針對learning與generalization進行了最佳化。 資料準備包括資料預處理和特徵工程。

理解資料的一個關鍵面向是識別模式。 這些模式對於在table中的資料通常並不明顯。 使用視覺化工具進行EDA有助於快速深入了解資料。 使用資料管理器工具準備資料以進行互動式資料分析和模型建構。 採用no-code/low-code、自動化和視覺化功能來提高生產力並降低互動式分析的成本。

資料預處理

資料預處理將資料調整為適合訓練的型態和品質。 有許多資料預處理策略,包括:data cleaning/balancing/replacing/imputing/partitioning/scaling/augmenting/unbiasing。

上圖中列出的資料預處理策略可以擴展如下:

  • Clean(replace/impute/remove outliers and duplicates) —
    刪除異常和重複值,替換不準確或不相關的資料,並使用插補(imputation)技術修正遺失的資料,作為資料清理的一部分,最大限度地減少偏差。
  • Partition —
    為了防止 ML 模型過度擬合(overfitting)並準確評估經過訓練的模型,資料需要隨機分為訓練集、驗證集和測試集。 當保留測試資料集中的資訊洩漏到訓練資料中時,可能會發生資料外洩。 避免資料外洩的一種方法是在拆分資料之前刪除重複資料。
  • Scale(normalize, standardize) —
    正規化是ML中的一種縮放技術,在資料準備期間使用,以更改資料集中numeric columns的值以使用通用縮放(common scale)。 此技術有助於確保ML模型的每個特徵在具有不同範圍時具有相同的特徵重要性。 正規化數字特徵的值在 [0-1] 範圍內。 標準化數字特徵的平均值為 0,標準差為 1。標準化有助於處理異常值
  • Unbias, balance (detection & mitigation) —
    偵測和減輕bias有助於避免不準確的模型結果。 Bias是不同群體(例如年齡或收入階層)之間預測準確性的不平衡。 Bias可能來自用於訓練模型的資料或演算法。
  • Augment —
    資料增強透過從現有資料合成新資料來人為地增加資料量。 資料增強可以幫助正規化和減少過度擬合。

特徵工程(Feature Engineering)

資料的每個獨特屬性都被視為“特徵”(也稱為“屬性”)。 例如,在設計預測客戶流失的解決方案時,使用的資料通常包括客戶位置、年齡、收入水準和最近購買等特徵。

特徵工程是使用ML或統計建模建立預測模型時選擇和轉換變數的過程。 特徵工程通常包括feature creation、feature transformation、feature extraction與feature selection,如上圖所列。透過深度學習,特徵工程作為演算法學習的一部分實現自動化。

  • Feature creation是指從現有資料創建新特徵以幫助更好的預測。 特徵創建的範例包括:one-hot-encoding、binning、spliting 和calculated features。
  • Feature transformation and imputation包括取代缺失特徵或無效特徵的步驟。 一些技術包括:形成特徵的笛卡爾積(Cartesian products)、non-linear transformations(例如將數值變數分類)以及創建特定於領域的特徵。
  • Feature extraction涉及使用降維(dimensionality reduction)技術減少要處理的資料量。 這些技術包括:Principal Components Analysis (PCA)、 Independent Component Analysis (ICA)與Linear Discriminant Analysis (LDA)。 這減少了所需的記憶體量和運算能力,同時仍準確地保持原始資料特徵。
  • Feature selection是選擇提取特徵的子集的過程。 這是相關的子集,有助於最小化訓練模型的錯誤率。 特徵重要性分數和相關矩陣可以作為選擇最相關特徵進行模型訓練的因素。

卓越維運支柱 — 最佳實踐

卓越營運支柱包括運作和監控系統以提供業務價值並持續改善支援流程的能力。 本節包括處理資料時要考量的最佳實務。

實踐一: 配置資料以提高品質

資料配置可以使用分佈、描述性統計、資料類型和資料模式等資料特徵。 檢查來源資料的內容和品質。 過濾或更正任何未通過審核的資料。 這將有助於品質的提高。

執行計畫

  • 使用 SageMaker Studio Notebook 的內建資料準備功能 —
    這可以很直觀地查看資料特徵並直接在motebook環境中修復資料品質問題。 當在notebook中顯示data frame時,SageMaker Studio Notebook 會自動產生圖表以協助使用者識別資料品質問題,並建議資料轉換以協助解決常見問題。 選擇資料轉換後,SageMaker Studio Notebook 會在notebook中產生相應的代碼,以便每次執行notebook時都可以重複套用該代碼。
  • 使用 SageMaker Data Wrangler —
    使用 SageMaker Data Wrangler 導入、準備、轉換、視覺化和分析資料。 Data Wrangler 可以整合到 ML 工作流程中,以簡化資料預處理和特徵工程,而無需編寫任何代碼。 也可以新增自己的 Python 腳本和轉換來自訂資料準備工作流程。 從 S3、Redshift 或其他資料來源匯入資料,然後使用 Athena 查詢資料。 使用 Data Wrangler 透過內建和自訂資料轉換和分析功能建立複雜的ML資料準備工作流程。 這些功能包括特徵目標洩漏和快速建模。
  • 建立自動資料設定檔和報告系統 —
    使用 AWS Glue Crawler 抓取資料來源並建立資料架構。 使用 AWS Glue Data Catalog列出所有table和schemas。 使用Athena 進行serverless SQL 查詢來持續分析數據,然後使用 QuickSight 儀表板實現數據視覺化。
  • 使用 SageMaker Model Monitor 建立baseline dataset —
    用於訓練模型的訓練資料集通常是良好的baseline dataset。 訓練資料集的資料模式和推論資料集的模式應該完全匹配(特徵的數量和順序)。

實踐二: 建立追蹤與版控機制

由於其探索性和迭代性,我們很容易忘記 ML 模型的發展及其演變。 我們需要試驗資料、演算法和參數的多種組合,同時觀察增量變化對模型準確性的影響。 使用配置設定和超參數記錄並追蹤模型實驗。 對任何與資料處理相關的發現、流程和改進進行文件和版控,以便將來更容易地引用和重複使用。 使用model registry來註冊 ML 模型並進行版控。 透過 CI/CD 流程自動化模型部署。

執行計畫

  • 使用 SageMaker Experiments 追蹤ML 實驗 —
    SageMaker Experiments 可建立、管理、分析和比較ML實驗。 SageMaker Experiments 在運行時自動追蹤迭代的輸入、參數、配置和結果。 我們可以將這些作業進行分配、分組和組織到實驗中。SageMaker Experiments 與 SageMaker Studio 整合,提供可視化介面來瀏覽當前實驗和過去的實驗、比較關鍵效能指標的運行情況並確定校能最佳的模型
  • 將notebook instances與 Git Repo關聯 —
    若要在SageMaker 上分析資料、記錄其處理並評估 ML 模型,可以使用 SageMaker Processing。 SageMaker Processing 可用於特徵工程、資料驗證、模型評估和模型解釋。 SageMaker notebook instances可以與 Git Repo關聯。 這樣可以將notebook保存在原始控制環境中,該環境在停止或刪除notebook instances後仍然存在。notebook保存資料處理代碼及其文件。 我們可以將預設儲存庫和最多三個附加儲存庫與notebook instances關聯。 儲存庫可以託管在 AWS CodeCommit、GitHub 或任何其他 Git 伺服器上。
  • 使用 SageMaker Model Registry—
    使用 SageMaker Model Registry編目、管理和部署模型。 建立模型組,並為 ML pipleline的每次運行建立在模型組中註冊的模型版本。

安全支柱 — 最佳實踐

安全支柱包括保護資料、系統和資產的能力,以利用雲端技術來提高安全性。

實踐一: 確保最小權限(least privilege)存取

使用最小權限原則保護ML生命週期各階段的所有資源。 這些資源包括:資料、演算法、代碼、超參數、經過訓練的模型工件和基礎設施。 提供專用網路環境以及專用資源和服務來運作任何單一專案。

執行計畫

  • 根據每個仁的業務角色限制存取權限 —
    辨識需要探索資料以建立模型、功能和演算法的角色。 使用基於角色的身份驗證將這些角色對應到存取模式。 此方法可在逐一專案的基礎上實現對敏感資料、資產和服務的最小權限存取。
  • 使用帳戶分離和 AWS Organizations —
    建立標記和基於角色的存取授權。 了解不同使用者類型的工作流程。 使用Service Catalog建立用於快速部署的預配置環境,包括多帳戶架構,該架構透過基於資料敏感度和合規性要求的適當治理來隔離開發、測試和生產之間的工作負載。 標記包含敏感工作負載的資料和bucket。 使用這些標籤向個人授予足夠細緻的存取權限。
  • 按存取模式和結構組織單位劃分 ML workload —
    根據需要將特定存取權限委託給每個群體,例如管理員或資料分析師。 使用guardrails與SCP(service control policies)為每種存取類型和群體實施最佳實踐。 限制管理員存取基礎設施。 驗證所有敏感資料是否透過受限、專用和隔離的環境進行存取。

實踐二:保護資料和建模環境

保護託管的資料或支援模型開發的任何系統或環境。 將訓練資料儲存在受保護的stroage和Repo中。 在安全的雲端中運行資料準備。 當資料從Repo移動到Instances時,嚴格控制對目標運算實例的存取。 加密儲存基礎架構中的靜態資料以及傳輸到運算基礎架構的資料。

執行計畫

  • 建構安全的分析環境 —
    在資料準備和特徵工程階段,AWS 上有多種安全的資料探索方法。 資料可在 Amazon SageMaker managed notebook 或 Amazon EMR notebook中探索。 還可以使用託管服務(如Athena 和 Glue 或兩者的組合)來探索資料,而無需將資料移出資料湖。 使用 SageMaker Jupyter notebook來探索、視覺化一小部分資料並對其進行特徵工程。 使用託管 ETL 服務(如EMR 或 Glue)scale up 特徵工程。
  • 建立專用的IAM 和 AWS KMS 資源 —
    此方法限制了credentials和key的影響範圍。 建立private S3 bucket並啟用資料和智慧財產權 (IP) 的版控。 在 AWS 中,集中式資料湖是使用 S3 上的 Lake Formation 實現的。 保護和監控S3 上的資料湖是透過結合使用加密"傳輸和靜態"資料的服務和功能來實現的。 使用細緻化的 AWS IAM policy、S3 bucket policies、S3 access logs、CloudWatch 和 CloudTrail 監控存取。
  • 使用 Secrets Manager 和 Paramater Store 來保護Credentials —
    Secrets Manager 能夠透過 API call 來取代把secrect hardcode在代碼中的方式(例如credentials),從而以程式式化方式進行解密和檢索secret。 Parameter Store 設計用於比secrets或密碼更廣泛的使用,但允許儲存application configuration variables,例如 AMI ID 或license keys。 借助Secrets Manager 和 Parameter Store,我們可以儲存credentials,然後給予 SageMaker IAM 角色以便讓notebook可以存取 Secrets Manager。
  • 自動管理Configuration —
    使用生命週期設定腳本來管理 Jupyter notebook instance。 這些腳本在notebook instance首次建立或每次啟動時運行。 它們能夠安裝自訂套件、預先載入資料集以及設定原始帶碼儲存庫。 可以在多個notebook instance之間變更和重複使用生命週期配置。 可以進行一次性更改,然後透過重新啟動notebook instance來套用更新的配置。 這為 IT、維運和安全團隊提供了所需的靈活性和控制力,同時支援開發人員和資料科學家的需求。 使用 AWS CloudFormation IaC以及Service Catalog來簡化終端使用者的配置。
  • 建立私有、隔離的網路環境 —
    使用 VPC只用來支援與需要的服務和使用者的連線。 在VPC 中部署 SageMaker notebook instance,以啟用network level controls來限制與notebook的通訊。 此外,可以在 VPC flow logs中擷取進出notebook instance的network calls,以便在網路層級實現額外的可見性和控制。 透過在 VPC 中部署notebook,我們還可以查詢可從 VPC 內存取的資料來源和系統,例如RDS 或 Redshift 中的關聯式資料庫。 使用 IAM,可以進一步限制對notebook instances基於 Web 的 UI 的存取,以便只能從VPC 內進行存取。 使用 PrivateLink 將 SageMaker notebook instances VPC 與支援的 AWS 服務內部連線。 這可確保notebook instances與 AWS 網路內的 S3 之間的安全通訊。 使用KMS 加密附加到 SageMaker notebook instances的 EBS上的資料。
  • 限制存取 —
    Jupyter notebook server提供對 EC2 instance中底層作業系統的基於 Web 的存取。 這讓我們能夠安裝額外的軟體包或 Jupyter kernels來客製環境。 預設情況下,該存取權限會授予具有 root權限的使用者或作業系統上的超級使用者,從而使他們能夠完全控制底層 EC2 instance。 應限制此存取權限,以消除使用者取得 root 權限的能力,但仍讓他們控制本機使用者的環境。
  • 安全 ML 演算法 —
    SageMaker 使用容器技術來訓練和託管演算法和模型。 建立自己的容器時,將它們發佈到 ECR上託管的private container registry。 使用KMS 加密靜態託管在ECR 上的容器。
  • 實施程式碼最佳實踐—
    透過完全託管的CodeCommit 使用git repo來儲存代碼。
  • 對已批准的套packages進行package mirror —
    評估授權條款,以確定哪些 ML 套件適合我們的業務在 ML 生命週期的各個階段。 ML Python 套件的範例包括:Pandas、PyTorch、Keras、NumPy 和 Scikit-learn。 一旦確定了設定和標準,就建立一個驗證機制並在可能的情況下自動化。 自動化機制範例可以包​​括執行下載、安裝以及套件版本和依賴性檢查的腳本。 只能從經過批准的private repo下載套件。 驗證下載的套件中的內容。 這將能夠安全地導入並確認package的有效性。SageMaker notebook已安裝多個環境。 這些環境包含 Jupyter kernels和 Python 套件。 也可以安裝自己的環境,其中包含選擇的套件和kernels。 SageMaker 允許修改private repo的套件管道路徑。 在適當的情況下,使用內部儲存庫作為外部儲存庫的代理,以最大限度地減少網路和時間的overhead。

實踐二: 保護敏感資料

保護訓練中使用的敏感資料免遭意外洩漏。 識別敏感資料並對其進行分類。 運用一些策略處理敏感資料,包括:刪除、屏蔽(masking)、標tokenizing和PCA(principal component analysis)。 記錄最佳治理實務以供日後重複使用和參考。

執行計畫

  • 盡可能使用自動化機制對資料進行分類 —
    在Macie 中使用automated sensitive data discovery功能,提供持續、經濟高效、組織範圍內的可見性,讓我們了解敏感資料在S3 環境中的駐留位置。 Macie 會自動、智慧性地檢查S3 bucket中的敏感資料,例如個人識別資訊 (PII)、財務資料和 AWS 憑證。 然後,Macie 建立並持續維護敏感資料所在 Amazon S3 位置的互動式資料地圖,並提供每個bucket的敏感度評分。
  • 使用標記(tagging) —
    標記由敏感元素組成的資源和模型,以快速區分需要保護的資源和不需要保護的資源。
  • 加密敏感資料 —
    使用 KMS、Encryption SDK 或用戶端加密等服務加密敏感資料。
  • 降低資料敏感度 —
    評估和識別資料以進行匿名化或去識別化,以降低敏感度。

實踐三:進行data lineage

監控並追蹤一段時間內的資料來源和轉換。 嚴格控制資料存取。 執行預防性控制、審核和監控以展示data lineage。 對訓練資料實施完整性檢查,以偵測因遺失、損壞或操縱而導致的任何意外偏差。 data lineage可實現可見性並有助於追蹤資料處理錯誤的根本原因。

執行計畫
追蹤任何更新的記錄 — 使用 SageMaker ML Lineage Tracker會建立並儲存有關 ML 工作流程(從資料準備到模型部署的步驟)的資訊。 透過追蹤資訊,我們可以:

  • 重現工作流程步驟,追蹤模型和資料集的lineage,並建立模型治理和稽核標準。
  • 將原始資料視為事實來源。
  • 攝取(Ingest)和處理衍生資料集並在整個過程中保留mapping。 從最終結果迭代回到原始資料元素。
  • 這些概念不僅應用於資料,還應用於代碼、模型、pipeline和基礎設施。 驗證我們是否可以追蹤和稽核針對資料、pipeline操作或ML模型的任何活動。

實踐四: 只保留相關資料

跨運算環境(例如Development和staging)保留資料,並只儲存use-case相關資料,以降低資料暴露風險。 實施機制來強制執行跨資料的生命週期管理流程。 決定何時自動刪除舊資料。

執行計畫

  • 建立資料生命週期計劃 — 了解除錯和操作工作的使用模式和要求。 建立資料生命週期計畫以減少資料隨時間的蔓延。
  • 隱私設計 — 刪除 ML 工作流程不需要的敏感元素。 偵測並編輯個人識別資訊 (PII),同時保持資料可用性。 確定解決業務問題所需的功能以及對未來迭代有價值的功能。

可靠度支柱 — 最佳實踐

可靠性支柱包括workload在預期時正確一致地執行其預期功能的能力。 本節包括處理資料時要考慮的最佳實務。

實踐一: 使用daat catalog

使用data catalog技術跨多個資料儲存處理資料。 進階data catalog service可以實現 ETL 流程整合。 這種方法可以提高可靠性和效率。

執行計畫
使用Glue Data Catalog —
Glue data catalog提供了一種追蹤已載入到 ML workload中的資料資產的方法。 Data catalog也描述了資料載入到資料湖和資料倉儲時如何轉換。 Glue 是完全託管的 ETL服務。 它提供了一種簡單且經濟高效的方法來對資料進行分類、清理並在各種資料儲存和資料流之間可靠地移動資料。 Glue 由一個稱為 Glue Data catalog的central metadata repository所組成。 它還具有自動生成Python或Scala代碼的ETL引擎。 透過靈活的scheduler,Glue 可以處理依賴項解析、作業監控和重試。

實踐二: 使用Data pipeline

自動執行不同運算和儲存服務之間的資料處理、移動和轉換。 這種自動化使得資料處理具有容錯性、可重複性和高可用性

執行計畫

使用 Amazon SageMaker Data Wrangler 和pipeline—
SageMaker Data Wrangler 簡化了ML的資料準備。 它使用單一視覺化介面實現資料選擇、清理、探索和視覺化。 建立工作流程後,將其匯出至 SageMaker Pipelines 以自動執行模型部署和管理。 Data pipeline提供了一種在 ML workload中移動和轉換資料的自動化方法。 手動移動和轉換資料可能會導致錯誤和不一致。 使用Data Pipeline 可以節省時間並減少錯誤。

實踐三: 自動管理資料變更

使用版控技術自動管理訓練資料的變更。 這將實現在發生失敗時重新建立模型時正確版本的重現性。

執行計畫

使用 AWS MLOps Framework—
AWS MLOps Framework提供了一個標準介面,用於管理 AWS ML服務和第三方服務的 ML pipeline。 此解決方案的範本可讓我們上傳經過訓練的模型(也稱為自帶模型)。 它配置pipeline的編排,並監視pipeline的操作。 該解決方案允許大規模重複成功的流程,從而提高敏捷性和效率。 SageMaker 中 MLOps pipeline的關鍵組件之一是Model Registry。 SageMaker Model Registry 追蹤模型版本和對應的工件,包括lineage和metadata。

效能效率支柱 — 最佳實踐

效能效率支柱著重於有效利用運算資源來滿足需求,並隨著需求變化和技術發展保持效率。 本節包括處理資料時要考慮的最佳實務。

實踐一: 使用現代化資料架構

使用現代化資料架構從指數級成長的資料中獲取最佳見解。 該架構支援在資料湖和專用儲存之間移動資料,包括資料倉儲、關聯式資料庫、非關聯式資料庫、ML和大數據處理以及日誌分析。 資料湖提供了一個單一位置來對從不同來源收集的混合資料結構進行分析。 專門建置的分析服務提供特定用例所需的速度,例如即時儀表板和日誌分析。

執行計畫

統一資料治理和存取 —
整合資料湖、資料倉儲和專用儲存。 這將實現統一治理和資料移動。 透過 AWS 上的現代化資料架構,我們可以將資料儲存在資料湖中並使用存在於它周邊的資料服務。 Lake Formation 建置可擴充且安全的資料湖。 使用 Redshift、Kinesis 和 Athena 等專用服務建立高速分析層。 使用 Glue 跨服務和資料儲存整合資料。 使用 IAM 應用治理策略來管理所有資料儲存的安全性、存取控制和稽核追蹤。

成本優化支柱 — 最佳實踐

成本優化支柱包括系統在整個生命週期中的持續細緻化和改進過程。 從第一個PoC的初始設計到production workload的持續運行,採用本文中的實踐可使我們構建和運營具有成本意識的系統,從而實現業務成果並最大限度地降低成本,從而使您的業務最大化它的投資回報。 本節包括處理資料時要考慮的最佳實務。

實踐一: 使用託管的data labeling

選擇一種託管標籤工具,該工具可自動化並可存取具有成本效益的手動資料標籤團隊。 它還應該提供為特定輸入選擇可變數量貼標機的靈活性。 該工具應該有一個使用者介面,並隨著時間的推移學會自行標記資料。

執行計畫

  • 使用SageMaker Ground Truth —
    要訓練ML模型,需要一個大型、高品質、有標籤的資料集。 SageMaker Ground Truth 可協助我們為 ML 模型建立高品質的訓練資料集。 借助 Ground Truth,可以與 Mechanical Turk(我們選擇的供應商)的工作人員或內部人員一起使用 ML 來建立標記資料集。 可以使用 Ground Truth 輸出的標記資料集來訓練自己的模型。 也可以使用輸出作為 SageMaker 模型的訓練資料集。
  • 使用SageMaker Ground Truth Plus —
    Ground Truth Plus 是一項統包服務,利用專家團隊快速提供高品質的訓練資料集,並將成本降低高達 40%。 SageMaker Ground Truth Plus 可讓我們輕鬆建立高品質的訓練資料集,而無需自行建立標籤應用程式和管理標籤人員。 透過使用這種方法,我們不需要擁有深厚的ML專業知識或廣泛的工作流程設計和品質管理知識。 只需提供資料以及標記要求,Ground Truth Plus 就會設定資料標記工作流程並根據我們的要求進行管理。

實踐二: 為互動式分析使用data wrangler tools

透過data wrangler tools準備資料以進行互動式資料分析和模型建構。 no-code/low-code、自動化和視覺化功能提高了生產力並降低了互動式分析的成本。

執行計畫

使用SageMaker Data Wrangler —
SageMaker Data Wrangler 是 SageMaker Studio 的一部分,提供用於匯入、準備、轉換、分析資料和選擇功能的端到端解決方案。 可以將 Data Wrangler data flow整合到 ML 工作流程中,只需很少的編碼甚至無需編碼即可簡化資料預處理和特徵工程。 也可以新增自己的 Python 腳本和轉換來自訂工作流程。

實踐三: 使用託管式資料處理功能

透過託管資料處理,可以使用簡化的託管體驗來運行資料處理workload,例如特徵工程、資料驗證、模型評估和模型解釋。

執行計畫

使用 Amazon SageMaker Processing—
使用 Amazon SageMaker Processing,可以針對ML pipeline中的資料處理步驟執行處理作業。 處理作業接受來自 S3 的資料作為輸入,並將資料儲存到 S3 作為輸出。 processing container image可以是 SageMaker 內建image,也可以是自帶的image。 處理作業的底層基礎架構完全由 SageMaker 管理。 叢集資源在作業期間進行配置,並在作業完成時進行清理。 SageMaker Processing 使用 scikit-learn、Apache Spark、PyTorch、TensorFlow、Hugging Face、MXNet 和 XGBoost 等通用框架簡化了執行ML預處理和後處理(preprocessing and postprocessing)作業。

實踐四: 啟用特徵的可重複使用性

透過使用Feature store,減少跨團隊和專案的特徵工程代碼的重複和重新運行。 Feature store應具有線上和離線儲存以及資料加密功能。 具有低延遲檢索功能的線上儲存非常適合real-time inference。 離線儲存維護特徵值的歷史記錄,適合training 與batch scoring。

實行計畫

使用SageMaker Feature Store —
SageMaker Feature Store 是一個完全託管的專用儲存庫,用於儲存、更新、檢索和共享 ML 功能。 Feature Store讓資料科學家、ML工程師和一般從業人員可以容易地創建、共享和管理ML開發出來的特徵。 Online Feature Store用於低延遲、real-time inference。 Offline real-time inference用於training 與batch scoring。 Feature Store減少了將原始資料轉換為訓練 ML 演算法的特徵所需的重複資料處理和管理工作。

我們可以在以下模式下使用Feature Store:

  • online —
    Feature以低延遲讀取(毫秒)讀取,並用於high throughput predictions。
  • offline —
    大量資料被輸入到離線儲存中,用於batch與inference。 此模式需要將特徵組儲存在離線儲存中。 offline store使用您的 S3 bucket進行存儲,也可以使用Athena 查詢取得資料。
  • online and offline —
    這包括線上和離線模式。

永續性支柱 — 最佳實踐

永續發展支柱著重於環境影響,特別是能源消耗和效率,因為它們是架構師指導採取直接行動以減少資源使用的重要槓桿。 本節包括處理資料時要考慮的最佳實踐。

相關最佳實踐

  • 啟用資料和計算鄰近性
    傳輸資料時影響網路使用碳足跡的兩個最重要因素是資料大小和傳輸距離。 在透過網路移動資料之前先對其進行壓縮。 選擇區域時盡量減少跨網路的資料移動。 將資料儲存在靠近生產者的地方,並在靠近資料的地方訓練模型。
  • 啟用功能可重複使用性
    評估是否可以透過使用現有的公開可用資料集(例如 AWS Data Exchange 和 Open Data on AWS(包括 Amazon Sustainability Data Initiative)來避免資料處理。 他們提供各種數據,包括天氣和氣候數據集、衛星圖像、空氣品質數據和能源數據。 透過使用這些精選的資料集,可以避免重複從提供者下載資料、將其儲存在雲端、組織和清理資料所需的運算和儲存資源。 對於內部資料,還可以使用managed feature storage services(如 SageMaker Feature Store)來減少跨團隊和專案的特徵工程代碼的重複。

實踐一: 最小化閒置資源

為data pipeline採用託管和無伺服器架構,以便僅在需要完成工作時才配置資源。 透過這樣做,無需 24/7 維護運算基礎設施,並且可以最大限度地減少閒置資源。

執行計畫

  • 使用託管服務 —
    託管服務將維持高平均使用率和已部署硬體的可持續性優化的責任轉移給 AWS。 使用託管服務將服務的可持續性影響分配給服務的所有租戶。
  • 建立無伺服器、事件驅動的資料管道 —
    使用 Glue 和Step Functions 進行資料提取和預處理。 Step Functions 可以編排Glue 作業以建立基於事件的serverless ETL 和 ELT pipeline。 由於 Glue 和 Step Functions 是serverless,因此運算資源僅根據需要使用,而不是在等待時處於空閒狀態。

實踐二: 實施與永續發展目標一致的資料生命週期政策

將資料分類,以理解其對workload和業務成果的重要性。 使用此資訊來確定何時可以將資料移至更節能的儲存或安全地刪除它。定義支援永續發展目標的資料保留期限,同時滿足但不超過業務要求。

執行計畫

  • 為所有資料分類類型定義生命週期策略 — 確定資料保留和刪除的要求。
  • 管理所有資料的生命週期 — 使用S3 Lifecycle policies自動強制執行刪除時間表,以最大程度地減少workload的總儲存需求。
  • 根據存取模式自動優化儲存永續性 — 當存取模式變更時,使用S3 Intelligent-Tiering storage class自動將資料移至最永續的存取層。

實踐三: 採用可持續的儲存選項

減少要儲存的資料量並採用可持續的儲存選項來限制workload的碳影響。 對於必須保留長期合規性和稽核要求的模型和日誌檔案等工件,使用高效的壓縮演算法並使用節能冷儲存。

執行計畫

  • 減少已處理資料的冗餘 —
    如果可以輕鬆地重建不經常存取的資料集,使用S3 One Zone-IA 來最大程度地減少儲存的資料總量。
  • 適合notebook的block storage大小 —
    不要過度配置notebook的block storage,並使用S3 等集中式物件存儲服務來儲存常見資料集,以避免資料重複。
  • 使用高效的檔案格式 —
    使用 Parquet 或 ORC 來訓練模型。 與 CSV 相比,它們可以幫助減少高達 87% 的儲存空間。
  • 遷移到更有效率的壓縮演算法 —
    評估不同的壓縮演算法並選擇最適合您的資料的演算法。 例如,在相同的壓縮速度下,Zstandard 產生的檔案比 Gzip 小 10–15%。

--

--

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

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

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

No responses yet