Amazon SageMaker Studio 导览 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon SageMaker Studio 导览

本演练使用 aws/amazon-sagemaker-examples Amazon SageMaker存储库中的 xgboost_customer_churn_studio.ipynb 示例笔记本来演练 Studio 的主要功能。其目的是您继续完成演练并同时在 Studio 中运行笔记本。

笔记本中的代码训练多个模型并设置 SageMaker 调试程序和 SageMaker 模型监控器。本演练向您展示如何查看试验、比较生成的模型、显示调试程序结果以及使用 SageMaker Studio UI 部署最佳模型。您无需了解代码即可遵循本演练。

有关一系列介绍如何使用 SageMaker Studio 主要功能的视频,请参阅 NEW! Amazon SageMaker YouTube。

先决条件

要运行本次导览的笔记本,您需要:

克隆存储库

  1. 登录到 SageMaker Studio。对于 AWS SSO 用户,请使用邀请电子邮件中的 URL 登录。对于 IAM 用户,请按照下列步骤操作。

    1. 登录到 SageMaker 控制台

    2. 在左侧导航窗格中选择 Amazon SageMaker Studio

    3. 在用户名旁边的行中选择打开 Studio

  2. 在顶部菜单上,选择文件新建 ,然后选择终端

  3. 在命令提示符下,运行以下 命令。

    git clone https://github.com/aws/amazon-sagemaker-examples.git

注意

如果您在运行示例笔记本时遇到错误,并且在克隆存储库时经过了一段时间,请查看远程存储库上的笔记本以进行更新。

打开 Amazon SageMaker Studio 笔记本

Amazon SageMaker Studio 笔记本是内置于 SageMaker Studio 中的协作 Jupyter 笔记本。您可以启动 Studio 笔记本,而无需设置计算实例和文件存储,因此您可以快速启动它。

您可以与组织中的其他人共享笔记本,以便他们在构建模型和浏览数据时轻松重现您的结果并进行协作。

有关 SageMaker Studio 笔记本的更多信息,请参阅使用 Amazon SageMaker Studio 笔记本

打开 xgboost_customer_churn_studio 笔记本

  1. 登录到 Studio。有关更多信息,请参阅注册 Amazon SageMaker Studio

  2. 选择文件浏览器图标 ( )。

  3. 导航到 amazon-sagemaker-examples/aws_sagemaker_studio/getting_started

  4. 双击 xgboost_customer_churn_studio.ipynb 以打开笔记本。

  5. 选择内核对话框中,选择 Python 3 (数据科学),然后选择选择

您的屏幕应类似于以下内容:

接下来,您可以使用笔记本创建一个实验。

保持跟踪机器学习实验

Amazon SageMaker通过 实验可以组织、跟踪、比较和评估您的机器学习实验。实验 由具有相同目标的多个 试验 组成。每个试验由多个试验组件 组成,如预处理作业和训练作业。

首先创建一个实验,然后创建一个分配给实验的试验。接下来,创建一个训练作业作为试用组件,并将该组件与试验关联。有关更多信息,请参阅使用 Amazon SageMaker 实验管理机器学习

使用训练作业创建实验和试验

  1. 向下滚动笔记本,然后选择标题为 Amazon SageMaker Experiments (实验) 的部分。

  2. 在 Studio 主菜单中,选择运行,然后选择运行选定单元格之上的所有单元格

  3. 按住 Shift 键并按 Enter 运行下一个代码单元,这会通过调用 createExperiment 类的 方法创建实验。

    sess = sagemaker.session.Session() create_date = strftime("%Y-%m-%d-%H-%M-%S", gmtime()) customer_churn_experiment = Experiment.create(experiment_name="customer-churn-prediction-xgboost-{}".format(create_date), description="Using xgboost to predict customer churn", sagemaker_boto_client=boto3.client('sagemaker'))
  4. 在左侧边栏中,选择 SageMaker Experiment List (实验列表 ) 图标 (customer-churn-prediction-xgboost...) 以在实验列表中查看实验(名为 )。您可能需要刷新列表。

  5. 运行接下来的两个代码单元格。第一个单元格定义要在训练作业中使用的超参数。第二个单元格创建分配给在上一步中创建的实验的试验。接下来,该单元格创建一个训练作业作为试验组件,然后通过调用 fitEstimator 类的 方法运行试验。完成训练作业可能需要几分钟的时间。

    注意

    训练作业的输出包括一个很长的消息列表,如 [0]#011train-error:0.077154#011validation-error:0.099099。这些不是训练作业导致的错误,而是模型训练过程的结果。

    trial = Trial.create(trial_name="algorithm-mode-trial-{}".format(strftime("%Y-%m-%d-%H-%M-%S", gmtime())), experiment_name=customer_churn_experiment.experiment_name, sagemaker_boto_client=boto3.client('sagemaker')) xgb = sagemaker.estimator.Estimator(image_name=docker_image_name, role=role, hyperparameters=hyperparams, train_instance_count=1, train_instance_type='ml.m4.xlarge', output_path='s3://{}/{}/output'.format(bucket, prefix), base_job_name="demo-xgboost-customer-churn", sagemaker_session=sess) xgb.fit({'train': s3_input_train, 'validation': s3_input_validation}, experiment_config={ "ExperimentName": customer_churn_experiment.experiment_name, "TrialName": trial.trial_name, "TrialComponentDisplayName": "Training", } )
  6. 在实验列表中,双击实验名称以查看试验(名为 algorithm-mode-trial...)。

  7. 双击试验名称以查看关联的试验组件(名为 Training)。

  8. 双击训练试验组件以打开描述试验组件选项卡。您可以在此处了解训练工作的进度。

试验完成后,您可以查看有关训练作业的详细信息,例如指标和超参数以及可视化训练结果的图表。要查看可计费时间和实例类型,请选择 AWS Settings (AWS 设置) 标题。

接下来,笔记本创建并比较多个对 min_child_weight 超参数使用不同值的试验。

创建和比较多个试验

  1. 滚动到笔记本中标题为尝试其他超参数值的部分。

  2. 运行以下单元格以创建并运行五个试验,每个试验具有不同的 min_child_weight 超参数值。

    注意

    在创建单个试验的上一步中,将显示训练作业的输出。在这里,输出被隐藏,因为它会显示大约三千行。

    min_child_weights = [1, 2, 4, 8, 10] for weight in min_child_weights: hyperparams["min_child_weight"] = weight trial = Trial.create(trial_name="algorithm-mode-trial-{}-weight-{}".format(strftime("%Y-%m-%d-%H-%M-%S", gmtime()), weight), experiment_name=customer_churn_experiment.experiment_name, sagemaker_boto_client=boto3.client('sagemaker')) t_xgb = sagemaker.estimator.Estimator(image_name=docker_image_name, role=role, hyperparameters=hyperparams, train_instance_count=1, train_instance_type='ml.m4.xlarge', output_path='s3://{}/{}/output'.format(bucket, prefix), base_job_name="demo-xgboost-customer-churn", sagemaker_session=sess) t_xgb.fit({'train': s3_input_train, 'validation': s3_input_validation}, wait=False, experiment_config={ "ExperimentName": customer_churn_experiment.experiment_name, "TrialName": trial.trial_name, "TrialComponentDisplayName": "Training", } )
  3. 要跟踪进度并在 Studio 中查看结果,请选择 TRIAL COMPONENTS (试验组件) 上方的 Home (主页) 图标。

  4. 右键单击实验名称,然后选择在试验组件列表中打开。您可以查看有关试验的详细信息,比较试验以找到具有最佳性能的模型,并创建图表来可视化训练结果。

完成所有试验后,通过选择 validation:error 标题对试验进行排序。在后面的部分中,您将部署具有最低 validation:error 的试验。

创建图表以可视化数据

要在训练作业运行后可视化数据,可以在 Amazon SageMaker Studio 中创建图表。在此笔记本中,由于训练作业的运行时间很短,因此它们不会创建大量数据。因此,您将为在训练作业中指定的每个 validation:error_last 超参数值创建 min_child_weight 指标散点图(最终验证错误)。

创建散点图

  1. 试验组件列表中,从上一步中多重选择五个试验,然后选择添加图表

  2. 如果图表属性窗格未打开,请选择右上角的设置图标 ( ) 来将其打开。当您要关闭窗格时,再次选择设置图标。

  3. 按如下方式配置图表属性:

    • 对于 Data type (数据类型),选择 Summary statistics (摘要统计数据)

    • 对于 Chart type (图表类型),选择 Scatter plot (散点图)

    • 对于 X-axis (X 轴),选择 min_child_weight

    • 对于 Y-axis (Y 轴),选择 validation:error_last

    • 对于颜色,选择 trialComponentName

