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

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

将模型部署到 Amazon EC2

要获得预测,请EC2使用 Amazon 将您的模型部署到亚马逊 SageMaker。

将模型部署到 SageMaker 托管服务

要EC2使用 Amazon 通过 Amazon SageMaker 托管模型,请创建并运行训练作业通过调用xgb_model估算器的deploy方法部署您训练过的模型。调用该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)-将各种格式( NumPy 数组、列表、文件或缓冲区)的输入数据序列化为CSV格式的字符串。我们之所以使用它,是因为该XGBoost算法接受CSV格式的输入文件。

deploy方法创建可部署模型,配置 SageMaker托管服务端点,然后启动终端节点来托管模型。有关更多信息,请参阅 Amaz on Python SageMaker SageMaker 通用估算器的部署类方法。SDK要检索 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 预测变量,并在任何其他笔记本中持续进行实时预测。以下示例代码演示如何使用 Pred SageMaker ictor 类使用相同的端点设置新的预测变量对象。重新使用 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 Predictor 的行为与原始 xgb_predictor 完全相同。有关更多信息,请参阅 Amaz SageMaker on Python SDK 中的 P SageMaker redictor 类。

(可选)利用批量转换进行预测

您可以运行一次性批量推理作业,使用批处理变换对测试数据集进行预测,而不必在生产环境中 SageMaker 托管终端节点。模型训练完成后,您可以将估计SageMaker器扩展到基于 Trans transformer former 类的对象。批量转换器从指定的 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 存储桶URIs的输入和输出,如下所示:

    # 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. 创建一个 transformer 对象,指定最少数量的参数:instance_countinstance_type 参数用于运行批量转换作业,output_path 参数用于保存预测数据,如下所示:

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

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

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

    这应该在当前工作目录下创建 test.csv.out 文件。您将能够看到根据XGBoost训练作业的逻辑回归预测的浮点值。