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:保存您的模型
如果您使用 TensorFlow 或 PyTorch 等框架训练了模型,则可以将模型的权重和架构保存到 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)