Studio 显示散点图。

接下来,笔记本设置 SageMaker 调试程序。

调试训练作业

Amazon SageMaker 调试程序可帮助您分析您的训练作业并发现问题。它将监控、记录和分析来自训练作业的张量数据,并根据您指定的一组规则检查训练张量。您可以从内置规则列表中选择规则,也可以创建您自己的自定义规则。有关更多信息,请参阅Amazon SageMaker 调试程序

调试训练作业

  1. 要指定用于分析训练作业的规则,请在标题为 Amazon SageMaker Debugger (调试程序) 的部分中运行以下单元格。

    debug_rules = [Rule.sagemaker(rule_configs.loss_not_decreasing()), Rule.sagemaker(rule_configs.overtraining()), Rule.sagemaker(rule_configs.overfit()) ]
  2. 运行此部分中的其余单元格以使用调试规则创建新试验。请注意添加到 rules=debug_rules 调用中的 fit 参数。

    entry_point_script = "xgboost_customer_churn.py" trial = Trial.create(...) framework_xgb = sagemaker.xgboost.XGBoost(image_name=docker_image_name, entry_point=entry_point_script, role=role, framework_version="0.90-2", py_version="py3", hyperparameters=hyperparams, train_instance_count=1, train_instance_type='ml.m4.xlarge', output_path='s3://{}/{}/output'.format(bucket, prefix), base_job_name="demo-xgboost-customer-churn", sagemaker_session=sess, rules=debug_rules ) framework_xgb.fit(...)
  3. 在实验列表中,双击实验名称以查看试验列表。

  4. 在试验列表中,右键单击调试试验(名为 framework-mode-trial...),然后选择在试验组件列表中打开

  5. 在试验组件列表中,右键单击试验,然后选择在试验详细信息中打开

  6. 要查看指定的每个调试规则的结果,请选择调试程序标题。

请注意,训练作业已通过为其配置的所有三个规则。如果调试程序已发现问题,您可以在列表中选择规则来在调试程序详细信息选项卡中查看更多信息。

接下来,部署模型。

部署最佳模型

您可以使用开发工具包或 Amazon SageMaker Studio UI 创建终端节点并部署模型。本笔记本向您介绍如何使用开发工具包进行部署。在本教程中,我们将向您展示如何使用 Studio UI 进行部署。部署模型后,可以设置 SageMaker 模型监控器来监视终端节点。

使用 Studio UI 部署模型

  1. 在实验列表中,右键单击实验,然后选择在试验组件列表中打开

  2. 要对试验进行排序,请选择 validation:error 标题。

  3. 右键单击具有最低 validation:error 的试验,然后选择部署模型

  4. 部署模型下,指定将托管此模型的终端节点的名称。

  5. 选择 Deploy model (部署模型)

接下来,笔记本设置 SageMaker 模型监控器。

监控已部署的模型

使用 Amazon SageMaker 模型监控器监控已部署模型的质量。模型监视器在已部署模型的终端节点上运行监控作业。您可以使用其内置的监控功能(无需编码),也可以编写用于自定义分析的代码。有关更多信息,请参阅Amazon SageMaker 模型监控器

笔记本首先创建一个处理作业来生成基准统计信息。接下来,它创建一个监控计划,轮询时间为 1 小时,该计划将最近捕获的数据与基准进行比较。

监控已部署的模型

  1. 运行标题为 Host the model and Model Monitor (托管模型和Amazon SageMaker模型监控器) 的笔记本部分中的所有代码单元。这可能需要一些时间。请注意,这会创建与您在上一节中创建的终端节点不同的终端节点。

  2. 在 Studio 中,选择 SageMaker Endpoint List (终端节点列表) 图标 ( )。

  3. 双击笔记本创建的终端节点(名为 demo-xgboost-customer-churn...)。

Monitoring job history (监控作业历史记录) 列表中,您可以查看监控作业发现的任何问题。要查看某个问题的相关详细信息,请选择该问题。

重要

必须关闭内核才能停止监控。要关闭内核,请从顶部的 Studio 菜单中选择内核,然后选择关闭内核

清理资源

要停止产生费用,您应清理已创建的资源。

要清理资源,请按照标题为清理的笔记本部分中的说明进行操作。