SageMaker 快速指南



SageMaker - 简介

Amazon SageMaker 是一款完全托管的机器学习 (ML) 服务,可帮助数据科学家和开发者快速构建、训练和部署 ML 模型到可用于生产的托管环境中。它简化了机器学习生命周期的每个步骤,从数据准备到模型训练和部署。

  • SageMaker 提供了一个直观的用户界面 (UI) 用于运行 ML 工作流,使其工具可在各种集成开发环境 (IDE) 中使用。
  • SageMaker 还支持流行的机器学习框架,如TensorFlowPyTorch 和 Scikit-learn。SageMaker 的此功能为开发者提供了使用所需工具的灵活性。

要开始使用 Amazon SageMaker,您需要设置 SageMaker 笔记本实例或使用 SageMaker Studio。然后,您可以上传数据、选择 ML 算法、训练模型并进行部署。

使用 Amazon SageMaker 进行机器学习的好处

在本节中,让我们了解使用 Amazon SageMaker 的好处:

完全托管的服务

Amazon SageMaker 是完全托管的,这意味着 AWS 会设置服务器,管理基础设施,并根据需要扩展资源。用户可以专注于其机器学习任务,而无需担心系统维护或性能问题。

扩展您的 ML 模型

Amazon SageMaker 允许您扩展您的机器学习模型,以适应您的数据和应用程序的扩展。它还支持分布式训练,从而缩短处理时间。它还确保即使是复杂的模型也能有效地进行训练。

成本效益

Amazon SageMaker 使用按需付费模式,这意味着您只需为使用的资源付费。您无需在昂贵的硬件上花钱。

SageMaker 还提供自动模型调整和优化,可帮助您减少计算时间和费用。

轻松部署模型

借助 SageMaker,您可以轻松地在生产环境中部署机器学习模型。它提供各种部署选项,例如批量预测、实时推理和 A/B 测试。

内置算法和预处理

用户无需编写自己的算法,因为 Amazon SageMaker 提供了各种针对性能优化的内置算法。这节省了大量时间和精力。

SageMaker 提供安全的环境

Amazon SageMaker 提供强大的安全功能来保护您的数据和模型。它与 AWS Identity 和 Access Management (IAM) 集成,允许您控制用户权限和访问级别。

支持多种框架

Amazon SageMaker 支持各种机器学习框架,例如 TensorFlow、PyTorch 和 MXNet。它允许开发者为其项目选择最佳工具。

如何设置 SageMaker?

按照以下步骤设置 Amazon SageMaker:

步骤 1:登录 AWS

设置 Amazon SageMaker 的第一步是登录您的 AWS 管理控制台。如果您没有 AWS 帐户,则必须创建它。您可以在 AWS 网站上免费创建它。

步骤 2:导航到 SageMaker

登录后,在 AWS 控制台中搜索“SageMaker”并选择它。它将打开 Amazon SageMaker 仪表板,您可以在其中管理您的机器学习项目。

步骤 3:创建 SageMaker 笔记本实例

要开始构建机器学习模型,您需要创建一个笔记本实例。单击“笔记本实例”,然后选择“创建笔记本实例”。

步骤 4:配置笔记本实例

您需要根据您的计算需求选择实例类型。如果您是初学者,您可以从较小的实例类型开始,例如ml.t2.medium

您还需要为您的笔记本实例命名。之后选择具有必要权限的角色。

步骤 5:启动笔记本实例

配置完成后,单击“创建笔记本实例”。实例准备就绪需要几分钟时间。

准备就绪并运行后,单击“打开 Jupyter”以访问 Jupyter Notebook 接口。现在您可以开始编写代码、训练模型和运行实验了。

步骤 6:准备您的数据

在开始训练模型之前,您需要将数据上传到 Amazon S3 存储桶。

S3 是 AWS 推荐与 SageMaker 一起使用的存储服务。您可以直接从笔记本环境访问和预处理数据。

配置您的第一个 SageMaker 项目

SageMaker 笔记本实例准备就绪后,您可以开始配置您的第一个项目。请按照以下步骤操作

步骤 1:选择预构建算法或编写您自己的算法

SageMaker 提供许多针对性能优化的内置算法,例如线性学习器、XGBoost 等。您可以选择这些预构建算法之一,也可以使用 Python 编写您自己的算法。

步骤 2:数据准备

数据准备是成功项目的关键。SageMaker 提供用于清理和转换数据的工具。您可以直接从笔记本访问存储在 Amazon S3 中的数据集。

在将数据输入机器学习模型之前,使用数据准备库来探索、清理和预处理数据。

步骤 3:训练您的模型

数据准备之后,下一步是训练模型。在 Jupyter Notebook 中,您可以指定算法、定义超参数和配置训练作业。

步骤 4:调整和优化

Amazon SageMaker 提供自动模型调整,它会调整超参数以找到最佳模型性能。训练后,您可以查看结果并进一步调整模型以提高准确性。

您还可以使用 SageMaker 的内置优化工具来加快此过程。

步骤 5:部署模型

训练和优化模型后,就可以部署它了。SageMaker 允许您直接将模型部署到端点以进行实时推理。

从 SageMaker 仪表板中选择“创建端点”,并配置您的部署设置。部署后,您可以开始使用训练好的模型进行预测。

步骤 6:监控和扩展

部署模型后,您可以监控其性能。您可以使用 SageMaker 的内置工具进行监控。它提供实时监控、基于需求的自动扩展和版本控制。

SageMaker - 构建机器学习模型

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

在 Amazon SageMaker 中使用内置算法

请按照以下步骤操作:

步骤 1:选择内置算法

首先,您需要选择一个内置算法。Amazon SageMaker 提供各种内置算法,例如线性学习器(用于分类和回归)、XGBoost(用于分类的增强树)和K 均值(用于聚类)。

步骤 2:准备数据

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

步骤 3:创建 SageMaker 会话

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

import sagemaker
from sagemaker import get_execution_role

# Create a SageMaker session
session = sagemaker.Session()

# Define the S3 bucket and data path
bucket = 'your-s3-bucket-name'
prefix = 'your-data-prefix'
role = get_execution_role()

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

创建 SageMaker 会话后,我们需要配置内置的线性学习器算法。

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

from sagemaker.amazon.linear_learner import LinearLearner

# Configure the LinearLearner estimator
linear = LinearLearner(role=role, instance_count=1,
                       instance_type='ml.m4.xlarge',
                       predictor_type='binary_classifier',
                       output_path=f's3://{bucket}/{prefix}/output')

# Define the data channels (train and validation)
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}

# Train the model
linear.fit(inputs=data_channels)

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

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

# Deploy the trained model
predictor = linear.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge')

# Make predictions
result = predictor.predict([[1.5, 2.5, 3.0]])
print(result)

将您自己的模型引入 Amazon SageMaker

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

步骤 1:保存您的模型

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

请查看以下示例

import torch
import boto3

# Save a PyTorch model locally
torch.save(model.state_dict(), 'model.pth')

# Upload the model to 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

# Define the model
model = Model(model_data='s3://your-s3-bucket-name/model/model.pth',
              role=role,
              image_uri='your-custom-docker-image')

# Deploy the model
predictor = model.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge')

步骤 3:部署模型

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

# Perform inference using the deployed model
result = predictor.predict([[1.5, 2.5, 3.0]])
print(result)

SageMaker - 训练机器学习模型

您可以使用 Amazon SageMaker 的完全托管训练服务轻松训练机器学习 模型。

要训练 ML 模型,您可以使用 SageMaker 的内置算法或使用您自己的模型。在这两种情况下,SageMaker 都允许您高效地运行训练作业。

如何使用 Amazon SageMaker 训练模型?

让我们借助以下给出的Python程序了解如何使用 SageMaker 训练模型:

步骤 1:准备您的数据

首先,准备您的数据并将其以 CSV 格式或任何其他合适的格式存储在 Amazon S3 中。Amazon SageMaker 从 S3 读取数据以进行训练作业。

步骤 2:定义估计器

现在,您需要定义估计器。您可以使用 Estimator 对象配置训练作业。在本例中,我们将使用内置的 XGBoost 算法训练模型,如下所示:

import sagemaker
from sagemaker import get_execution_role
from sagemaker.inputs import TrainingInput

# Define your SageMaker session and role
session = sagemaker.Session()
role = get_execution_role()

# Define the XGBoost estimator
xgboost = sagemaker.estimator.Estimator(
    image_uri=sagemaker.image_uris.retrieve("xgboost", session.boto_region_name),
    role=role,
    instance_count=1,
    instance_type="ml.m4.xlarge",
    output_path=f"s3://your-bucket/output",
    sagemaker_session=session,
)

# Set hyperparameters
xgboost.set_hyperparameters(objective="binary:logistic", num_round=100)

步骤 3:指定训练数据

我们需要指定训练数据以进行进一步处理。您可以使用 TrainingInput 类指定数据在 S3 中的位置,如下所示:

# Specify training data in S3
train_input = TrainingInput
   (s3_data="s3://your-bucket/train", content_type="csv")
validation_input = TrainingInput
   (s3_data="s3://your-bucket/validation", content_type="csv")

步骤 4:训练模型

最后,通过调用 fit 方法启动训练作业,如下所示:

# Train the model
xgboost.fit({"train": train_input, "validation": validation_input})

训练完成后,SageMaker 将自动配置资源、运行训练作业并将模型输出保存到指定的 S3 位置。

使用 SageMaker 进行分布式训练

Amazon SageMaker 支持分布式训练,使您能够跨多个实例扩展训练。当您处理大型数据集或深度学习模型时,这非常有用。SageMaker 提供了支持分布式训练的框架,例如 TensorFlow 和 PyTorch。

要启用分布式训练,您可以增加 Estimator 对象中的 instance_count 参数。

示例

下面是一个使用 TensorFlow 的示例:

from sagemaker.tensorflow import TensorFlow

# Define the TensorFlow estimator with distributed training
tensorflow_estimator = TensorFlow(
    entry_point="train.py",
    role=role,
    instance_count=2,
    instance_type="ml.p3.2xlarge",
    framework_version="2.3",
    py_version="py37",
)

# Train the model on multiple instances
tensorflow_estimator.fit({"train": train_input, "validation": validation_input})

在此示例中,SageMaker 使用两个 ml.p3.2xlarge 实例进行分布式训练。这将减少大型模型的训练时间。

SageMaker - 部署机器学习模型

训练完模型后,下一步是将其部署以进行预测。Amazon SageMaker 允许您将模型实时部署到 SageMaker 端点,或对大型数据集执行批量推理。部署后,您可以轻松地将机器学习模型集成到生产应用程序中。

将模型部署到 SageMaker 端点

使用 Amazon SageMaker 部署模型是一项非常简单的任务。训练后,您可以将模型实时部署到端点。然后,此端点将允许您执行实时预测。让我们看看下面的步骤:

步骤 1:部署模型

模型训练完成后,您可以使用 deploy 方法创建用于实时推理的端点,如下所示:

# Deploy the model to a SageMaker endpoint
predictor = xgboost.deploy(initial_instance_count=1, instance_type="ml.m4.xlarge")

# Perform real-time inference
result = predictor.predict([[5.1, 3.5, 1.4, 0.2]])
print(result)

在上面的示例中,模型部署到 ml.m4.xlarge 实例。部署后,您可以使用 predict 方法对新数据执行推理。

步骤 2:监控端点

SageMaker 会自动为您管理端点。您可以使用 SageMaker 仪表板监控端点的性能并根据需要进行扩展。SageMaker 还支持基于流量的自动扩展。

使用 Amazon SageMaker 进行批量推理

SageMaker 具有批量推理功能,当您需要对不需要实时响应的大型数据集进行预测时,此功能非常有用。在这种情况下,SageMaker 会批量处理数据并将结果输出到 S3 存储桶。

请按照以下步骤操作:

步骤 1:配置转换器

训练后,您可以创建一个 Transformer 对象来执行批量推理,如下所示:

# Configure the transformer
transformer = xgboost.transformer(
    instance_count=1, instance_type="ml.m4.xlarge", output_path="s3://your-bucket/batch-output"
)

# Perform batch inference
transformer.transform(data="s3://your-bucket/batch-input", content_type="text/csv", split_type="Line")

步骤 2:运行批量作业

SageMaker 将在存储在 S3 中的指定数据集上运行批量推理作业。结果将保存到您 S3 存储桶中的 output_path。

SageMaker - 监控和优化

监控机器学习模型是确保模型在生产环境中部署时按预期运行的重要步骤。Amazon SageMaker 提供各种工具来监控模型、跟踪指标并检测性能随时间的下降。

SageMaker 模型监控器

SageMaker 模型监控器工具会持续实时跟踪模型的质量。它会监控传入数据是否存在任何不一致之处,并在模型预测与预期预测存在差异时向您发出警报。此工具可确保您的模型始终保持准确和可靠。

CloudWatch 集成

