本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
跟踪和比较教程
本教程演示了如何使用亚马逊直观地跟踪和比较模型训练实验中的试验。 SageMaker Studio。本教程的基础是MNIST 手写数字分类实验
旨在使得能够在 MNIST 笔记本打开的情况下,在 Studio 的旁边查看本主题。在您遍历单元格时,本文档中的这一部分会突出显示相关代码并向您说明如何在 Studio 中观察结果。为简洁起见,已编辑一些代码段。
要清除笔记本创建的资源,请参阅清理 Amazon SageMaker 实验资源.
有关展示 Studio 的其他功能的教程,请参阅 亚马逊 SageMaker Studio 导览。
先决条件
MNIST
示例笔记本和配套 mnist.py 文件的本地副本。两个文件都可以从 sagemaker_experiments/mnist-handwritten-digits-classification-experiment
中的文件夹aws/亚马逊ageemaker-示例存储库。要下载文件,请选择每个链接,右键单击 Raw (原始) 按钮,然后选择 Save as (另存为)。 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的IAM Identity Center或 IAM 账户要登录 SageMaker Studio。有关更多信息,请参阅 注册到 Amazon SageMaker 域。
在 Studio 中打开笔记本
打开 笔记本
-
登录到 Studio。
-
在左侧边栏中,选择 File Browser (文件浏览器) 图标 (
)。
-
在文件浏览器窗格的顶部,选择 Up arrow (上箭头键) 图标,此时将打开 File Upload (文件上传) 对话框。浏览找到并选择您的本地版本的 mnist-handwritten-digits-classification-experiment.ipynb 和 mnist.py 文件,然后选择 Open (打开)。
-
这两个文件在文件浏览器中列出。双击上传的笔记本文件可在新选项卡中打开笔记本。
-
在笔记本的右上角,确保内核是 Python 3 (Data Science) (Python 3 (数据科学))。如果不是,请选择当前内核名称以打开 Select Kernel (选择内核) 下拉列表。选择 Python 3 (Data Science) (Python 3 (数据科学)),然后选择 Select (选择)。
安装实验开发工具包并导入模块
这些区域有:亚马逊 SageMaker 实验 Python SDK
import sys !{sys.executable} -m pip install sagemaker-experiments
import sagemaker from sagemaker import get_execution_role from sagemaker.session import Session from sagemaker.analytics import ExperimentAnalytics from smexperiments.experiment import Experiment from smexperiments.trial import Trial from smexperiments.trial_component import TrialComponent from smexperiments.tracker import Tracker
转换和跟踪输入数据
接下来的几个单元格创建 Amazon S3 存储桶和存储桶中名为的文件夹。mnist. 在 Studio 中,文件浏览器显示 mnist 文件夹。输入数据下载到 mnist/MNIST/raw 文件夹,归一化,然后转换后的数据上传到 mnist/MNIST/processed 文件夹。您可以向下钻取到 mnist 文件夹以显示数据文件,但不打开数据文件。
您的屏幕应类似于以下内容:

Dataset (数据集) 部分的最后一个单元格为转换作业创建跟踪器
with Tracker.create(display_name="Preprocessing", sagemaker_boto_client=sm) as tracker: tracker.log_parameters({ "normalization_mean": 0.1307, "normalization_std": 0.3081, }) tracker.log_input(name="mnist-dataset", media_type="s3/uri", value=inputs)
创建和跟踪实验
以下过程创建并跟踪实验以确定模型的 num_hidden_channel
超参数的效果。作为实验的一部分,在一个循环内创建了五个试验,num_hidden_channel
超参数的每个值对应一个试验。稍后在笔记本中,您将比较这五个试验的结果。
-
在 Studio 的左侧边栏中,选择SageMaker 资源图标 (
)。在下拉菜单中,选择实验和试验在您的账户中显示实验列表。
-
运行以下单元格。
mnist_experiment = Experiment.create( experiment_name=f"mnist-hand-written-digits-classification-{int(time.time())}", description="Classification of mnist hand-written digits", sagemaker_boto_client=sm) print(mnist_experiment)
输出:
Experiment(sagemaker_boto_client=<botocore.client.SageMaker object at 0x7f7152b326d8>, experiment_name='mnist-hand-written-digits-classification-1575947870', description='Classification of mnist hand-written digits', experiment_arn='arn:aws:sagemaker:us-east-2:acct-id:experiment/mnist-hand-written-digits-classification-1575947870')
在代码运行后,该实验将在实验列表中包含一个对应的条目。可能需要一段时间才能显示,您可能必须刷新实验列表。您的屏幕应类似于以下内容:
-
运行以下单元格。
preprocessing_trial_component = tracker.trial_component
在代码运行后,实验列表将包含一个标为 Unassigned trial components (未分配的试验组件) 的条目。试验组件条目是之前创建的数据预处理步骤。双击试验组件以进行验证。试验组件目前没有与实验相关联。您的屏幕应类似于以下内容:
-
在实验浏览器顶部的导航位置提示中选择
Home
图标。在此处双击实验以显示实验中的试验列表。 -
以下代码为实验创建试验。每个试验通过对
num_hidden_channel
超参数使用不同的数字来训练模型。将预处理试验组件添加到每个试验来进行完整跟踪(例如,用于审计目的)。该代码还指定了以下指标的定义:训练损失
测试损失
测试精度
定义告诉 SageMaker 从算法的日志输出中捕获这些指标。这些指标稍后用于评估和比较模型。
preprocessing_trial_component = tracker.trial_component for i, num_hidden_channel in enumerate([2, 5, 10, 20, 32]): trial_name = f"cnn-training-job-{num_hidden_channel}-hidden-channels-{int(time.time())}" cnn_trial = Trial.create( trial_name=trial_name, experiment_name=mnist_experiment.experiment_name, sagemaker_boto_client=sm, ) hidden_channel_trial_name_map[num_hidden_channel] = trial_name cnn_trial.add_trial_component(preprocessing_trial_component) estimator = PyTorch( py_version='py3', framework_version='1.1.0', ..., hyperparameters={ 'hidden_channels': num_hidden_channel, ... }, metric_definitions=[ {'Name':'train:loss', 'Regex':'Train Loss: (.*?);'}, {'Name':'test:loss', 'Regex':'Test Average loss: (.*?),'}, {'Name':'test:accuracy', 'Regex':'Test Accuracy: (.*?)%;'} ], enable_sagemaker_metrics=True, ) cnn_training_job_name = "cnn-training-job-{}".format(int(time.time())) estimator.fit( inputs={'training': inputs}, job_name=cnn_training_job_name, experiment_config={ "TrialName": cnn_trial.trial_name, "TrialComponentDisplayName": "Training", }, )
试验列表会在每个训练作业运行时自动更新。每次显示试验需要花费几分钟时间。您的屏幕应类似于以下内容:
比较和分析试验
此部分不同于笔记本,向您说明如何使用 SageMaker Studio UI。
查看试验的详细信息
-
双击其中一个试验以显示与该试验关联的试验组件的列表。每个试验均有一个预处理作业和训练作业。双击其中一个组件以打开一个显示有关每个组件的信息的新选项卡。
-
在 Trial stages (试验阶段) 下,选择 Preprocessing (预处理)。在 Describe Trial Component (描述试验组件) 菜单上,选择 Parameters (参数) 以显示之前记录的标准化参数。下一步,选择Artifacts以显示存储已转换数据集的 Amazon S3 存储桶的 URI。
-
在 Trial stages (试验阶段) 下,选择 Training (训练)。在 Describe Trial Component (描述试验组件) 菜单上,选择以下项目以显示有关训练作业试验组件的信息。
指标–
test:loss
、test:accuracy
, 和train:loss
参数— 超参数值和实例信息
Artifacts— Amazon S3 存储用于输入数据集和输出模型
Amazon设置— 作业名称、ARN、状态、创建时间、训练时间、计费时间、实例信息等
查看按 test:accuracy
排序的试验列表
-
选择 TRIAL COMPONENTS (试验组件) 上方的导航位置提示上的试验名称以显示试验列表。
-
选择所有五个试验。按住 Ctrl/CMD 键并选择每个试验。右键单击所选内容,然后选择 Open in trial component list (在试验组件列表中打开)。这将打开一个新的选项卡,其中会显示每个试验和试验组件。
-
如果 TABLE PROPERTIES (表属性) 窗格未打开,请选择右上角的 Settings (设置) 图标 (
) 来将其打开。取消选择除 Trial (试用)、Metrics (指标) 和 Training job (训练作业) 之外的所有内容。选择 Settings (设置) 图标以关闭窗格。
-
选择 test:accuracy 列标头以通过降低最大测试精度来对列表进行排序。您的屏幕应类似于以下内容:
查看 test:loss
与 num_hidden_channel
的图表
-
在 TRIAL COMPONENTS (试验组件) 窗格中,选择所有五个试验,然后选择 Add chart (添加图表)。在图表区域内进行选择,以打开 CHART PROPERTIES (图表属性) 的首选项窗格。
-
在 CHART PROPERTIES (图表属性) 中,选择以下内容:
Data type (数据类型) - Summary statistics (摘要统计数据)
Chart type (图表类型) - Line (线条)
X-axis (X 轴) - hidden-channels (隐藏的通道)
Y 轴-测试:loss_last
Color (颜色) - None (无)
您的屏幕应类似于以下内容: