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创建、查看、删除、重命名、迁移虚拟环境