如何使用AWS SageMaker SDK从零开始云端训练模型?

摘要:作者:SkyXZ CSDN:SkyXZ~-CSDN博客 博客园:SkyXZ - 博客园 PS:网页端用不明白...还是SDK方便... 一、SageMaker介绍 Amazon SageMaker 是 AWS 提供的全托管机器学习平台,它覆
作者:SkyXZ CSDN:SkyXZ~-CSDN博客 博客园:SkyXZ - 博客园 PS:网页端用不明白...还是SDK方便... 一、SageMaker介绍 Amazon SageMaker 是 AWS 提供的全托管机器学习平台,它覆盖了从数据准备、模型训练、超参数调优到模型部署的完整流程,我们可以通过 SageMaker,轻松创建 Notebook 实例进行数据探索和实验,也可以使用AWS的计算资源在云端快速训练大规模模型,无需管理底层服务器或集群。同时SageMaker 默认支持多种框架(如 TensorFlow、PyTorch、MXNet)和自定义容器,方便我们在熟悉的环境中进行深度学习开发,甚至对于需要快速验证模型或进行端到端部署的场景,SageMaker 提供了托管推理服务,让训练好的模型可以立即通过 API 被应用调用,虽然 SageMaker 提供了全流程可视化的网页开发,但是作为资深“调库码农”,让我一下子使用网页反而有点不习惯,因此我们今天主要介绍AWS的boto3这个库,使用这个库提供的接口来完成训练全流程,以下是boto3库的官方文档: boto3文档:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation AWS SageMaker:https://us-west-2.console.aws.amazon.com/sagemaker/ 在动手介绍 SageMaker 的接口之前,咱们先得把本地的 AWS CLI 配置好,通过 AWS CLI,我们能安全地管理 AWS 账号的访问权限、设置默认区域w和输出格式,同时让 boto3 能顺利地访问 SageMaker、S3 等服务,我们首先在AWS的控制台左上角服务里面找到"安全性、身份与合规性",再进入IAM的服务控制台,点击进入后找到右边的"我的安全凭证"申请一个访问凭证即可 然后我们再环境中下载AWS CLI,具体命令如下,Mac上的HomeBrew下载可以参考我的另一篇文章:Mac上HomeBrew安装及换源教程 # MacOS brew install awscli # Ubuntu sudo apt install awscli -y 接着我们在终端中输入aws configure后按照提示配置好即可 二、SageMaker-API用例 AWS 的 boto3 库功能非常强大,它不仅提供了 SageMaker、S3 Bucket 的接口,还涵盖了 AWS 上几乎所有服务的底层接口和高层封装,为 SageMaker 提供了完整的 API 支持。因此,今天我们将聚焦几个在实际使用中最常用的 API 接口,通过示例演示如何快速完成从数据上传、训练启动,到模型部署与推理的基本流程,让你能够用 Python 脚本高效管理整个机器学习任务,而在 boto3 中,每一个 AWS 服务都会对应一个独立的 客户端(client),这些客户端就是我们与 AWS 服务交互的入口,所有的 API 调用(比如上传文件到 S3、启动 SageMaker 训练任务、创建 IAM 角色等)都需要通过对应的客户端来完成,相比于 AWS 控制台点点点的操作方式,使用 boto3 让整个流程变得可编程和自动化: 数据层:使用 s3 客户端上传训练数据或下载模型结果; 权限层:通过 iam 客户端管理角色和策略,保证任务安全合规; 训练层:用 sagemaker 客户端一键启动训练任务,指定镜像、参数和算力资源; 部署层:调用 sagemaker 的 API 部署模型,生成 Endpoint 并完成在线推理。 Role角色 AWS的SageMarker进行训练需要用到一个Role的概念,这个Role(角色)是一种临时授权机制,由于我们在训练的时候数据集一般储存在AWS的S3Bucket中也有可能需要训练时附加EC2服务,而使用角色可以赋予SageMaker访问其他 AWS 服务(如 S3、CloudWatch)的权限,当SageMaker运行训练任务时,它会以这个角色的身份去读取数据集、写入模型输出等操作,因此我们首先需要在IAM中创建一个SageMaker执行角色(Execution Role),并授予我们创建的这个角色AmazonS3FullAccess以及 AmazonSageMakerFullAccess 等必要策略,有关Role的几个常见API如下: 查询当前账号下的所有Role 在 IAM 中,最直接的查询方式是调用 list_roles API,它可以返回当前账号下的角色信息。
阅读全文