本文是AWS SageMaker系列的一部分,旨在探索“31个塑造财富500强机器学习策略的问题”。
什么是?
之前的博客文章,“数据采集和探索”和“数据转换和特征工程”,探索了AWS SageMaker的能力如何帮助数据科学家在数据探索、理解、转换和特征工程方面进行协作和加速。
本博客文章将重点探讨与实验、模型训练和评估相关的关键问题,并探讨AWS SageMaker如何帮助解决这些问题。
▢[自动化] 数据科学家如何自动分割数据以进行训练、验证和测试?▢[自动化] 现有平台是否有助于加速对多个标准算法的评估和超参数的调整值?▢[协作] 数据科学家如何共享实验、配置和训练模型?▢[可复现性] 如何确保实验输出的可复现性?▢[可复现性] 您如何跟踪和管理不同版本的训练模型?▢[治理和合规性] 如何跟踪模型边界,以解释模型决策并检测偏差?
用例和数据集
我们将重复使用欺诈检测用例、数据集生成器和生成的客户与交易数据集。
使用SageMaker Wrangler分割数据集
[✓] [自动化] 数据科学家如何自动分割数据以进行训练、验证和测试?
在之前的文章中,我们探讨了SageMaker如何加速数据理解、转换和特征创建在模型开发中的过程。
数据质量和覆盖率在模型的结果中起着关键作用。虽然我们希望模型可以访问更大的数据集,但我们需要确保模型不是在完整的数据集上进行训练。
为什么?
- 避免过拟合:模型应该理解模式,而不仅仅是记住它们。
- 无偏评估:实时数据始终是未知的
- 调整:自动选择超参数的最佳值
什么是?
因此,为了确保您的模型能够很好地推广到未知数据,具有不同的数据集非常重要:
- 训练数据:训练模型的参数
- 验证数据:调整超参数的值
- 测试数据:评估最终模型的性能。
何时?
为了防止测试或验证数据集对训练数据集造成“数据泄漏”,任何查看整个数据集的转换(如过采样)都应在分割后单独进行。
如何?
SageMaker Wrangler提供了内置的数据拆分转换:随机、有序、键或分层。有关添加转换的详细信息,请参阅“数据转换和特征工程”。
⚠️ ㅤData Wrangler的免费套餐每月提供 25 小时的 ml.m5.4xlarge 实例,持续 2 个月。此外,读写 S3 还会产生相关成本。
使用SageMaker AutoPilot进行实验
[✓] [自动化] 现有平台是否有助于加速多个标准算法的评估和超参数调整的价值
太棒了!到目前为止,我们已经看到了SageMaker如何轻松解决我们关于数据清理、转换和特征提取的问题。它还简化了将数据分割为训练、验证和测试集的过程。现在,对于一个数据科学家来说,关键的下一步是利用这些准备好的数据来开始构建模型。让我们看看SageMaker如何加速这个过程。
在本节中,我们将重点介绍SageMaker AutoPilot,这是一项AWS服务,可以自动化模型训练和评估。
💡 AutoPilot是一个功能丰富的工具,可以自动处理各种数据转换,比如处理缺失数据,这是我们之前在其他文章中需要手动处理的。此外,AutoPilot可以将数据原生地分为训练组和验证组。
导出测试和验证数据:
在我们开始之前,让我们导出我们的测试数据集(可选地,也可以导出验证数据集)以供未来的模型评估使用。为此,将“导出到S3” wrangler操作添加到测试和验证数据集中,然后运行wrangler作业(为什么不是训练数据?)
⚠️ ㅤ您可能需要提高“ml.m5.4xlarge”实例的配额以进行处理。
导出训练数据:
热心的读者可能会想为什么我们之前没有导出训练数据集。实际上,您是可以导出的!但是,我们跳过了这一步,因为当我们在SageMaker工作室中选择“训练”选项时,训练输出会被自动导出。
完成前面两个步骤后,您现在应该在S3中有三个文件夹:一个用于测试,一个用于验证,一个用于训练。每个文件夹中都包含由清单文件索引的数据集分成多个部分。
配置AutoPilot实验
现在数据已经导出,我们可以开始训练模型了。点击“导出并训练”将会将您重定向到AutoPilot向导。该向导提供了各种部分和选项来优化过程。
1. 实验和数据详情:在这里,您可以指定训练和验证数据集,以及实验输出位置,例如模型和报告将存储在哪里。在本示例中,我已将训练和验证设置为导出的清单文件和部分。
2. 目标和特征:选择影响目标的目标和特征。
3. 训练方法和算法:选择自动,SageMaker AutoPilot将自动评估多个算法并选择最佳模型。
4. 部署和高级设置:部署最佳模型以进行服务。可选地,调整实验设置,包括限制每次试验或整体作业时间,以控制成本。
使用AutoPilot进行训练
在审查配置后,您可以创建一个实验。这将触发多个试验,可以在AutoML > 您的实验下找到。实验完成后,您将看到最佳模型。
作业输出还包括用于数据探索和进一步手动微调的模型候选生成的笔记本。
测试最佳模型
现在我们有了最佳模型,让我们使用之前导出的测试数据进行测试。
如果您在AutoML向导流程中没有选择“自动部署”,则可以从实验界面手动部署模型。我们将在下一篇关于“部署和服务”的文章中详细讨论部署。
⚠️ ㅤ 对于批处理模式,您可能需要提高实例配额以使用变换作业。
暂时,让我们以实时模式部署并发送一些请求数据以观察响应。您可以使用UI或CLI查询端点。
要使用CLI,请打开云Shell并执行以下命令:
# 让我们发送无效数据来了解预期的请求有效负载 aws sagemaker-runtime invoke-endpoint --body `echo 'example' | base64` --endpoint-name automl-fraud-detection --content-type text/csv /dev/stdout > Exception: Invalid data format. Input data has 1 while the model expects 6 > ['customer_id_0', 'state', 'amount', 'transaction_time', 'transaction_state', 'time_of_day'] <class 'list'># 发送更高的金额(947.98)aws sagemaker-runtime invoke-endpoint --body `echo 2,TX,947.08,1695574580,TX,16 | base64` --endpoint-name automl-fraud-detection --content-type text/csv /dev/stdout> 1.0 // 欺诈# 发送较低的金额(947.98)aws sagemaker-runtime invoke-endpoint --body `echo 2,TX,94.08,1695574580,TX,16 | base64` --endpoint-name automl-fraud-detection --content-type text/csv /dev/stdout> 0.0 // 非欺诈
使用SageMaker Debugger进行故障排除
☆ [奖励] 如何了解和监控您长时间运行的训练工作的进度?
在这个例子中,我使用了一个小数据集,所以训练通常在一个小时或几个小时内完成。然而,在大数据集的企业场景中,训练可能需要数天甚至数周的时间。在此期间监控和了解正在发生的情况是很重要的,以避免不必要的成本。
SageMaker Debugger是一个很有用的工具。它可以窃听您的训练过程,不断捕获指标和张量,将它们存储在目标存储桶中,并应用各种规则来评估和可视化训练进度。我不打算在这里详细介绍这些规则或体系结构,感兴趣的人可以在这里和这里阅读相关信息。
使用SageMaker Clarify进行解释
[✓] [治理与合规] 如何跟踪模型边界以解释模型决策并检测偏差?
SageMaker与SageMaker Clarify进行了本地集成,这使您能够解释训练输出中的特征相关性。这反过来可以帮助您更好地理解模型决策。
我们将在“监控和持续改进”文章中更详细地了解SageMaker Clarify。
使用SageMaker Experiments进行组织
[✓] [协作] 数据科学家如何共享实验、配置和训练模型?
如“数据采集与探索”中所讨论的,SageMaker Studio允许该域中的所有用户都能访问相同的信息,包括实验。
此外,您可以轻松地与Canvas用户共享这些实验,或将可视化和训练模型的工件导出到本地、云端或边缘执行。
[✓] [可复现性] 如何确保实验结果的可复现性?
使用SageMaker进行试验时,例如AutoML,在每次运行时都会进行日志记录和监控。SageMaker Experiments自动捕获所有步骤、参数、设置以及相关的输入和输出。这使得具有一致设置的模型的复现变得容易,从而简化了故障排除和合规性模型的审计。
使用SageMaker模型注册表进行目录管理
[✓] [可复现性] 如何跟踪和管理不同版本的训练模型
在典型的建模过程中,数据科学家会不断进行实验和调优模型以解决特定问题,从而创建多个模型版本。然而,随着训练模型的存储库增长,对它们的管理变得具有挑战性。使用的平台必须允许数据科学家执行以下任务:
- 将相关模型逻辑地组织成组,
- 无缝管理不同版本,
- 在生产过程中出现问题时回滚或回滚版本。
这就是SageMaker模型注册表发挥作用的地方。它允许数据科学家将训练好的模型以版本的形式注册到模型组中。此外,它还可以建立一个带有“待定”、“已批准”和“已拒绝”等状态的“批准流程”。当与CI/CD流水线连接在一起时(我将在“监控与持续改进”文章中讨论此问题[链接]),它可以在模型获得批准时自动部署SageMaker端点。
创建模型组创建一个组,将解决特定问题的模型在逻辑上组织在一起。
注册模型版本首先,让我们收集模型注册的详细信息。在编目过程中,确保尽可能提供尽可能多的信息。包括示例输入、可解释性、偏倚、质量报告、包详细信息和推理详细信息。
在SageMaker Pipelines中,您可以在训练过程中使用RegisterModel或较新的Model Step自动将模型注册到模型注册表中。我们将在“监控与持续改进”中讨论这个问题[链接]。
一旦您获得了必要的信息,您可以将版本注册到之前创建的模型组。
批准模型版本我在同一组中创建了两个其他版本。对于每个版本,您应该能够查看和回顾提供的详细信息。此外,如果您上传质量指标,您可以比较多个版本。正如之前提到的,您可以批准或拒绝模型。
⚠️ 清理
如果您在进行实践练习,请务必清理以避免产生费用。
删除推理端点为了避免产生费用,请务必删除端点和任何其他处理作业。
总结
总之,AWS SageMaker可以加快数据科学家在模型实验、评估和管理方面的进程。此外,诸如SageMaker Debugger和SageMaker Clarify之类的工具可以帮助理解训练过程和模型。
在下一篇文章中,我将探索AWS SageMaker如何帮助模型上线,理解或在生产数据上进行影子学习。