建立模型 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立模型

CREATE MODEL 語句在用於創建模型的參數數量方面提供了靈活性。根據需要或問題類型,用户可以選擇他們首選的預處理器、算法、問題類型或超參數。

使用 CREATE MODEL 語句之前,請先滿足使用 Amazon Redshift ML 的集羣設置。以下是先決條件的高階摘要。

  • 建立 Amazon Redshift 叢集,並使用AWS管理主控台或AWS命令列界面 (AWSCLI)。

  • 將附加至AWS創建集羣時的 Identity and Access Management (IAM) 策略。

  • 要允許 Amazon Redshift 和 SageMaker 以擔任與其他服務交互的角色,請將相應的信任策略添加到 IAM 角色。

有關 IAM 角色、信任策略和其他先決條件的詳細信息,請參閲使用 Amazon Redshift ML 的集羣設置

下面,您可以找到 CREATE MODEL 語句的不同用例。

簡易建立模型

下面概述了創建模型語法的基本選項。

必要的權限

以下是創建模型所需的權限:

  • 超級使用者

  • 具有「創建模型」權限的用户

  • 具有授予創建模型權限的角色

簡單創建模型語法

CREATE MODEL model_name FROM { table_name | ( select_query ) } TARGET column_name FUNCTION prediction_function_name IAM_ROLE { default | ‘arn:aws:iam::<AWS 帳戶-id>:role/<role-name>’ } SETTINGS ( S3_BUCKET 'bucket', [ MAX_CELLS integer ] )

簡單創建模型參數

型號名稱

模型的名稱。結構描述中的模型名稱必須是唯一的。

來自 {table_name| (選擇查詢)}

表名或指定訓練數據的查詢。它們可以是系統中的現有表,也可以是用括號括起來的 Amazon RedShift 兼容的 SELECT 查詢,即 ()。查詢結果中必須至少有兩列。

目標column_name

成為預測目標的欄位的名稱。此列必須存在於 FROM 子句中。

功能預測函數名稱

一個值,它指定由 CREATE 模型生成並用於使用此模型進行預測的 Amazon Redshift 機器學習函數的名稱。函數創建在與模型對象相同的架構中,並且可以重載。

Amazon Redshift 機器學習支持模型,例如用於迴歸和分類的 Xtreme 梯度增強樹 (XGBoost) 模型。

IAM_ROLE{ 預設 | 'arn: aws: aws: iam።<AWS 帳戶-id >: 角色/<role-name>'

使用默認關鍵字讓 Amazon Redshift 使用 IAM 角色,該角色設置為默認角色,並在 CREAT MODEL 命令運行時與集羣關聯。

為叢集進行身份驗證和授權時所使用之 IAM 角色使用之 Amazon Resource Name (ARN)。至少,IAM 角色必須具有在 Amazon S3 儲存貯體上執行 LIST 操作,該儲存貯體用來卸載培訓資料和轉移 Amazon SageMaker 成品。以下顯示單一 ARN 的 IAM_ROLE 參數字串語法。

IAM_ROLE 'arn:aws:iam::aws-account-id:role/role-name'
S3_ 存儲桶'儲存儲體'

您之前建立的 Amazon S3 儲存貯體的名稱,其中用來在 Amazon Redshift 和 SSageMaker 之間共享訓練資料和工件。在卸載培訓數據之前,Amazon Redshift 會在此存儲桶中創建一個子文件夾。培訓完成後,Amazon Redshift 會刪除創建的子文件夾及其內容。

最大單元格整數

從 FROM 子句導出的最大單元格數。預設值為 1,000,000。

單元格數是訓練數據(由 FROM 子句表或查詢生成)中行數乘以列數的乘積。如果訓練數據中的像元數大於 max_CELLS 參數指定的數量,CREATE MODEL 會降低 FROM 子句訓練數據的樣本,以減小 MAX_CELLS 下面的訓練集的大小。允許更大的訓練數據集可產生更高的精度,但也可能意味着模型需要更長的時間來訓練並且成本更高。

有關使用 Amazon Redshift 的成本的信息,請參閲使用 Amazon Redshift ML 的成本

有關各種單元格號碼和免費試用詳細信息相關的成本的詳細信息,請參閲Amazon Redshift 定價

使用用户指導創建模型

您可以在下面找到 CREATE MODEL 選項的説明,以及簡易建立模型

默認情況下,CREATE MODEL 會搜索特定數據集的預處理和模型的最佳組合。您可能需要對模型進行額外的控制或引入其他領域知識(例如問題類型或目標)。在客户流失情況下,如果結果「客户不活躍」很少,則 F1 目標通常優先於準確性目標。由於高精度模型可能會始終預測「客户處於活動狀態」,因此可能會導致高精度,但業務價值很小。有關 F1 目標的信息,請參閲自動噴射中的亞馬遜 SageMaker API 參考

然後,CREATE MODEL 會遵循您對指定方面的建議,例如目標。同時,CREATE MODEL 會自動發現最佳的預處理器和最佳超參數。

使用用户指導語法創建模型

CREATE MODEL 在您可以指定的方面以及 Amazon Redshift 自動發現的方面提供了更大的靈活性。

CREATE MODEL model_name FROM { table_name | ( select_statement ) } TARGET column_name FUNCTION function_name IAM_ROLE { default | ‘arn:aws:iam::<AWS 帳戶-id>:role/<role-name>’ } [ MODEL_TYPE { XGBOOST | MLP | LINEAR_LEARNER} ] [ PROBLEM_TYPE ( REGRESSION | BINARY_CLASSIFICATION | MULTICLASS_CLASSIFICATION ) ] [ OBJECTIVE ( 'MSE' | 'Accuracy' | 'F1' | 'F1Macro' | 'AUC') ] SETTINGS ( S3_BUCKET 'bucket', | S3_GARBAGE_COLLECT { ON | OFF }, | KMS_KEY_ID 'kms_key_id', | MAX_CELLS integer, | MAX_RUNTIME integer (, ...) )

使用用户指導參數創建模型

模型類型 {XGBOOST | 銷售 | 線性學習器}

(選用) 指定模型類型。您可以指定是否要訓練特定模型類型的模型,例如 XGBoost、多層感知器 (MLP) 或線性學習器,這些都是 Amazon SageMaker Autopilot 支持。如果未指定參數,則在訓練期間將搜索所有支持的模型類型以獲得最佳模型。

問題類型(迴歸 | 二進制分類 | 多類分類)

(選擇性)指定問題類型。如果您知道問題類型,您可以將 Amazon Redshift 限製為僅搜索該特定型號類型的最佳型號。如果未指定此參數,系統會根據您的資料在訓練期間發現問題類型。

目標(「MSE」|「精度」|「F1」|「F1 宏」|「AUC」)

(可選)指定用於衡量機器學習系統預測質量的目標度量的名稱。此指標在培訓期間進行了優化,以提供數據中的模型參數值的最佳估計值。如果未明確指定度量,則默認行為是自動使用 MSE:對於迴歸,F1:用於二進制分類,「精度:對於多類分類」。如需目標的詳細資訊,請參自動噴射中的亞馬遜 SageMaker API 參考

最大單元格整數

(可選)指定訓練資料中的單元格數量。此值是記錄數(在培訓查詢或表中)乘以列數的乘積。預設值為 1,000,000。

最大運行時整數

(可選)指定訓練的最大時間量。根據數據集的大小,培訓作業通常會更快完成。此選項會指定訓練需要的最大時間量。默認值為 5,400(90 分鐘)。

S3_ 垃圾收集 {打開 | 關閉}

(可選)指定 Amazon Redshift 是否對用於訓練模型和模型的生成數據集執行垃圾回收。如果設置為 OFF,則用於訓練模型和模型的生成數據集將保留在 Amazon S3 中,並且可用於其他用途。如果設置為開,則 Amazon Redshift 會在培訓完成後刪除 Amazon S3 中的項目。預設值為 ON (ON)。

KMS_KMS_KMS_KM_ID '

(可選)指定 Amazon Redshift 是否將服務器端加密與AWS KMS密鑰來保護靜態資料。傳輸中的資料會使用 Secure Sockets Layer (SSL) 保護。

預處理器「字符串」

(可選)將預處理器的某些組合指定為某些列集。格式是列集的列表,以及要應用於每組列的適當轉換。Amazon Redshift 將特定變壓器列表中的所有變壓器應用於相應的列集中的所有列。例如,要應用 OneHotEncoder 添加到列 t1 和 t2,請使用以下示例命令。

CREATE MODEL customer_churn FROM customer_data TARGET 'Churn' FUNCTION predict_churn IAM_ROLE { default | ‘arn:aws:iam::<AWS 帳戶-id>:role/<role-name>’ } PROBLEM_TYPE BINARY_CLASSIFICATION OBJECTIVE 'F1' PREPROCESSORS '[ ... {"ColumnSet": [ "t1", "t2" ], "Transformers": [ "OneHotEncoder", "Imputer" ] }, {"ColumnSet": [ "t3" ], "Transformers": [ "OneHotEncoder" ] }, {"ColumnSet": [ "temp" ], "Transformers": [ "Imputer", "NumericPassthrough" ] } ]' SETTINGS ( S3_BUCKET 'bucket' )

Amazon Redshift 支持以下變壓器:

  • OnehotenCoder — 通常用於將離散值編碼為具有一個非零值的二進制向量。該變壓器適用於許多機器學習模型。

  • 序號編碼器 — 將離散值編碼為一個整數。該變壓器適用於某些機器學習模型,如 MLP 和線性學習器。

  • 數字直通 — 將輸入按原樣傳遞到模型中。

  • 投入器 — 填充缺失值而不是數字 (NaN) 值。

  • 不含指標 — 填充缺失值和 NaN 值。此變壓器還創建一個指示器,指示是否有任何值缺失和填充。

  • 規範化器 — 規範化值,這可以提高許多機器學習算法的性能。

  • DateTimeVectorizer — 創建一個矢量嵌入,表示可在機器學習模型中使用的日期時間數據類型列。

  • PCA — 將數據投影到較低的維度空間中,以減少要素數量,同時保留儘可能多的信息。

  • 標準縮放器 — 通過刪除均值並縮放到單位方差來標準化要素。

  • MinMax — 通過將每個要素縮放到給定範圍來轉換要素。

Amazon Redshift ML 存儲訓練有素的變壓器,並將其作為預測查詢的一部分自動應用。您不需要從模型中生成預測時,您不需要指定。

創建具有自動關閉功能的 XGBoost 模型

自動關閉創建模型具有與默認創建模型不同的目標。

作為已經知道您想要的模型類型和在訓練這些模型時使用的超參數的高級用户,您可以將 CREATE MODEL 與自動關閉關閉預處理器和超參數的 CREATE MODEL 自動發現。若要這樣做,您可以明確指定模型類型。當「自動」設置為「關」時,XGBoost 是當前唯一支持的型號類型。您可以指定超參數。Amazon Redshift 對您指定的任何超參數使用默認值。

使用自動關閉語法創建 XGBoost 模型

CREATE MODEL model_name FROM { table_name | (select_statement ) } TARGET column_name FUNCTION function_name IAM_ROLE { default | ‘arn:aws:iam::<AWS 帳戶-id>:role/<role-name>’ } AUTO OFF MODEL_TYPE XGBOOST OBJECTIVE { 'reg:squarederror' | 'reg:squaredlogerror' | 'reg:logistic' | 'reg:pseudohubererror' | 'reg:tweedie' | 'binary:logistic' | 'binary:hinge' | 'multi:softmax' | 'rank:pairwise' | 'rank:ndcg' } HYPERPARAMETERS DEFAULT EXCEPT ( NUM_ROUND '10', ETA '0.2', NUM_CLASS '10', (, ...) ) PREPROCESSORS 'none' SETTINGS ( S3_BUCKET 'bucket', | S3_GARBAGE_COLLECT { ON | OFF }, | KMS_KEY_ID 'kms_key_id', | MAX_CELLS integer, | MAX_RUNTIME integer (, ...) )

使用自動關閉參數創建 XGBoost 模型

自動關閉

關閉 CREATE MODEL 自動發現預處理器、算法和超參數選擇。

模型類型

指定使用 XGBOOST 訓練模型。

目標標準

指定算法識別的目標。Amazon Redshift 支持 REG:正方形,REG:物流,REG:邏輯,REG:偽交換,reg:鑷子,二進制:物流,二進制:鉸鏈,多:軟最大。如需這些目標的詳細資訊,請參學習任務參數在 XGBoost 文檔中。

超參數 {默認值 | 默認值除外 (鍵 '值' (,..))}

指定默認的 xGBoost 參數是使用還是由用户指定的值覆蓋。這些值必須用單引號括住。以下是 xGBoost 參數的示例及其默認值。

參數名稱 參數值 預設值 備註

數字類

整數

多類分類是必需的。

N/A

數字圓角

整數

100

N/A

樹方法

字串 Auto N/A

最大深度

整數 6 [0, 10]
最小兒童體重 Float 1 MinValue:0、MaxValue:120
子樣本 Float 1 MinValue:0.5、MaxValue:1
伽瑪 Float 0 MinValue:0、MaxValue:5
alpha Float 0 MinValue:0、MaxValue:1000
埃塔 Float 0.3 MinValue:0.1、MaxValue:0.5
多功能樣本 Float 1 MinValue:0.1、MaxValue:1
按節點共用樣本 Float 1 MinValue:0.1、MaxValue:1
可色樣本 Float 1 MinValue:0.5、MaxValue:1
lambda Float 1 MinValue:0、MaxValue:1000
最大三角洲步驟 整數 0 [0, 10]

下面的示例為 XGBoost 準備數據。

DROP TABLE IF EXISTS abalone_xgb; CREATE TABLE abalone_xgb ( length_val float, diameter float, height float, whole_weight float, shucked_weight float, viscera_weight float, shell_weight float, rings int, record_number int); COPY abalone_xgb FROM 's3://redshift-downloads/redshift-ml/abalone_xg/' REGION 'us-east-1' IAM_ROLE 'arn:aws:iam::467896856988:role/Redshift-ML' IGNOREHEADER 1 CSV;

以下示例創建具有指定高級選項(如 MODEL_TYPE、目標和預處理器)的 XGBoost 模型。

DROP MODEL abalone_xgboost_multi_predict_age; CREATE MODEL abalone_xgboost_multi_predict_age FROM ( SELECT length_val, diameter, height, whole_weight, shucked_weight, viscera_weight, shell_weight, rings FROM abalone_xgb WHERE record_number < 2500 ) TARGET rings FUNCTION ml_fn_abalone_xgboost_multi_predict_age IAM_ROLE 'arn:aws:iam::XXXXXXXXXXXX:role/Redshift-ML' AUTO OFF MODEL_TYPE XGBOOST OBJECTIVE 'multi:softmax' PREPROCESSORS 'none' HYPERPARAMETERS DEFAULT EXCEPT (NUM_ROUND '100', NUM_CLASS '30') SETTINGS (S3_BUCKET 'your-bucket');

以下示例使用推斷查詢來預測記錄編號大於 200 的 fish 的年齡。它使用從上述命令創建的多重預測函數。

select ml_fn_abalone_xgboost_multi_predict_age(length_val, diameter, height, whole_weight, shucked_weight, viscera_weight, shell_weight)+1.5 as age from abalone_xgb where record_number > 2500;

自帶自己的型號 (BYOM)

Amazon Redshift ML 支持使用自己的模型 (BYOM) 進行本地或遠程推理。

下面總結了 BYOM 的創建模型語法的選項。您可以使用 Amazon Redshift 之外培訓的模型 SageMaker 以便在 Amazon Redshift 中進行本地數據庫內推斷。Amazon Redshift ML 支持在本地或遠程推理中使用 BYOM。

創建本地推理的模型語法

下面介紹了用於本地推理的創建模型語法。

CREATE MODEL model_name FROM ('job_name' | 's3_path' ) FUNCTION function_name ( data_type [, ...] ) RETURNS data_type IAM_ROLE { default | ‘arn:aws:iam::<AWS 帳戶-id>:role/<role-name>’ } [ SETTINGS ( S3_BUCKET 'bucket', | --required KMS_KEY_ID 'kms_string') --optional ];

Amazon Redshift 目前僅支持針對 BYOM 的預先訓練的 XGBoost、MLP 和線性學習者模型。您可以導入 SageMaker 自動駕駛儀和模型直接在亞馬遜培訓 SageMaker 用於使用此路徑進行本地推斷。

創建局部推理的模型參數

型號名稱

模型的名稱。結構描述中的模型名稱必須是唯一的。

來自 ('工作名稱'|'S3_ 路徑')

所以此作業名稱使用卓越亞馬遜 SageMaker 作業名稱作為輸入。作業名稱可以是亞馬遜 SageMaker 培訓職位名稱或亞馬遜 SageMaker Autopilot 任務名稱。作業必須在相同AWS擁有 Amazon Redshift 叢集的帳户。

所以此'S3_ 路徑'指定創建模型時要使用的 .tar.gz 模型偽影文件的 S3 位置。

功能function_name(data_type[,...])

要創建的函數的名稱和輸入參數的數據類型。您可提供架構名稱。

RETURNS data_type

函數所傳回值的資料類型。

IAM_ROLE{ 預設 | 'arn: aws: aws: iam።<AWS 帳戶-id >: 角色/<role-name>'

使用默認關鍵字讓 Amazon Redshift 使用設置為默認角色並在運行 CREATE MODEL 命令時與集羣關聯的 IAM 角色。

為叢集進行身份驗證和授權時所使用之 IAM 角色使用之 Amazon Resource Name (ARN)。

以下顯示單一 ARN 的 IAM_ROLE 參數字串語法。

IAM_ROLE 'arn:aws:iam::aws-account-id:role/role-name'
設置(S3_存儲桶'儲存儲體', KMS_KEY_ID'千毫信息字符串')

S3_BUDUE 子句指定用於存儲中間結果的 Amazon S3 位置。

(可選)KMS_KEY_ID 子句指定 Amazon Redshift 是否將服務器端加密與AWS KMS密鑰來保護靜態資料。傳輸中的資料會使用 Secure Sockets Layer (SSL) 保護。

如需詳細資訊,請參閱 使用用户指導創建模型

用於本地推理示例的創建模型

以下示例創建了一個模型,該模型之前在 Amazon SageMaker 中已在亞 Amazon Redshift 之外進行過培訓。由於亞馬遜 Redshift ML 支持模型類型進行本地推斷,因此以下 CREATE MODEL 創建了一個可在 Amazon Redshift 中本地使用的函數。您可以提供 SageMaker 訓練任務名稱。

CREATE MODEL customer_churn FROM 'training-job-customer-churn-v4' FUNCTION customer_churn_predict (varchar, int, float, float) RETURNS int IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-ML' SETTINGS (S3_BUCKET 'your-bucket');

創建模型後,您可以使用客户預測使用指定的參數類型進行預測。

創建遠程推理的模型語法

下面介紹了用於遠程推斷的創建模型語法。

CREATE MODEL model_name FUNCTION function_name ( data_type [, ...] ) RETURNS data_type SAGEMAKER 'endpoint_name'[:'model_name'] IAM_ROLE { default | ‘arn:aws:iam::<AWS 帳戶-id>:role/<role-name>’ };

創建遠程推理的模型參數

型號名稱

模型的名稱。結構描述中的模型名稱必須是唯一的。

功能fn_name([data_type] [,...])

函數的名稱和輸入參數的資料類型。您可提供架構名稱。

RETURNS data_type

函數所傳回值的資料類型。

SAGEMAKER'終點_name'[:'型號名稱']

Amazon 的名稱 SageMaker 端點。如果端點名稱指向多模型端點,請添加要使用的模型的名稱。端點必須託管在同一AWS區域為 Amazon Redshift 叢集。

IAM_ROLE{ 預設 | 'arn: aws: aws: iam።<AWS 帳戶-id >: 角色/<role-name>'

使用默認關鍵字讓 Amazon Redshift 使用設置為默認角色並在運行 CREATE MODEL 命令時與集羣關聯的 IAM 角色。

為叢集進行身份驗證和授權時所使用之 IAM 角色使用之 Amazon Resource Name (ARN)。IAM 角色至少必須擁有 Amazon 的訪問權限 SageMaker 訪問轉移任何 Amazon 的終端節點 SageMaker 成品。

以下顯示單一 ARN 的 IAM_ROLE 參數字串語法。

IAM_ROLE 'arn:aws:iam::aws-account-id:role/role-name'

當模型部署到 SageMaker 端點 SageMaker 會在 Amazon Redshift 中創建模型的信息。然後,它通過外部函數執行推理。您可以使用「顯示模型」命令查看 Amazon Redshift 集羣上的型號信息。

用於遠程推理使用説明的創建模型

使用 CREATE MODEL 進行遠程推理之前,請考慮下列事項:

  • 模型必須接受逗號分隔值 (CSV) 格式的輸入,通過 SageMaker 中的內容類型的文本或 CSV。

  • 終端節點必須由同一AWS擁有 Amazon Redshift 叢集的帳户。

  • 模型的輸出必須是創建函數時指定類型的單個值,格式為逗號分隔值 (CSV),通過內容類型的文本或 SageMaker 中 CSV。

  • 模型接受空值作為空字符串。

  • 確保亞馬遜 SageMaker 終端節點具有足夠的資源來容納來自 Amazon Redshift 的推理調用或亞馬遜 SageMaker 端點可以自動縮放。

用於遠程推理示例的創建模型

下列範例會建立使用 SageMaker 終端節點進行預測。確保終端節點正在運行以進行預測,並在 CREATE MODEL 命令中指定其名稱。

CREATE MODEL remote_customer_churn FUNCTION remote_fn_customer_churn_predict (varchar, int, float, float) RETURNS int SAGEMAKER 'customer-churn-endpoint' IAM_ROLE 'arn:aws:iam::0123456789012:role/Redshift-ML';

使用 K 均值創建模型

Amazon Redshift 支持將未標記的數據分組的 K 均值算法。此算法解決了要在數據中發現分組的聚類問題。未分類數據根據其相似性和差異對其進行分組和分區。

使用 K 均值語法創建模型

CREATE MODEL model_name FROM { table_name | ( select_statement ) } FUNCTION function_name IAM_ROLE 'iam_role_arn' AUTO OFF MODEL_TYPE KMEANS PREPROCESSORS 'string' HYPERPARAMETERS DEFAULT EXCEPT ( K 'val' [, ...] ) SETTINGS ( S3_BUCKET 'bucket', KMS_KEY_ID 'kms_string', | -- optional S3_GARBAGE_COLLECT on / off, | -- optional MAX_CELLS integer, | -- optional MAX_RUNTIME integer -- optional);

使用 K 均值參數創建模型

AUTOOFF

關閉 CREATE MODEL 自動發現預處理器、算法和超參數選擇。

模型類型指數

指定使用 KMINEAN 訓練模型。

預處理器「字符串」

指定某些列集的預處理器的某些組合。格式是列集的列表,以及要應用於每組列的適當轉換。Amazon Redshift 支持 3 個 K 均值預處理器,即標準縮放器、最小最大值和數字直通。如果您不想要對 K-均值應用任何預處理,請選擇 NumericPassthrough 明確地作為變壓器。如需支援的變壓器詳細資訊,請參使用用户指導參數創建模型

K 均值算法使用歐幾裏得距離來計算相似度。預處理數據可確保模型的特徵保持在相同的比例上並生成可靠的結果。

超參數默認值除外 (K 'val' [,...])

指定是否使用 K 均值參數。您必須指定K參數在使用 K 平均值算法時。如需詳細資訊,請參閱「」K-Means 超參數中的亞馬遜 SageMaker 開發人員指南

以下示例為 K 均值準備數據。

CREATE MODEL customers_clusters FROM customers FUNCTION customers_cluster IAM_ROLE 'iam-role-arn' AUTO OFF MODEL_TYPE KMEANS PREPROCESSORS '[ { "ColumnSet": [ "*" ], "Transformers": [ "NumericPassthrough" ] } ]' HYPERPARAMETERS DEFAULT EXCEPT ( K '5' ) SETTINGS (S3_BUCKET 'bucket'); select customer_id, customers_cluster(...) from customers; customer_id | customers_cluster -------------------- 12345 1 12346 2 12347 4 12348 0

完整創建模型

下面總結了完整的創建模型語法的基本選項。

完整的創建模型語法

下列是 CREATE MODEL 語句的完整語法。此語法用於在自動開啟半自動使用用户指導創建模型和自動關閉創建具有自動關閉功能的 XGBoost 模型一起工作。此語法還包括 BYOM 的創建模型語句。

重要

使用 CREATE MODEL 語句創建模型時,請按照以下語法中的關鍵字順序進行操作。

CREATE MODEL model_name FROM { table_name | ( select_statement ) | 'job_name' } [ TARGET column_name ] FUNCTION function_name ( data_type [, ...] ) IAM_ROLE { default | ‘arn:aws:iam::<AWS 帳戶-id>:role/<role-name>’ } [ AUTO ON / OFF ] -- default is AUTO ON [ MODEL_TYPE { XGBOOST | MLP | LINEAR_LEARNER | KMEANS } ] -- not required for non AUTO OFF case, default is the list of all supported types -- required for AUTO OFF [ PROBLEM_TYPE ( REGRESSION | BINARY_CLASSIFICATION | MULTICLASS_CLASSIFICATION ) ] -- not supported when AUTO OFF [ OBJECTIVE ( 'MSE' | 'Accuracy' | 'F1' | 'F1_Macro' | 'AUC' | 'reg:squarederror' | 'reg:squaredlogerror'| 'reg:logistic'| 'reg:pseudohubererror' | 'reg:tweedie' | 'binary:logistic' | 'binary:hinge', 'multi:softmax' ) ] -- for AUTO ON: first 5 are valid -- for AUTO OFF: 6-13 are valid [ PREPROCESSORS 'string' ] -- required for AUTO OFF, when it has to be 'none' -- optional for AUTO ON [ HYPERPARAMETERS { DEFAULT | DEFAULT EXCEPT ( Key 'value' (,...) ) } ] -- support XGBoost hyperparameters, except OBJECTIVE -- required and only allowed for AUTO OFF -- default NUM_ROUND is 100 -- NUM_CLASS is required if objective is multi:softmax (only possible for AUTO OFF) [ SETTINGS ( S3_BUCKET 'bucket', | -- required KMS_KEY_ID 'kms_string', | -- optional S3_GARBAGE_COLLECT on / off, | -- optional, defualt is on. MAX_CELLS integer, | -- optional, default is 1,000,000 MAX_RUNTIME integer (, ...) -- optional, default is 5400 (1.5 hours) ) ]

使用須知

使用 CREATE MODEL 時,請考量下列事項:

  • CREATE MODEL 語句在異步模式下運行,並在將訓練數據導出到 Amazon S3 時返回。亞馬遜培訓的剩餘步驟 SageMaker 發生在背景。雖然訓練仍在進行中,相應的推理函數是可見的,但是無法執行。您可以查詢標準模型信息查看訓練狀態。

  • 默認情況下,在自動模型中,訓練可以在後台運行長達 90 分鐘,並且可以延長。要取消培訓,只需運行DROP MODEL命令。

  • 您用於創建模型的 Amazon Redshift 集羣以及用於存儲培訓數據和模型工件的 Amazon S3 存儲桶必須位於同一AWS區域。

  • 在模型培訓期間,Amazon Redshift 和 SageMaker 將中間物件存放在您提供的 Amazon S3 存放區中。默認情況下,Amazon Redshift 會在創建模型操作結束時執行垃圾回收。Amazon Redshift 會從 Amazon S3 移除這些資料元。要在 Amazon S3 上保留這些工件,請設置 S3_垃圾收集選項。

  • 在 FROM 子句中提供的訓練數據中,必須至少使用 500 行。

  • 使用創建模型語句時,只能在 FROM {表名 | (選擇查詢)} 子句中指定最多 256 個要素(輸入)列。

  • 對於 AUTO ON,您可以用來做為訓練集的資料欄類型為 SMALLINT、INTEGER、BIGINT、DECIMAL、REAL、DOUBLE、BOOLEAN、BOOLEAN、CHAR、VARCHAR、DATE、TIMESTAMP、TIMESTAMP 和 TIMESTAMPTZ。對於 AUTO OFF,您可以用來做為訓練集的資料欄類型為 SMALLINT、INTEGER、BIGINT、DECIMAL、DOUBLE 和 BOOLEAN。

  • 您不能使用十進制、日期、時間、時間戳、時間戳、時間標記、幾何、地理位置、HLLSETCH、超級或變量字節作為目標列類型。

  • 若要提高模型精度,請執行下列其中一項操作:

    • 在 FROM 子句中指定訓練數據時,在 CREATE MODEL 命令中添加儘可能多的相關列。

    • 對於最大運行時間和最大單元格使用較大的值。此參數的值越大,培訓模型的成本就會增加。

  • 一旦計算培訓數據並將其導出到 Amazon S3 存儲桶,CREATE MODEL 語句執行就會立即返回。之後,您可以使用「顯示模型」(SHOW MODEL) 命令檢查訓練的狀態。當在後台訓練的模型失敗時,可以使用 SHOW MODEL 檢查錯誤。您無法重試失敗的模型。使用 DROP MODEL 刪除失敗的模型並重新創建新模型。如需顯示模型的詳細資訊,請參顯示模型

  • 本地 BYOM 支持 Amazon Redshift ML 支持非 BYOM 案例的相同型號。Amazon Redshift 支持普通的 XGBoost(使用 XGBoost 1.0 或更高版本)、沒有預處理器的 KMINE 模型以及由亞馬遜培訓的 XGBoost /ML/ 線性學員模型 SageMaker Autopilot。它支持後者與自動駕駛儀指定的預處理器,亞馬遜也支持 SageMaker Neo。

  • 如果您的 Amazon Redshift 羣集已針對您的虛擬私有雲 (VPC) 啟用增強路由,請務必建立 Amazon S3 VPC 終端節點,以及 SageMaker 您的羣集所在的 VPC 的 VPC 終端節點。這樣可以在 CREATE MODEL 期間在這些服務之間通過 VPC 運行流量。如需詳細資訊,請參閱「」SageMaker 澄清 Job 亞馬遜 VPC 子網絡和安全組