下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习培训

今天,我们很高兴地宣布更新我们的 Amazon SageMaker实验 的能力 亚马逊SageMaker 使您可以使用 SageMaker Python SDK 或 boto3(包括本地 Jupyter 笔记本)从任何集成开发环境 (IDE) 组织、跟踪、比较和评估机器学习 (ML) 实验和模型版本。

机器学习 (ML) 是一个迭代过程。 在解决新用例时,数据科学家和 ML 工程师迭代各种参数以找到可用于生产的最佳模型配置(也称为超参数)以解决已识别的业务挑战。 随着时间的推移,在对多个模型和超参数进行试验后,如果没有工具来跟踪不同的实验,机器学习团队将很难有效地管理模型运行以找到最佳模型。 实验跟踪系统简化了比较不同迭代的过程,并有助于简化团队中的协作和沟通,从而提高生产力并节省时间。 这是通过以毫不费力的方式组织和管理 ML 实验以从中得出结论来实现的,例如,找到具有最佳准确性的训练运行。

为了解决这一挑战,SageMaker 提供了 SageMaker Experiments,这是一种完全集成的 SageMaker 功能。 它提供了灵活性,可以记录您的模型指标、参数、文件、工件、来自不同指标的图表、捕获各种元数据、搜索它们并支持模型的可重复性。 数据科学家可以通过可视化图表快速比较模型评估的性能和超参数。 他们还可以使用 SageMaker Experiments 下载创建的图表并与利益相关者共享模型评估。

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

随着 SageMaker Experiments 的新更新,它现在是 SageMaker SDK 的一部分,简化了数据科学家的工作,并且无需安装额外的库来管理多个模型执行。 我们正在引入以下新的核心概念:

  • 实验:组合在一起的运行集合。 实验包括多种类型的运行,可以使用 SageMaker Python SDK 从任何地方启动。
  • 运行:模型训练过程的每个执行步骤。 一次运行包含一次模型训练迭代的所有输入、参数、配置和结果。 可以使用 log_parameter, log_parameterslog_metric 职能。 可以使用记录自定义输入和输出 log_file 功能。

作为一部分实施的概念 Run 类可从安装了 SageMaker Python SDK 的任何 IDE 获得。 用于 SageMaker 训练、处理和

转换作业,如果在运行上下文中调用作业,SageMaker 实验运行会自动传递给作业。 您可以使用恢复运行对象 load_run() 从你的工作。 最后,通过新功能的集成,数据科学家还可以使用 run.log_confusion_matrix, run.log_precision_recallrun.log_roc_curve 功能,分别。

在这篇博文中,我们将提供示例,说明如何通过 SageMaker SDK 在 Jupyter notebook 中使用新的 SageMaker Experiments 功能。 我们将使用一个 PyTorch 训练 MNIST 手写数字分类示例的示例。 实验将组织如下:

  1. 创建实验的运行和记录参数:我们将首先创建一个新实验,为该实验开始新的运行,并将参数记录到其中。
  2. 记录模型性能指标:我们将记录模型性能指标并绘制指标图。
  3. 比较模型运行:我们将根据模型超参数比较不同的模型运行。 我们将讨论如何比较这些运行以及如何使用 SageMaker Experiments 选择最佳模型。
  4. 从 SageMaker 作业运行实验:我们还将提供一个示例,说明如何与 SageMaker 处理、训练或批量转换作业自动共享您的实验上下文。 这允许您使用以下命令自动恢复运行上下文 load_run 在你的工作中发挥作用。
  5. 集成 SageMaker Clarify 报告: 我们将展示我们现在如何整合 SageMaker澄清 使用训练有素的模型报告将偏差和可解释性报告到单个视图。

先决条件

对于这篇博文,我们将使用 亚马逊SageMaker Studio 展示如何使用更新后的 SageMaker 实验功能从 Studio notebook 记录指标。 要执行我们示例中提供的命令,您需要满足以下先决条件:

  • SageMaker Studio域
  • 具有 SageMaker 完全访问权限的 SageMaker Studio 用户配置文件
  • 一个 SageMaker Studio notebook,至少有一个 ml.t3.medium 实例类型

如果您没有可用的 SageMaker 域和用户配置文件,您可以使用此创建一个 快速安装指南.

记录参数

对于这个练习,我们将使用 火炬视觉,一个 PyTorch 包,为计算机视觉提供流行的数据集、模型架构和常见的图像转换。 SageMaker Studio 提供了一组 Docker图片 适用于 Amazon ECR 中提供的常见数据科学用例。 对于 PyTorch,您可以选择针对 CPU 或 GPU 训练优化的图像。 对于这个例子,我们将选择图像 PyTorch 1.12 Python 3.8 CPU OptimizedPython 3 核心。 下面描述的示例将侧重于 SageMaker 实验功能,并且代码不完整。

让我们用 torchvision 使用 SageMaker Experiments 将训练和测试数据集的数据样本数量打包并跟踪为参数。 对于这个例子,我们假设 train_settest_set 已下载 torchvision 数据集。

from sagemaker.session import Session
from sagemaker.experiments.run import Run
import os

# create an experiment and start a new run
experiment_name = "local-experiment-example"
run_name = "experiment-run"

with Run(experiment_name=experiment_name, sagemaker_session=Session(), run_name=run_name) as run:
    run.log_parameters({
        "num_train_samples": len(train_set.data),
        "num_test_samples": len(test_set.data)
    })
    for f in os.listdir(train_set.raw_folder):
        print("Logging", train_set.raw_folder+"/"+f)
        run.log_file(train_set.raw_folder+"/"+f, name=f, is_output=False)

在此示例中,我们使用 run.log_parameters 记录训练和测试数据样本的数量,以及 run.log_file 将原始数据集上传到 Amazon S3 并将它们记录为我们实验的输入。

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。 下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

训练模型和记录模型指标

现在我们已经下载了 MNIST 数据集,让我们训练一个 CNN模型 识别数字。 在训练模型时,我们希望加载现有的实验运行,将新参数记录到其中,并通过记录模型指标来跟踪模型性能。

我们可以使用 load_run 函数加载我们之前的运行并使用它来记录我们的模型训练

with load_run(experiment_name=experiment_name, run_name=run_name, sagemaker_session=Session()) as run:
    train_model(
        run=run,
        train_set=train_set,
        test_set=test_set,
        epochs=10,
        hidden_channels=5,
        optimizer="adam"
    )

然后我们可以使用 run.log_parameterrun.log_parameters 将一个或多个模型参数记录到我们的运行中。

# log the parameters of your model
run.log_parameter("device", "cpu")
run.log_parameters({
    "data_dir": data_dir,
    "optimizer": optimizer,
    "epochs": epochs,
    "hidden_channels": hidden_channels
})

我们可以使用 run.log_metric 将性能指标记录到我们的实验中。

run.log_metric(name=metric_type+":loss", value=loss, step=epoch)
run.log_metric(name=metric_type+":accuracy", value=accuracy, step=epoch)

对于分类模型,您还可以使用 run.log_confusion_matrix, run.log_precision_recallrun.log_roc_curve, 自动绘制模型的混淆矩阵、精度召回图和 ROC 曲线。 由于我们的模型解决了多类分类问题,因此我们只记录它的混淆矩阵。

# log confusion matrix
with torch.no_grad():
    for data, target in test_loader:
        data, target = data.to(device), target.to(device)
        output = model(data)
        pred = output.max(1, keepdim=True)[1] 
        run.log_confusion_matrix(target, pred, "Confusion-Matrix-Test-Data")

查看运行详细信息时,我们现在可以看到生成的指标,如下面的屏幕截图所示:

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

运行详细信息页面提供了有关指标的更多信息。

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

并且在参数概览页面上跟踪新模型参数。

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

您还可以使用自动绘制的混淆矩阵按类别分析模型性能,该矩阵也可以下载并用于不同的报告。 您还可以绘制额外的图表,以根据记录的指标分析模型的性能。

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

比较多个模型参数

作为数据科学家,您希望找到最佳模型。 这包括使用不同的超参数多次训练模型,并将模型的性能与这些超参数进行比较。 为此,SageMaker Experiments 允许我们在同一个实验中创建多个运行。 让我们通过使用不同的模型训练我们的模型来探索这个概念 num_hidden_channelsoptimizers.

# define the list of parameters to train the model with
num_hidden_channel_param = [5, 10, 20]
optimizer_param = ["adam", "sgd"]
run_id = 0
# train the model using SageMaker Experiments to track the model parameters, 
# metrics and performance
sm_session = Session()
for i, num_hidden_channel in enumerate(num_hidden_channel_param):
    for k, optimizer in enumerate(optimizer_param):
        run_id += 1
        run_name = "experiment-run-"+str(run_id)
        print(run_name)
        print(f"Training model with: {num_hidden_channel} hidden channels and {optimizer} as optimizer")
        # Defining an experiment run for each model training run
        with Run(experiment_name=experiment_name, run_name=run_name, sagemaker_session=sm_session) as run:
            train_model(
                run=run, 
                train_set=train_set,
                test_set=test_set,
                epochs=10, 
                hidden_channels=num_hidden_channel,
                optimizer=optimizer
            )

我们现在正在为我们的实验创建六个新运行。 每个人都会记录模型参数、指标和混淆矩阵。 然后我们可以比较运行以针对问题选择性能最佳的模型。 在分析运行时,我们可以将不同运行的度量图绘制为单个图,比较不同训练步骤(或时期)中运行的性能。

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

将 SageMaker 实验与 SageMaker 训练、处理和批量转换作业结合使用

在上面的示例中,我们使用 SageMaker Experiments 从 SageMaker Studio 笔记本记录模型性能,其中模型是在笔记本中本地训练的。 我们可以做同样的事情来记录 SageMaker 处理、训练和批量转换作业的模型性能。 借助新的自动上下文传递功能,我们无需专门与 SageMaker 作业共享实验配置,因为它会被自动捕获。

下面的示例将重点介绍 SageMaker 实验功能,并且代码不完整。

from sagemaker.pytorch import PyTorch
from sagemaker.experiments.run import Run
from sagemaker.session import Session
from sagemaker import get_execution_role
role = get_execution_role()

# set new experiment configuration
exp_name = "training-job-experiment-example"
run_name = "experiment-run-example"

# Start training job with experiment setting
with Run(experiment_name=exp_name, run_name=run_name, sagemaker_session=Session()) as run:
    est = PyTorch(
        entry_point="",
        dependencies=[""],
        role=role,
        model_dir=False,
        framework_version="1.12",
        py_version="py38",
        instance_type='ml.c5.xlarge',
        instance_count=1,
            hyperparameters={
            "epochs": 10,
            "hidden_channels":5,
            "optimizer": "adam",
        },
        keep_alive_period_in_seconds=3600
    )
    
    est.fit()

在我们的模型脚本文件中,我们可以使用 load_run(). 在 SageMaker 处理和训练作业中,我们不需要提供实验配置来加载配置。 对于批量转换作业,我们需要提供 experiment_namerun_name 加载实验的配置。

with load_run() as run:
    run.log_parameters({...})
    train_model(run, ...)

除了我们在从笔记本脚本运行 SageMaker Experiments 时获得的信息外,从 SageMaker 作业运行将自动填充作业参数和输出。

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。 下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

新的 SageMaker Experiments SDK 还使用试验和试验组件的概念确保与以前版本的向后兼容性。 使用以前的 SageMaker Experiments 版本触发的任何实验都将自动在新 UI 中可用,以用于分析实验。

集成 SageMaker Clarify 和模型训练报告

SageMaker Clarify 通过检测帮助改进我们的 ML 模型 潜在的偏见 和帮助 说明 这些模型如何进行预测。 Clarify 提供预构建的容器,在您的模型训练后作为 SageMaker 处理作业运行,使用有关您的数据(数据配置)、模型(模型配置)的信息,以及我们想要分析可能的偏差(偏差)的敏感数据列配置)。 到目前为止,SageMaker Experiments 将我们的模型训练和 Clarify 报告显示为通过试验连接的单独试验组件。

通过新的 SageMaker Experiments,我们还可以将 SageMaker Clarify 报告与我们的模型训练相集成,具有一个真实来源,使我们能够进一步了解我们的模型。 对于综合报告,我们需要做的就是为我们的培训和澄清工作使用相同的运行名称。 以下示例演示了我们如何使用 XGBoost 模型 预测全美成年人的收入。 该模型使用 UCI 成人数据集. 对于本练习,我们假设模型已经过训练并且我们已经计算了数据、模型和偏差配置。

with Run(
    experiment_name='clarify-experiment',
    run_name="joint-run",
    sagemaker_session=sagemaker_session,
) as run:
    xgb.fit({"train": train_input}, logs=False)
    clarify_processor.run_bias(
        data_config=bias_data_config,
        bias_config=bias_config,
        model_config=model_config,
        model_predicted_label_config=predictions_config,
        pre_training_methods="all",
        post_training_methods="all",
    )
    clarify_processor.run_explainability(
        data_config=explainability_data_config,
        model_config=model_config,
        explainability_config=shap_config,
    )

通过此设置,我们获得了一个组合视图,其中包括模型指标、联合输入和输出,以及模型统计偏差和可解释性的 Clarify 报告。

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。 下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。 下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。 下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

结论

在本文中,我们探索了新一代 SageMaker Experiments,它是 SageMaker SDK 的集成部分。 我们演示了如何使用新的 Run 类从任何地方记录您的 ML 工作流程。 我们展示了新的实验 UI,它允许您跟踪实验和绘制单次运行指标的图表,以及使用新的分析功能比较多次运行。 我们提供了来自 SageMaker Studio 笔记本和 SageMaker Studio 训练作业的日志记录实验示例。 最后,我们展示了如何在统一视图中集成模型训练和 SageMaker Clarify 报告,让您进一步了解您的模型。

我们鼓励您尝试新的实验功能并与 机器学习和人工智能社区 如果您有任何问题或反馈!


作者简介

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。迈拉·拉德拉·坦克 是 AWS 的机器学习专家。 她拥有数据科学背景,在与各行各业的客户一起设计和构建 ML 应用程序方面拥有 9 年的经验。 作为技术主管,她帮助客户通过新兴技术和创新解决方案加速实现业务价值。 在空闲时间,Maira 喜欢旅行,喜欢在温暖的地方与家人共度时光。

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。玛尼哈努加 是 Amazon Web Services (AWS) 的人工智能和机器学习专家 SA。 她帮助客户使用机器学习解决使用 AWS 的业务挑战。 她大部分时间都花在深入研究和教授客户有关计算机视觉、自然语言处理、预测、边缘 ML 等 AI/ML 项目。 她对 ML at edge 充满热情,因此,她创建了自己的实验室,配备了自动驾驶套件和原型制造生产线,她在那里度过了很多空闲时间。

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。德文奇 是 AWS 的一名软件开发工程师。 她目前参与在 AWS SageMaker 中构建一系列平台服务和工具,以帮助客户使他们的 ML 项目取得成功。 她还热衷于将 MLOps 的概念带给更广泛的受众。 工作之余,德文喜欢练习大提琴。

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。阿布舍克·阿加瓦尔 是 Amazon SageMaker 的高级产品经理。 他热衷于与客户合作并使机器学习更容易获得。 在业余时间,Abhishek 喜欢绘画、骑自行车和学习创新技术。

下一代 Amazon SageMaker 实验 – 大规模组织、跟踪和比较您的机器学习训练 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。达娜·本森 是 Amazon SageMaker 实验、沿袭和搜索团队的一名软件工程师。 在加入 AWS 之前,Dana 花时间在 Alexa 中启用智能家居功能,并在星巴克进行移动订购。

时间戳记:

更多来自 AWS机器学习