本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
第 4 步:训练模型
这些区域有:亚马逊 SageMaker Python 开发工具包
选择训练算法
要为数据集选择正确的算法,通常需要评估不同的模型,以找到最适合数据的模型。为简单起见,SageMakerXGBoost 算法在本教程中使用内置算法,而无需预先评估模型。
如果您想 SageMaker 要为您的表格数据集找到合适的模型,请使用亚马逊 SageMaker 自动驾驶机器学习解决方案。有关更多信息,请参阅 使用亚马逊自动开发模型 SageMaker Autopilot。
创建并运行训练 Job
在你找出要使用哪种模型之后,开始构造 SageMaker 用于训练的估计器。本教程使用 xGBoost 内置算法进行 SageMaker 通用估计器。
运行模型训练作业
-
导入亚马逊 SageMaker Python 开发工具包
然后首先从当前的基本信息中检索 SageMaker 会话。 import sagemaker region = sagemaker.Session().boto_region_name print("Amazon Region: {}".format(region)) role = sagemaker.get_execution_role() print("RoleArn: {}".format(role))这将返回以下信息:
-
region— 最新的AmazonSageMaker 笔记本实例运行的区域。 -
role— 笔记本实例所使用的 IAM 角色。
注意 检查 SageMaker 通过运行 Python SDK 版本
sagemaker.__version__. 本教程的基础是sagemaker>=2.20. 如果 SDK 已过时,请运行以下命令安装最新版本:! pip install -qU sagemaker如果你在退出时运行此安装 SageMaker Studio 或笔记本实例,您需要手动刷新内核才能完成应用版本更新。
-
-
使用
sagemaker.estimator.Estimator类。在以下示例代码中,xgBoost 估计器被命名为xgb_model.from sagemaker.debugger import Rule, rule_configs from sagemaker.session import TrainingInput s3_output_location='s3://{}/{}/{}'.format(bucket, prefix, 'xgboost_model') container=sagemaker.image_uris.retrieve("xgboost", region, "1.2-1") print(container) xgb_model=sagemaker.estimator.Estimator( image_uri=container, role=role, instance_count=1, instance_type='ml.m4.xlarge', volume_size=5, output_path=s3_output_location, sagemaker_session=sagemaker.Session(), rules=[Rule.sagemaker(rule_configs.create_xgboost_report())] )构造 SageMaker 估计器中,指定以下参数:
-
image_uri— 指定训练容器映像 URI。在此示例中, SageMaker xgBoost 训练容器 URI 是使用sagemaker.image_uris.retrieve. -
role— 该Amazon Identity and Access Management(IAM) 角色 SageMaker 用于代表您执行任务(例如,读取训练结果,从 Amazon S3 调用模型项目以及将训练结果写入到 Amazon S3)。 -
instance_count和instance_type— 要用于模型训练的 Amazon EC2 ML 计算实例的类型和数量。在本培训练习中,您将使用单一的ml.m4.xlarge实例,它具有 4 个 CPU、16 GB 内存、一个亚马逊 Elastic Block Store (Amazon EBS) 存储和高网络性能。有关 EC2 计算实例类型的更多信息,请参阅Amazon EC2 实例类型. 有关计费的更多信息,请参阅亚马逊 SageMaker 定价 . -
volume_size— 要附加到训练实例的 EBS 存储卷的大小(以 GB 为单位)。如果您使用,该数据必须足够大以存储训练数据File模式 ()File默认情况下模式打开)。 -
output_pathSageMaker 存储模型构件和训练结果的 S3 存储桶的路径。 -
sagemaker_session— 管理与交互的会话对象 SageMaker API 操作和其他Amazon培训作业使用的服务。 -
rules— 指定一个列表 SageMaker 调试程序内置规则。在此示例中,create_xgboost_report()规则创建一个 xgBoost 报告,提供有关训练进度和结果的见解。有关更多信息,请参阅 SageMaker 调试器 xgBoost 培训报告。
提示 如果你想运行大型深度学习模型的分布式训练,例如卷积神经网络 (CNN) 和自然语言处理 (NLP) 模型,请使用 SageMaker 分发用于数据并行性或模型并行性。有关更多信息,请参阅 Amazon SageMaker 分布式培训库。
-
-
通过调用 XGBoost 算法的超参数设置
set_hyperparameters估计程序的方法。有关 XGBoost 超参数的完整列表,请参阅XGBoost 超参数.xgb_model.set_hyperparameters( max_depth = 5, eta = 0.2, gamma = 4, min_child_weight = 6, subsample = 0.7, objective = "binary:logistic", num_round = 1000 )提示 你也可以使用 SageMaker 超参数优化功能。有关更多信息,请参阅 使用 SageMaker 执行自动模型优化。
-
使用
TrainingInput类来配置用于训练的数据输入流。以下示例代码说明了如何配置TrainingInput要使用您上传到 Amazon S3 的训练和验证数据集的对象将数据集拆分为训练、验证和测试数据集部分。from sagemaker.session import TrainingInput train_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/train.csv"), content_type="csv" ) validation_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv"), content_type="csv" ) -
要启动模型训练,请调用估算器的
fit方法与训练和验证数据集一起使用。设置wait=True,fit方法显示进度日志,并等到训练完成。xgb_model.fit({"train": train_input, "validation": validation_input}, wait=True)有关模型训练的更多信息,请参阅使用 Amazon SageMaker 训练模型。此教程培训作业最多可能需要 10 分钟。
培训工作完成后,您可以下载 xgBoost 培训报告和由 SageMaker 调试程序。XGBoost 训练报告为您提供了有关训练进度和结果的见解,例如与迭代相关的损失函数、功能重要性、混淆矩阵、准确度曲线以及其他训练的统计结果。例如,您可以从 xgBoost 培训报告中找到以下损失曲线,该报告清楚地表明存在过度拟合的问题。
运行以下代码以指定生成调试器培训报告的 S3 存储桶 URI,并检查报告是否存在。
rule_output_path = xgb_model.output_path + "/" + xgb_model.latest_training_job.job_name + "/rule-output" ! aws s3 ls {rule_output_path} --recursive将调试器 xgBoost 训练和性能分析报告下载到当前工作空间:
! aws s3 cp {rule_output_path} ./ --recursive运行以下 iPython 脚本以获取 xgBoost 培训报告的文件链接:
from IPython.display import FileLink, FileLinks display("Click link below to view the XGBoost Training report", FileLink("CreateXgboostReport/xgboost_report.html"))以下 iPython 脚本返回调试器性能分析报告的文件链接,该链接显示了 EC2 实例资源利用率、系统瓶颈检测结果和 python 操作分析结果的摘要和详细信息:
profiler_report_name = [rule["RuleConfigurationName"] for rule in xgb_model.latest_training_job.rule_job_summary() if "Profiler" in rule["RuleConfigurationName"]][0] profiler_report_name display("Click link below to view the profiler report", FileLink(profiler_report_name+"/profiler-output/profiler-report.html"))提示 如果 HTML 报告没有在 JupyterLab 查看,您必须选择信任 HTML在报告的顶部。
要确定训练问题,例如过度拟合、消失渐变以及阻止模型收敛的其他问题,请使用 SageMaker 在设计和训练机器学习模型的同时,调试器并采取自动操作。有关更多信息,请参阅 亚马逊SageMakerDebugger (调试程序)。要查找模型参数的完整分析,请参阅亚马逊的可解释性 SageMaker Debugger (调试程序)
例笔记本。
您现在有一个训练有素的 XGBoost 模型。 SageMaker 将模型项目存储在 S3 存储桶中。要查找模型对象的位置,请运行以下代码以打印xgb_model估算器:
xgb_model.model_data
要衡量机器学习生命周期的每个阶段(数据收集、模型训练和调整以及对部署用于预测的机器学习模型的监控)可能出现的偏见,请使用 SageMaker 澄清。有关更多信息,请参阅 亚马逊 SageMaker 澄清模型的可解释性。对于 end-to-end 例如,请参阅公平性和可解释性 SageMaker 澄清