本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:建置遠端推論模型
下列教學課程將介紹如何建立先前已在 Amazon Redshift 外部的 Amazon SageMaker AI 中訓練和部署的隨機剪切森林模型的步驟。隨機分割森林演算法會偵測資料集中的異常資料點。使用遠端推論建立模型可讓您將隨機切割森林 SageMaker AI 模型帶入 Amazon Redshift。然後,在 Amazon Redshift 中,您可以使用 SQL 在遠端 SageMaker AI 端點上執行預測。
您可以使用 CREATE MODEL 命令從 Amazon SageMaker AI 端點匯入機器學習模型,並準備 Amazon Redshift 預測函數。使用 CREATE MODEL 操作時,您會提供 SageMaker AI 機器學習模型的端點名稱。
在本教學課程中,您會使用 SageMaker AI 模型端點建立 Amazon Redshift 機器學習模型。一旦您的機器學習模型準備就緒,您就可以使用它在 Amazon Redshift 中執行預測。首先,您會在 Amazon SageMaker AI 中訓練和建立端點,然後取得端點名稱。然後,您可以使用 CREATE MODEL 命令建立具有 Amazon Redshift ML 的模型。最後,您可以使用 CREATE MODEL 指令產生的預測函數對模型執行預測。
使用案例範例
您可以使用隨機分割森林模型和遠端推論來偵測其他資料集中的異常狀況,例如預測電子商務交易的快速增加或減少。您還可以預測天氣或地震活動的顯著變化。
工作
-
必要條件
-
步驟 1:部署 Amazon SageMaker AI 模型
-
步驟 2:取得 SageMaker AI 模型端點
-
步驟 3:將資料從 Amazon S3 載入到 Amazon Redshift
-
步驟 4:建立 Amazon Redshift ML 的模型
-
步驟 5:執行模型的預測
必要條件
若要完成本教學課程,您需要以下先決條件:
-
您已完成 Amazon Redshift ML 的管理設定。
-
您必須訓練、部署 SageMaker AI 模型和端點,並取得 SageMaker AI 端點的名稱。使用此 AWS CloudFormation 範本
自動佈建您 AWS 帳戶中的所有 SageMaker AI 資源。
步驟 1:部署 Amazon SageMaker AI 模型
-
若要部署模型,請前往 Amazon SageMaker AI 主控台,在導覽窗格中的筆記本下選擇筆記本執行個體。
-
針對由 CloudFormation 範本建立的 Jupyter 筆記本選擇開啟 Jupyter。
-
選擇
bring-your-own-model-remote-inference.ipynb
。 -
將以下幾行取代為 Amazon S3 儲存貯體和字首,設定參數來將訓練輸入和輸出儲存在 Amazon S3 中。
data_location=f"s3://
{bucket}/{prefix}/
", output_path=f"s3://{bucket}/{prefix}/
output", -
選擇快轉按鈕以執行所有儲存格。
步驟 2:取得 SageMaker AI 模型端點
在 Amazon SageMaker AI 主控台的導覽窗格中的推論下,選擇端點並尋找您的模型名稱。在 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 AI 模型端點在 Amazon Redshift ML 中建立模型。
將 取代為您自己的 SageMaker AI 端點名稱。randomcutforest-xxxxxxxxx
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 AI 端點和函數名稱。
+--------------------------+-----------------------------------------+ | 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 AI 隨機切割森林演算法旨在偵測資料集內的異常資料點。在此範例中,您的模型旨在偵測由於重要事件而導致的計程車乘車尖峰。您可以透過為每個資料點產生異常分數,使用模型來預測異常事件。
使用下列查詢來計算整個計程車資料集的異常分數。請注意,您會參考上一個步驟中在 CREATE MODEL 陳述式中使用的函數。
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 的相關資訊,請參閱下列文件:
如需機器學習的相關資訊,請參閱下列文件: