教程:构建远程推理模型 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

教程:构建远程推理模型

下面的教程介绍有关如何创建随机森林砍伐模型的步骤,该模型以前在 Amazon Redshift 之外的 Amazon SageMaker 中进行过训练和部署。随机森林砍伐算法检测数据集中的异常数据点。通过创建远程推理模型,您可以将随机森林砍伐 SageMaker 模型引入到 Amazon Redshift 中。然后,在 Amazon Redshift 中,您可以使用 SQL 对远程 SageMaker 端点执行预测。

您可以使用 CREATE MODEL 命令从 Amazon SageMaker 端点导入机器学习模型,并准备 Amazon Redshift 预测函数。使用 CREATE MODEL 操作时,您需要提供 SageMaker 机器学习模型的端点名称。

在本教程中,您将使用 SageMaker 模型端点创建 Amazon Redshift 机器学习模型。机器学习模型准备就绪后,您可以使用它在 Amazon Redshift 中执行预测。首先,在 Amazon SageMaker 中训练并创建端点,然后获得端点名称。然后,您可以使用 CREATE MODEL 命令通过 Amazon Redshift ML 创建模型。最后,使用 CREATE MODEL 命令生成的预测函数对模型执行预测。

使用案例示例

您可以使用随机森林砍伐模型和远程推理来检测其他数据集中的异常,例如预测电子商务交易的快速增长或减少。还可以预测天气或地震活动的重大变化。

任务

  • 先决条件

  • 步骤 1:部署 Amazon SageMaker 模型

  • 步骤 2:获取 SageMaker 模型端点

  • 步骤 3:将数据从 Amazon S3 加载到 Amazon Redshift

  • 步骤 4:使用 Amazon Redshift ML 创建模型

  • 步骤 5:使用模型执行预测

先决条件

要完成本教程,您需要满足以下先决条件:

步骤 1:部署 Amazon SageMaker 模型

  1. 要部署模型,请转到 Amazon SageMaker 控制台,在导航窗格中选择 Notebook(笔记本)下的 Notebook instances(笔记本实例)。

  2. 对于 CloudFormation 模板创建的 Jupyter 笔记本,选择 Open Jupyter(打开 Jupyter)。

  3. 选择bring-your-own-model-remote-inference.ipynb

  4. 通过将以下各行替换为您的 Amazon S3 桶和前缀,设置参数以在 Amazon S3 中存储训练输入和输出。

    data_location=f"s3://{bucket}/{prefix}/", output_path=f"s3://{bucket}/{prefix}/output",
  5. 选择 fast-forward(快进)按钮以运行所有单元格。

步骤 2:获取 SageMaker 模型端点

在 Amazon SageMaker 控制台上,在导航窗格中的 Inference(推理)下方,选择 Endpoints(端点)并找到您的模型名称。在 Amazon Redshift 中创建远程推理模型时,必须复制模型的端点名称。

步骤 3:将数据从 Amazon S3 加载到 Amazon Redshift

使用 Amazon Redshift 查询编辑器 v2 在 Amazon Redshift 中运行以下 SQL 命令。这些命令会剔除 rcf_taxi_data 表(如果存在),创建一个同名的表,然后将示例数据集加载到该表中。

DROP TABLE IF EXISTS public.rcf_taxi_data CASCADE; CREATE TABLE public.rcf_taxi_data (ride_timestamp timestamp, nbr_passengers int); COPY public.rcf_taxi_data FROM 's3://sagemaker-sample-files/datasets/tabular/anomaly_benchmark_taxi/NAB_nyc_taxi.csv' IAM_ROLE default IGNOREHEADER 1 FORMAT AS CSV;

步骤 4:使用 Amazon Redshift ML 创建模型

运行以下查询,使用您在上一步中获得的 SageMaker 模型端点在 Amazon Redshift ML 中创建模型。将 randomcutforest-xxxxxxxxx 替换为您自己的 SageMaker 端点的名称。

CREATE MODEL public.remote_random_cut_forest FUNCTION remote_fn_rcf(int) RETURNS decimal(10, 6) SAGEMAKER '<randomcutforest-xxxxxxxxx>' IAM_ROLE default;

检查模型状态(可选)

您可以使用 SHOW MODEL 命令来了解模型何时准备就绪。

要检查模型状态,请使用以下 SHOW MODEL 操作。

SHOW MODEL public.remote_random_cut_forest

输出显示 SageMaker 端点和函数名称。

+--------------------------+-----------------------------------------+ | Model Name | remote_random_cut_forest | +--------------------------+-----------------------------------------+ | Schema Name | public | | Owner | awsuser | | Creation Time | Wed, 15.06.2022 17:58:21 | | Model State | READY | | | | | PARAMETERS: | | | Endpoint | <randomcutforest-xxxxxxxxx> | | Function Name | remote_fn_rcf | | Inference Type | Remote | | Function Parameter Types | int4 | | IAM Role | default-aws-iam-role | +--------------------------+-----------------------------------------+

步骤 5:使用模型执行预测

Amazon SageMaker 随机森林砍伐算法设计为检测数据集中的异常数据点。在此示例中,您的模型设计为检测由于重要事件而导致的出租车乘坐高峰。您可以使用该模型,通过为每个数据点生成异常分数来预测异常事件。

使用以下查询计算整个出租车数据集的异常分数。请注意,您引用您上一步在 CREATE MEL 语句中使用的函数。

SELECT ride_timestamp, nbr_passengers, public.remote_fn_rcf(nbr_passengers) AS score FROM public.rcf_taxi_data;

检查高低异常(可选)

运行以下查询,以查找分数大于平均分数三个标准差的任何数据点。

WITH score_cutoff AS ( SELECT STDDEV(public.remote_fn_rcf(nbr_passengers)) AS std, AVG(public.remote_fn_rcf(nbr_passengers)) AS mean, (mean + 3 * std) AS score_cutoff_value FROM public.rcf_taxi_data ) SELECT ride_timestamp, nbr_passengers, public.remote_fn_rcf(nbr_passengers) AS score FROM public.rcf_taxi_data WHERE score > ( SELECT score_cutoff_value FROM score_cutoff ) ORDER BY 2 DESC;

运行以下查询,以查找分数大于平均分数三个标准差的任何数据点。

WITH score_cutoff AS ( SELECT STDDEV(public.remote_fn_rcf(nbr_passengers)) AS std, AVG(public.remote_fn_rcf(nbr_passengers)) AS mean, (mean - 3 * std) AS score_cutoff_value FROM public.rcf_taxi_data ) SELECT ride_timestamp, nbr_passengers, public.remote_fn_rcf(nbr_passengers) AS score FROM public.rcf_taxi_data WHERE score < ( SELECT score_cutoff_value FROM score_cutoff ) ORDER BY 2 DESC;

有关 Amazon Redshift ML 的更多信息,请参阅以下文档:

有关机器学习的更多信息,请参阅以下文档: