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

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

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

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

将模型部署到 SageMaker 托管服务

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

deploy 方法创建一个可部署模型,配置SageMaker托管服务终端节点,并启动终端节点来托管该模型。有关更多信息,请参阅 中的SageMaker通用 Estimator 的部署类方法Amazon SageMaker Python SDK。要检索 deploy 方法生成的终端节点的名称,请运行以下代码:

xgb_predictor.endpoint_name

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

提示

要了解有关编译和优化模型以部署到 Amazon EC2 实例或 边缘设备的更多信息,请参阅使用 Neo https://docs.amazonaws.cn/sagemaker/latest/dg/neo.html编译和部署模型。

(可选)使用 SageMaker Predictor 重用托管终端节点

将模型部署到终端节点后,您可以通过配对终端节点并在任何其他笔记本中持续进行实时预测来设置新的SageMaker预测器。以下示例代码说明如何使用 SageMaker Predictor 类来使用相同的终端节点设置新的预测器对象。重用用于 的终端节点名称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。 有关更多信息,请参阅 中的 SageMaker PredictorAmazon SageMaker Python SDK

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

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

    # 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_output预测数据,该路径应采用以下格式s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction:。 运行以下命令AWS CLI以下载批量转换作业的输出数据:

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

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