另一个监控工具是 CloudWatch。Amazon SageMaker 可轻松与 Amazon CloudWatch 集成,以实时收集、跟踪和可视化性能指标。它允许您配置自定义指标,例如准确性或延迟。

自动重新训练

SageMaker 还支持自动重新训练,允许您设置触发器,以便在满足特定条件时重新训练模型。通过自动重新训练,您可以确保您的模型始终与最新数据保持同步。

超参数调整和优化

超参数调整在实现机器学习模型的最佳性能方面发挥着重要作用。Amazon SageMaker 的超参数优化功能允许您自动搜索模型的最佳超参数组合。

在 SageMaker 中实现超参数调整

SageMaker 的自动超参数调整也称为超参数优化 (HPO)。它通过运行具有不同参数组合的多个训练作业来帮助您识别最佳超参数。

示例

下面是 SageMaker 中超参数调整的基本 Python 代码示例:

from sagemaker.tuner import HyperparameterTuner, ContinuousParameter

# Define the hyperparameters to tune
hyperparameter_ranges = {
    'eta': ContinuousParameter(0.01, 0.2),
    'max_depth': ContinuousParameter(3, 10)
}

# Set up the tuner
tuner = HyperparameterTuner(
    estimator=xgboost_estimator,
    objective_metric_name='validation:accuracy',
    hyperparameter_ranges=hyperparameter_ranges,
    max_jobs=10,
    max_parallel_jobs=2
)

# Start tuning job
tuner.fit({"train": train_input, "validation": validation_input})

SageMaker - 定价

Amazon SageMaker 定价基于按需付费模式,这意味着您只需为使用的资源付费。定价取决于机器学习工作流的不同组件。

了解 Amazon SageMaker 定价

SageMaker 的主要定价组件如下所示:

Notebook 实例

当您使用 SageMaker 集成的 Jupyter 笔记本开发机器学习模型时,将根据实例类型和使用时间向您收费。

每种实例类型的每小时费率都不同,具体取决于它提供的 CPU、内存和 GPU 资源。您可以根据需要从各种实例类型中进行选择。

训练作业

对于训练机器学习模型,SageMaker 将根据计算资源和训练过程的持续时间收取费用。例如,如果您使用基于 GPU 的实例进行更快的训练,则成本会更高。

另一方面,如果您使用基于 CPU 的实例,则成本会更低。成本也会根据您使用的区域和您正在训练的模型类型(机器学习、深度学习或生成式 AI)而有所不同。

SagaMaker 会向您收取训练实例和在训练作业期间消耗的任何其他服务的费用。这些服务包括数据传输和 S3 存储。

托管/推理端点

SageMaker 还将向您收取托管费用。托管从您的模型训练并部署到 SageMaker 端点后开始。托管费用取决于用于部署的实例类型和活动端点的数量。

与训练作业一样,GPU 等高性能实例的成本会更高。计费按小时计算,针对每个端点。

S3 存储和数据传输

SageMaker 依赖 Amazon S3 来存储数据集。您将需要为 S3 中的数据存储以及 S3 和 SageMaker 之间的所有数据传输付费。这些成本取决于使用的数据量和进出云的数据量。

SageMaker 成本优化技巧

以下是一些方法,您可以借助这些方法来管理和降低使用 SageMaker 时的成本:

使用 Spot 实例进行训练作业

降低 SageMaker 训练成本最有效的方法之一是使用Spot 实例。Spot 实例允许您以更低的价格使用未使用的 Amazon EC2 容量。

选择正确的实例类型

选择正确的实例类型有助于降低成本。因此,只选择那些与您的开发、训练和托管需求的工作负载相匹配的实例类型。

例如,如果您正在进行小型实验,则基于 CPU 的实例就足够了。您无需为此使用昂贵的 GPU 实例。

使用 Amazon SageMaker 托管 Spot 训练

在 Amazon SageMaker 中设置训练作业时,您可以启用托管 Spot 训练。此功能会自动使用 Spot 实例,从而将训练作业的成本降低多达 70%。

监控和调整使用情况

您还可以使用Amazon CloudWatchAWS 预算来监控 SageMaker 的使用情况和成本。您还可以在其中设置警报。您还可以经常查看您的使用情况以终止未使用的端点。

利用免费套餐和 AWS 积分

如果您是 SageMaker 的初学者,AWS 提供一个免费套餐,其中包括 250 小时的免费t2.medium 笔记本实例和 50 小时的m4.xlarge 实例使用时间用于训练作业。

广告