AWS 相關核心概念
簡潔地介紹一下AWS訓練云服務的核心關聯概念:
- AWS核心服務層:
- 基礎設施層: EC2(計算), S3(存儲), RDS(數據庫)等
- 人工智能層: SageMaker(訓練平臺), AI服務等
- 機器學習服務分級:
- 高層: 預構建AI服務(開箱即用)
- 中層: SageMaker(主要訓練平臺)
- 底層: 框架和基礎設施(最大自由度)
- SageMaker平臺核心功能:
- 開發: JupyterNotebook環境
- 訓練: 內置算法+自定義訓練
- 部署: 模型托管服務
-
基本工作流:
數據準備(S3) → 開發(Notebook) → 訓練(SageMaker) → 部署(Endpoints) -
入口文檔
文檔:https://docs.aws.amazon.com/zh_cn/
什么是EC2?(彈性云服務器)
Amazon Elastic Compute Cloud (Amazon EC2) 是一種提供可調節計算容量的 Web 服務 – 簡單來說,就是 Amazon’s 數據中心內的服務器 – 您可以使用它來構建和托管您的軟件系統。
Amazon Elastic Compute Cloud(Amazon EC2)在 Amazon Web Services(AWS)云中按需提供可擴展的計算容量。使用 Amazon EC2 可以降低硬件成本,因此您可以更快地開發和部署應用程序。您可以使用 Amazon EC2 啟動所需數量的虛擬服務器,配置安全性和聯網以及管理存儲。您可以添加容量(縱向擴展)來處理計算密集型任務,例如月度或年度進程或網站流量峰值。如果使用量減少,您可以再次減少容量(縮減)。
EC2 實例是 AWS 云中的虛擬服務器。啟動 EC2 實例時,您指定的實例類型決定了用于您的實例的主機硬件。每種實例類型以不同方式兼顧計算、內存、存儲和網絡資源。有關更多信息,請參閱 Amazon EC2 實例類型指南。
(下圖右邊是實例命名規則)
當前EC2支持的一些實例類型:
更多可參考:https://aws.amazon.com/cn/ec2/instance-types/
什么是S3?(對象存儲服務)
Amazon Simple Storage Service(Amazon S3)是一種對象存儲服務,提供行業領先的可擴展性、數據可用性、安全性和性能。各種規模和行業的客戶都可以使用 Amazon S3 存儲和保護任意數量的數據,用于數據湖、網站、移動應用程序、備份和恢復、歸檔、企業應用程序、IoT 設備和大數據分析。Amazon S3 提供了管理功能,使您可以優化、組織和配置對數據的訪問,以滿足您的特定業務、組織和合規性要求。
詳見:https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/Welcome.html
什么是 Amazon SageMaker AI?(機器學習平臺)
Amazon SageMaker AI 是一項完全托管的機器學習 (ML) 服務。借助 SageMaker AI,數據科學家和開發人員可以快速、自信地構建、訓練 ML 模型并將其部署到可用于生產的托管環境中。它提供了運行 ML 工作流的 UI 體驗,使 SageMaker AI ML 工具可在多個集成開發環境 (IDE) 中使用。
借助 SageMaker AI,您可以存儲和共享數據,而無需構建和管理自己的服務器。這樣,您或您的組織就有更多時間協作構建和開發 ML 工作流程,并更快地完成。SageMaker AI 提供托管 ML 算法,可在分布式環境中高效處理大量數據。SageMaker AI 內置對自帶算法和框架的支持,可提供靈活的分布式訓練選項,以適應您的特定工作流程。只需幾個步驟,您就可以從 SageMaker AI 控制臺將模型部署到安全且可擴展的環境中。
SageMaker平臺核心功能:
- 開發: JupyterNotebook環境
- 訓練: 內置算法+自定義訓練
- 部署: 模型托管服務
通俗來講: 數據存在S3(硬盤)里,用SageMaker(實驗室)處理數據訓練模型,需要更多算力時,自動調用EC2(計算機)
pytorch 訓練入門
寫在前面,建議速讀:
pytorch sagemaker入門訓練文檔
PyTorch 與 Amazon A SageMaker I 配合使用的資源
腳本訓練:
使用sagemaker腳本模式創建你的訓練
將 PyTorch 與 SageMaker Python SDK 結合使用
自定義鏡像:
Building your own algorithm container?
使用 SageMaker AI 自定義 Docker 容器
https://github.com/aws/deep-learning-containers/blob/master/available_images.md
dockerfile 編寫入門
整體的邏輯圖:
大白話總結:
Studio可以作為提交訓練任務的入口,通過xx.ipynb作為提交任務的引子,比如以下PyTorch任務代碼提交任務的流程是:
打包source_dir -> 在指定機器解壓source -> 指定機器使用image_uri的運行環境 -> 執行 entry_point
from sagemaker.pytorch import PyTorch
from sagemaker import get_execution_role
role = get_execution_role()image_uri = 'xxxx.dkr.ecr.us-east-1.xxxx
job_name='deepll-train'#勿使用"",可使用"-"train_s3 = {
'model': sagemaker.inputs.TrainingInput(s3_data='s3://xxx-sagemakers/xx'),
'data': sagemaker.inputs.TrainingInput(s3_data='s3://xxxx-sagemaker/data/xxx')
}#任務聲明
pytorch_estimator = PyTorch(base_job_name=job_name,source_dir="./train_dir", # 訓練代碼目錄entry_point="train.py", # the entry point that launch,入口腳本role=role,image_uri=image_uri, #訓練使用的python鏡像instance_type="ml.p4d.24xlarge", #訓練機器類型instance_count=1,# hyperparameters=hyperparameters, # 超參# distribution=distribution,# checkpoint_s3_uri = checkpoint_s3_uri, # s3 checkpoint 位置,默認對應存儲到訓練image的 /opt/ml/checkpoints# checkpoint_local_path=checkpoint_local_path, # 臨時存儲目錄)pytorch_estimator.fit(train_s3)
總的來說,在開發自己的訓練任務之前,需要準備好3個模塊:訓練鏡像、訓練數據、調整訓練代碼
demo
創建 notebook 過程參考這里:創建 Amazon SageMaker 筆記本實例,這個我就不細講了。
再重復一下一些重點概念:
- 核心組件
SageMaker Studio/Notebook
: 開發環境,類似 Jupyter Notebook
Training Job
: 訓練任務
S3
: 數據存儲服務,存放訓練數據和模型
IAM Role
: 權限管理,控制訪問權限
ECR
: 容器鏡像倉庫,存放訓練環境鏡像 - 關鍵參數解釋
entry_point
: 訓練腳本入口(比如 train.py)
source_dir
: 代碼目錄,會自動上傳
role
: IAM角色,用于權限控制
instance_type
: 訓練使用的機器類型(如 ml.p3.8xlarge)
接下來,我們從官方的一個pytorch簡單用例(https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-python-sdk/pytorch_mnist/pytorch_mnist.ipynb)入手,快速熟悉使用流程:
# !yes | pip uninstall torchvison
# !pip install -qU torchvision
# !pip3 install -U sagemaker
# !pip3 install -U boto3
# !pip install sagemaker-studio-image-build
step1: 安裝環境
step2: 初始化參數
step3: 獲取數據
step4: 將數據傳到 s3 上
通過 sagemaker_session.upload_data 接口,進行上傳,也可以通過 aws 命令行指令。
step5: 準備訓練腳本
from sagemaker.pytorch import PyTorchestimator = PyTorch(entry_point="mnist.py",role=role,py_version="py38",framework_version="1.11.0",instance_count=2,instance_type="ml.c5.2xlarge",hyperparameters={"epochs": 1, "backend": "gloo"},
)
step6: 開啟訓練
結束標志:
補充
訓練數據輸入方式
選擇策略
Amazon A SageMaker I 管理的訓練存儲路徑
下圖顯示了當您使用 SageMaker Python SDK 估算器類運行訓練作業時 SageMaker AI 如何映射輸入和輸出路徑的示例。
SageMaker AI 環境變量和訓練存儲位置的默認路徑參考:https://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/model-train-storage-env-var-summary.html
更多相關:
dockerfile 編寫入門
conda創建、查看、刪除、重命名、遷移虛擬環境