SageMaker - 构建 ML 模型

阅读本章,了解如何使用 SageMaker 中的内置算法构建机器学习 (ML)模型。

使用 Amazon SageMaker 中的内置算法

按照下面给出的步骤 −

步骤 1:选择内置算法

首先,您需要选择内置算法。 Amazon SageMaker 提供多种内置算法,如 线性学习器(用于分类和回归)、XGBoost(用于分类的提升树)和 K-means(用于聚类)。

步骤 2:准备数据

接下来,您需要将数据上传到 Amazon S3 存储桶。SageMaker 从 S3 读取数据并将其用于训练模型。数据应为 CSV 或 SageMaker 支持的其他格式。

步骤 3:创建 SageMaker 会话

打开您的 Jupyter Notebook。导入必要的库并创建 SageMaker 会话 −

import sagemaker
from sagemaker import get_execution_role

# 创建 SageMaker 会话
session = sagemaker.Session()

# 定义 S3 bucket 和数据路径
bucket = 'your-s3-bucket-name'
prefix = 'your-data-prefix'
role = get_execution_role()

第 4 步:配置算法和训练作业

创建 SageMaker 会话后,我们需要配置内置的 Linear Learner 算法。

您可以使用 SageMaker 的 LinearLearner estimator。然后,设置超参数并启动训练作业,如下所示 −

from sagemaker.amazon.linear_learner import LinearLearner

# 配置 LinearLearner 估算器
linear = LinearLearner(role=role, instance_count=1,
                       instance_type='ml.m4.xlarge',
                       predictor_type='binary_classifier',
                       output_path=f's3://{bucket}/{prefix}/output')

# 定义数据通道(训练和验证)
train_data = f's3://{bucket}/{prefix}/train/train.csv'
validation_data = f's3://{bucket}/{prefix}/validation/validation.csv'
data_channels = {'train': train_data, 'validation': validation_data}

# 训练模型
linear.fit(inputs=data_channels)

第 5 步:部署模型进行推理

训练后,将模型部署到 SageMaker 终端节点进行实时预测,如下所示 −

# 部署训练好的模型
predictor = linear.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge')

# 进行预测
result = predictor.predict([[1.5, 2.5, 3.0]])
print(result)

将您自己的模型带到 Amazon SageMaker

Amazon SageMaker 还允许您携带自己的预训练模型并进行部署。按照以下步骤将您自己的模型引入 Amazon SageMaker −

步骤 1:保存您的模型

如果您使用 TensorFlowPyTorch 等框架训练了模型,则可以将模型的权重和架构保存到 S3 存储桶中。

查看以下示例

import torch
import boto3

# 在本地保存 PyTorch 模型
torch.save(model.state_dict(), 'model.pth')

# 将模型上传到 S3
s3 = boto3.client('s3')
s3.upload_file('model.pth', 'your-s3-bucket-name', 'model/model.pth')

第 2 步:创建 SageMaker 模型

接下来,我们需要创建一个模型对象并指定托管模型的容器。您可以使用 SageMaker 的 Model 类来实现这一点。您还可以使用自定义 Docker 镜像来为您的模型提供服务,如下所示 −

from sagemaker.model import Model

# 定义模型
model = Model(model_data='s3://your-s3-bucket-name/model/model.pth',
              role=role,
              image_uri='your-custom-docker-image')

# 部署模型
predictor = model.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge')

步骤 3:部署模型

创建模型后,将其部署到 SageMaker 端点以使其可用于推理,如下所示 −

# 使用部署的模型执行推理
result = predictor.predict([[1.5, 2.5, 3.0]])
print(result)