第 5 步:将模型部署到 Amazon EC2 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

第 5 步:将模型部署到 Amazon EC2

要获取预测,请使用 Amazon SageMaker 将模型部署到 Amazon EC2。

将模型部署到 SageMaker 托管服务

要使用 Amazon SageMaker 通过 Amazon EC2 托管模型,请部署您在其中训练的模型创建并运行训练 Job通过调用deploy的方法xgb_model估算器。当你打电话给deploy方法中,您必须指定要用于托管终端节点的 EC2 ML 实例的数量和类型。

import sagemaker from sagemaker.serializers import CSVSerializer xgb_predictor=xgb_model.deploy( initial_instance_count=1, instance_type='ml.t2.medium', serializer=CSVSerializer() )
  • initial_instance_count(int) — 要部署模型的实例数。

  • instance_type(str) — 要操作已部署模型的实例类型。

  • serializer(int) — 序列化各种格式的输入数据 (a NumPy 数组、列表、文件或缓冲区)转换为 CSV 格式的字符串。我们使用这个是因为 xgBoost 算法接受 CSV 格式的输入文件。

这些区域有:deploy方法创建一个可部署的模型,配置 SageMaker 托管服务终端节点,并启动该终端节点以托管该模型。有关更多信息,请参阅 。SageMaker 通用估计器的部署类方法中的亚马逊 SageMaker Python 开发工具包. 检索由deploy方法中,运行以下代码:

xgb_predictor.endpoint_name

此选项应返回终端节点名称xgb_predictor. 终端节点名称的格式为"sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS". 此终端节点在 ML 实例中保持活动状态,除非稍后关闭它,否则您可以随时进行即时预测。复制此端点名称并将其保存以重复使用并在其他地方进行实时预测 SageMaker Studio 或 SageMaker 笔记本实例。

提示

要了解有关编译和优化模型以便部署到 Amazon EC2 实例或边缘设备的更多信息,请参阅使用 Neo 编译并部署模型.

(可选)使用 SageMaker 重用托管终端节点的预测器

在将模型部署到终端节点后,您可以设置新的模型, SageMaker 通过对终端节点进行预测,并在任何其他笔记本电脑中持续进行实时预测。以下示例代码演示如何使用 SageMaker 预测变量类用于使用相同的终端节点设置新的预测变量对象。重复使用您用于xgb_predictor.

import sagemaker xgb_predictor_reuse=sagemaker.predictor.Predictor( endpoint_name="sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS", sagemaker_session=sagemaker.Session(), serializer=sagemaker.serializers.CSVSerializer() )

这些区域有:xgb_predictor_reuse预测变量的行为与原始指标完全相同xgb_predictor. 有关更多信息,请参阅 。SageMaker 预测器中的类亚马逊 SageMaker Python 开发工具包.

(可选)使用 Batch 变换进行预测

您可以运行一次性批量推理作业,而不是在生产环境中托管终端节点,使用 SageMaker 批量转换。模型训练完成后,您可以将估计器扩展到transformer对象,它基于SageMaker 变压器类。批处理变换器从指定 S3 存储桶读取输入数据并进行预测。

运行批量转换任务

  1. 运行以下代码将测试数据集的功能列转换为 CSV 文件并上传到 S3 存储桶:

    X_test.to_csv('test.csv', index=False, header=False) boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'test/test.csv')).upload_file('test.csv')
  2. 为批处理转换作业指定输入和输出的 S3 存储桶 URI,如下所示:

    # The location of the test dataset batch_input = 's3://{}/{}/test'.format(bucket, prefix) # The location to store the results of the batch transform job batch_output = 's3://{}/{}/batch-prediction'.format(bucket, prefix)
  3. 创建一个变压器对象,指定最小数量的参数:instance_countinstance_type运行批处理转换作业的参数,以及output_path按如下所示保存预测数据:

    transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
  4. 通过执行transform()的方法transformer对象如下所示:

    transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
  5. 当批处理转换作业完成后, SageMaker 创建test.csv.out预测数据保存在batch_outputpath,应采用以下格式:s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction. 运行以下命令Amazon CLI要下载批处理转换作业的输出数据:

    ! aws s3 cp {batch_output} ./ --recursive

    这应该创建test.csv.out文件位于当前工作目录下。你将能够看到基于 xgBoost 训练作业的逻辑回归预测的浮点值。