AWS-ML認證筆記 — Domain 4

ML Implementation and Operations(佔考試的20%)

任務一: 建立ML解決方案的效能、可用性、擴充性、韌性與容錯(fault tolerance)

  • 記錄和監控 AWS 環境。例如運用CloudTrail 和CloudWatch
    ,並建立錯誤監控解決方案
  • 部署到多個 AWS regions和AZ
  • 建立 AMI 和golden images
  • 建立 Docker 容器
  • 部署 Auto Scaling group
  • 調整資源大小(例如,instances、Provisioned IOPS、volumes)
  • 運行load balancing
  • 遵循 AWS 最佳實踐

任務二: 針對特定問題推薦並實施適當的 ML 服務和功能

  • ML on AWS (application services),例如:Amazon Polly/ Amazon Lex/ Amazon Transcribe/ Amazon Q
  • 認知到AWS有service quotas
  • 決定何時建立客製模型以及何時使用 SageMaker 內建演算法
  • 了解 AWS 基礎架構(例如instance type)和成本注意事項。如,使用 AWS Batch 訓練深度學習模型的作業可以使用Spot instance。

任務三: 將基本 AWS 安全性實務應用於 ML 解決方案

  • IAM
  • S3 bucket policies
  • Security groups
  • VPCs
  • Encryption and anonymization

任務四: 部署和實施ML解決方案

  • 設定Endpoint
  • 了解ML模型
  • 執行 A/B 測試
  • 重新訓練流水線
  • 對 ML 模型進行debug和故障排除。例如,偵測並緩解效能下降,監控模型的效能。

SageMaker and Docker Containers

SageMaker 中的所有模型都託管在 Docker 容器中,所以:

  • 預先建構的深度學習
  • 預先建置的 scikit-learn 和 Spark ML
  • 預先建置的 Tensorflow、MXNet、Chainer、PyTorch。透過 Horovod 或參數伺服器進行分散式訓練
  • 我們自己的訓練和推理代碼,或擴展預先建構的Image

這允許我們在 SageMaker 中使用任何腳本或演算法,無論執行時間或語言是甚麼。容器是隔離的,包含運行所需的所有相依性和資源。

  • Docker 容器是從Image建立的
  • Image是從 Dockerfile 建構的
  • Image保存在儲存庫(ECR)中

SageMaker Containers使用於讓”容器與 SageMaker” 相容的函式庫。在我們的Dockfile執行"RUN pip install sagemaker-containers"。

用來訓練的容器結構
用來佈署的容器結構

Docker Image的結構
WORKDIR

  • nginx.conf
  • predictor.py
  • serve/
  • train/
  • wsgi.py

將以上三個結構組合在Dockerfile中:

FROM tensorflow/tensorflow:2.0.0a0

RUN pip3 install sagemaker-training

# Copies the training code inside the container
COPY train.py /opt/ml/code/train.py

# Defines train.py as script entrypoint
ENV SAGEMAKER_PROGRAM train.py

環境變數(列舉):

  • SAGEMAKER_PROGRAM(Run a script inside /opt/ml/code)
  • SAGEMAKER_TRAINING_MODULE
  • SAGEMAKER_SERVICE_MODULE
  • SM_MODEL_DIR
  • SM_CHANNELS / SM_CHANNEL_*
  • SM_HPS / SM_HP_*
  • SM_USER_ARGS

使用自己的Image(command line):

  • cd dockerfile
  • !docker build -t foo .
  • from sagemaker.estimator import Estimator
estimator = Estimator(image_name=‘foo',
role='SageMakerRole',
train_instance_count=1,
train_instance_type='local')

estimator..fit()

Production Variants

我們可以使用 Production Variants 在即時流量上測試多個模型。Variant Weights會告訴 SageMaker 如何在它們之間分配流量。因此,我們可以以 10% 的Variant Weights推出模型的新迭代。一旦我們對新模型的效能能充滿信心,就可以將其流量100%轉移。

這就是 A/B test,並驗證實際設定中的效能,因為離線驗證並不總是有效。另外也可以使用Shadow Variants進行驗證,最後部署護欄(Guardrails)。

邊緣式的SageMaker

SageMaker Neo

Train once, run anywhere。基本上就是把模型部屬在遠端的裝置中。針對特定設備最佳化其代碼(Tensorflow, MXNet, PyTorch, ONNX, XGBoost, DarkNet, Keras)。由compiler與runtime所組成。

Neo + AWS IoT Greengrass

Neo-compiled models可以部署到 HTTPS 端點。端點通常Host在C5、M5、 M4、P3或P2。而且必須與用在編譯的instance type相同。

或者我們可以部屬在IoT Greengrass。這是將模型部署到實際邊緣設備的方法,這使用在雲端訓練的模型後在邊緣使用本地資料進行推理。使用 Lambda inference applications。

SageMaker Security

  • 使用 IAM — — 只設定使用者帳戶所需的權限
  • 使用MFA
  • 連接到任何內容時使用 SSL/TLS
  • 使用 CloudTrail 記錄 API 和使用者活動
  • 使用加密
  • 注意 PII

Data at Rest

AWS KMS:
Notebook和所有 SageMaker job都可以使用這一方式加密

  • 如Training、tuning、batch transform、endpoints等作業
  • Notebook以及 /opt/ml/ 和 /tmp 中的所有內容都可以使用 KMS key加密

S3:

  • 可以使用加密的 S3 bucket來訓練資料和託管模型
  • S3也可以使用KMS

Data in Transit

所有的流量都可以用TLS / SSL加密。另外用IAM role指派給 SageMaker 以授予其存取資源的權限。Inter-node training communication可以選擇加密:

  • 透過深度學習會增加訓練時間和成本
  • 也稱為inter-container traffic encryption
  • 設定訓練或調整作業時可以透過Console或 API 啟用

SageMaker與VPC

  • 在 VPC中執行的訓練作業
  • 我們可以使用private VPC 以獲得更高的安全性,所以需要設定 S3 VPC endpoint。也需要自訂endpoint policies和 S3 bucket policies可以確保安全
  • Notebook預設可以直連Internet(這可能是安全漏洞)。如果停用,VPC 需要interface endpoint (PrivateLink) 或 NAT gateway,並允許outbound connections,以便訓練和託管等作業
  • 訓練和推理容器預設也直連Internet。網路隔離是一種選擇,但這也會阻止 S3 存取

SageMaker + IAM

User permissions for:

  • CreateTrainingJob
  • CreateModel
  • CreateEndpointConfig
  • CreateTransformJob
  • CreateHyperParameterTuningJob
  • CreateNotebookInstance
  • UpdateNotebookInstance

Predefined policies:

  • AmazonSageMakerReadOnly
  • AmazonSageMakerFullAccess
  • AdministratorAccess
  • DataScientist

SageMaker Logging與Monitoring

CloudWatch 可以記錄、監控和警報:

  • 端點(Endpoint)的呼叫和延遲
  • Instance nodes健康狀況(CPU、Memory等)
  • Ground Truth(努力的員工,他們做了多少工作)

CloudTrail 記錄 SageMaker 中使用者、角色和服務的操作,會將日誌檔傳送到 S3 進行稽核。

管理SageMaker的資源

儘管這是一個維運問題,但需要在「建模(Modeling)」下討論。一般來說,依賴深度學習的演算法將受益於 GPU Instance(P3、g4dn)進行訓練。推理(Inference)通常要求較低,通常可以使用CPU instance(如C5),因為用GPU instance可能非常貴。

用Spot instance來訓練

  • 可以使用 EC2 Spot instances進行訓練,跟On-Demand來比節省高達 90%。
  • Spot instance會被中斷,所以使用 S3 檢查點將之前的訓練狀態回復
  • 可能會增加訓練時間,因為需要等待Spot instance是有得用的

Elastic Inference

這項服務在2023 四月之後不給新註冊的AWS account使用了。

  • 加速深度學習推理。這是使用 GPU instance進行推理
  • EI 加速器可以與 CPU instance一起新增(ml.eia1.medium / large / xlarge)
  • EI加速器也可能應用於notebooks
  • 可與 Tensorflow、PyTorch 和 MXNet 預先建置容器搭配使用(ONNX 可用於將模型匯出至 MXNet)
  • 可與使用支援 EI 的 Tensorflow、PyTorch 或 MXNet 建置的自訂容器配合使用
  • 使用影像分類和物件檢測的內建演算法

Serverless Inference

  • 2022 年推出
  • 指定容器、記憶體需求、併發(concurrency)要求
  • 底層容量自動配置和擴展
  • 適合不頻繁或不可預測的流量;當沒有請求時將縮小到零。
  • 根據使用情況收費
  • 透過 CloudWatch 監控
    模型設定時間、呼叫、記憶體使用率

SageMaker Inference Recommender

為我們的模型推薦最佳Instance Type和配置。可以自動進行負載測試模型調整,並部署到最佳推理端點(inference endpoint)。

運作方式:

  1. 將模型註冊到model registry
  2. 對不同端點配置進行基準測試
  3. 收集並視覺化指標來決定Instance
  4. Zoos的現有模型可能已經有了基準

Instance Recommendations

  • 對推薦的Instance type執行負載測試
  • 大約需要45分鐘

Endpoint Recommendations

  • 自訂負載測試
  • 我們指定instance、流量模式、延遲需求、throughput需求
  • 大約需要2小時

MLOps with SageMaker

K8S

  • 將 SageMaker 與基於K8S的 ML 基礎設施整合
  • 適用於K8S的 SageMaker Operators
  • Kubeflow Pipleline 的組件
  • 支援混合ML workflows(地端+雲端)
  • 能夠整合基於 K8S/Kubeflow 建構的現有 ML 平台
SageMaker Operators for Kubernetes
SageMaker Components for Kubeflow Pipelines

SageMaker Projects

SageMaker Studio 的原生 MLOps 解決方案與 CI/CD:

  • 建構Image
  • 準備資料,特徵工程
  • 訓練模型
  • 評估模型
  • 部署模型
  • 監控和更新模型

使用代碼儲存庫建置和部署ML解決方案。使用 SageMaker Pipelines 定義步驟。

Inference Pipelines

  • 2–15個容器的Linear sequence
  • Docker 容器中預訓練的內建演算法或我們自己的演算法的任意組合
  • 結合pre-processing、predictions、post-processing
  • Spark ML 和 scikit-learn 容器也能運作
    Spark ML 可以使用 Glue 或 EMR 來運作
    序列化(Serialized)為 MLeap 格式
  • 可以處理real-time inference與batch transforms

--

--

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

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

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

No responses yet