调试器高级演示和可视化 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

调试器高级演示和可视化

以下演示将引导您使用调试器完成高级用例和可视化脚本。

使用训练和优化 Amazon SageMaker 实验和调试器模型

Nathalie Rauschmayr 博士Amazon应用科学家 | 长度:49 分 26 秒

了解 Amazon SageMaker 实验和调试器如何简化培训作业的管理。Amazon SageMaker 调试器提供对于训练作业的透明可见性,并将训练指标保存到 Amazon S3 存储桶中。SageMaker 实验使您能够将培训信息称为审判通过 SageMaker Studio 并支持培训作业的可视化。这有助于保持模型质量,同时根据重要性排名来减少不太重要的参数。

本视频演示模型修剪 技术,该技术使预训练的 ResNet50 和 AlexNet 模型更轻、更经济实惠,同时保持高标准的模型精度。

SageMaker Estemator 将 PyTorch 模型动物园提供的算法训练在Amazon通 Deep Learning Containers PyTorch 框架和调试器从训练过程中提取训练指标。

该视频还演示如何设置调试器自定义规则来观察修剪模型的准确性,以便触发 Amazon CloudWatch 事件和Amazon Lambda在精度达到阈值时函数,并自动停止修剪过程以避免冗余迭代。

学习目标如下:

  • 了解如何使用 SageMaker 加速 ML 模型训练并提高模型质量。

  • 了解如何通过自动捕获输入参数、配置和结果来管理的训练迭代。

  • 了解调试器如何通过自动从卷积神经网络的权重、梯度和激活输出等指标中捕获实时张量数据,使训练过程变得透明。

  • 当调试器发现问题时,使用 CloudWatch 触发 Lambda。

  • 使用 SageMaker 实验和调试器掌握 SageMaker 训练过程。

您可以从以下位置找到本视频中使用的笔记本和训练脚本。SageMaker 调试器 pyTorch 迭代模型修剪.

下图显示迭代模型修剪过程如何根据由激活输出和梯度评估的重要性等级来去掉 100 个最不显著的筛选条件,从而减小 AlexNet 的大小。

修剪过程将最初的 5000 万个参数减少到 1800 万个。它还将估计的模型大小从 201 MB 减少到 73 MB。


                包含模型修剪结果输出可视化效果的图像

您还需要跟踪模型精度,下图显示如何绘制模型修剪过程,以便根据 SageMaker Studio 中的参数数量来对模型精度的变化进行可视化。


                在 SageMaker Studio 中使用调试器进行张量可视化的张量图

在 SageMaker 工作室中,选择实验选项卡中,从修剪过程中选择调试器保存的张量列表,然后编写列出试验组件面板。选择所有十个迭代,然后选择添加图要创建试验组件图. 确定要部署的模型后,选择试验组件并选择菜单以执行操作,或选择选择。部署模型.

注意

要使用以下笔记本示例通过 SageMaker Studio 部署模型,请在train在中的函数train.py脚本。

# In the train.py script, look for the train function in line 58. def train(epochs, batch_size, learning_rate): ... print('acc:{:.4f}'.format(correct/total)) hook.save_scalar("accuracy", correct/total, sm_metric=True) # Add the following code to line 128 of the train.py script to save the pruned models # under the current SageMaker Studio model directory torch.save(model.state_dict(), os.environ['SM_MODEL_DIR'] + '/model.pt')

使用 SageMaker 调试器监视卷积自动编码器模型训练

本笔记本演示 SageMaker Debug 如何在手写数字的 MNIST 图像数据集上可视化来自不受监督(或自监督)学习过程的张量。

本笔记本中的训练模型是一个带有 MXNet 框架的卷积自动编码器。卷积自动编码器具有瓶颈形状的卷积神经网络,由编码器部分和解码器部分组成。

此示例中的编码器具有两个卷积层,以生成输入图像的压缩表示(潜在变量)。在这种情况下,编码器从大小(28,28)的原始输入图像中生成大小(1,20)的潜在变量,并显著减少训练数据的大小达 40 倍。

解码器有两个解卷积层,并通过重建输出图像来确保潜在变量保留关键信息。

卷积编码器为聚类算法提供更小的输入数据大小以及聚类算法(如 k 均值、k-nN 和 T 分布随机邻居嵌入 (t-SNE))的性能。

此笔记本演示如何使用可视化调试器潜在变量,如下面的动画所示。它还演示 t-SNE 算法如何将潜在变量分为十个聚类并将它们投影到二维空间中。图像右侧的散点图颜色方案反映了真实值,以显示 BERT 模型和 t-SNE 算法将潜在变量组织到聚类中的程度。


                卷积自动编码器的概念图

使用 SageMaker 调试器监视 BERT 模型训练中的注意力

来自转换器的双向编码表示 (BERT) 是一种语言表示模型。正如模型名称所反映的那样,BERT 模型建立在用于自然语言处理 (NLP) 的迁移学习转换器模型 之上。

BERT 模型接受了不受监督任务的预训练,例如,预测句子中缺失的单词或预测自然接在前一个句子之后的下一个句子。该训练数据包含 33 亿个字词(标记)的英文文本,来自维基百科和电子书籍等来源。对于一个简单的例子,BERT 模型可以高度注意 来自主题标记的适当动词标记或代词标记。

预先训练的 BERT 模型可以通过额外的输出层进行微调,以便在 NLP 任务中实现最先进的模型训练,例如自动响应问题、文本分类等。

调试器从微调过程中收集张量。在 NLP 上下文中,神经元的权重被称为。注意.

此笔记本演示如何使用来自 GluonNLP 模型动物园的预先训练的 BERT 模型了解斯坦福大学问答数据集以及如何设置 SageMaker Debug 来监视训练作业。

在查询和关键向量中绘制注意力分数 和各个神经元有助于识别模型预测不正确的原因。使用 SageMaker 调试器,您可以检索张量并绘制注意头视图在训练进行过程中实时了解模型正在学习的内容。

下面的动画显示在笔记本示例中提供的训练作业中十次迭代的前 20 个输入标记的注意力分数。


                注意力分数的动画

使用 SageMaker 调试器在卷积神经网络 (CNN) 中可视化类激活图

本笔记本演示如何使用 SageMaker Debug 绘制类激活图,以便在卷积神经网络 (CNN) 中进行图像检测和分类。在深度学习中,卷积神经网络(CNN 或 ConvNet)是一类深度神经网络,最常用于分析视觉图像。采用类激活图的应用之一是自动驾驶汽车,这需要对图像进行即时检测和分类,如交通标志、道路和障碍物。

在该笔记本中,PyTorch ResNet 模型接受德国交通标志数据集的训练,该数据集包含 40 多个类别的交通相关物体和总共 50,000 多张图像。


                CNN 类激活图的动画

在训练过程中,SageMaker Debug 收集张量以实时绘制类激活图。如动画图像所示,类激活图(也称为显著图)以红色突出显示具有高激活率的区域。

使用调试器捕获的张量,您可以对激活图在模型训练期间的演变方式进行可视化。在训练作业开始时,模型首先检测左下角的边缘。随着训练进行,焦点转移到中心并检测限速标志,模型成功地将输入图像预测为类别 3,这是限速 60km/h 标志的类别,置信度为 97%。