モデルを作成する - Amazon Redshift

モデルを作成する

CREATE MODEL ステートメントは、モデルの作成に使用するパラメータの数を柔軟に提供します。ニーズや問題のタイプに応じて、ユーザーは好みのプリプロセッサ、アルゴリズム、問題の種類、またはハイパーパラメータを選択できます。

CREATE MODEL ステートメントを使用する前に、Amazon Redshift ML を使用するためのクラスターの設定 の前提条件を満たしてください。前提条件の概要は次のとおりです。

  • AWS マネジメントコンソールまたは AWS Command Line Interface (AWS CLI) を使用して、Amazon Redshift クラスターを作成します。

  • クラスターの作成中に AWS Identity and Access Management (IAM) ポリシーをアタッチします。

  • Amazon Redshift と SageMaker が、他のサービスとやり取りするロールを引き受けることを許可するには、IAM ロールに適切な信頼ポリシーを追加します。

IAM ロール、信頼ポリシー、およびその他の前提条件の詳細については、Amazon Redshift ML を使用するためのクラスターの設定 を参照してください。

以下では、CREATE MODEL ステートメントのさまざまなユースケースを見つけることができます。

単純な CREATE MODEL

次に、CREATE MODEL 構文の基本的なオプションをまとめます。

単純な CREATE MODEL 構文

CREATE MODEL model_name FROM { table_name | ( select_query ) } TARGET column_name FUNCTION prediction_function_name IAM_ROLE 'iam_role_arn' SETTINGS ( S3_BUCKET 'bucket', [ MAX_CELLS integer ] )

単純な CREATE MODEL パラメータ

model_name

モデルの名前です。スキーマ内のモデル名は一意でなければなりません。

FROM { table_name | ( select_query ) }

table_name またはトレーニングデータを指定するクエリ。これらは、システム内の既存のテーブル、または丸括弧で囲まれた Amazon RedShift 互換の SELECT クエリ、つまり () のいずれかです。クエリ結果には少なくとも 2 つの列が必要です。

TARGET column_name

予測対象となる列の名前。列は、FROM 句内に存在する必要があります。

FUNCTION prediction_function_name

CREATE MODEL によって生成され、このモデルを使用して予測を行うために使用される Amazon Redshift 機械学習関数の名前を指定する値。この関数は、モデルオブジェクトと同じスキーマで作成され、オーバーロードされる可能性があります。

Amazon Redshift の機械学習では、回帰および分類用の Xtreme Gradient Boosted ツリー (XgBoost) モデルなどのモデルがサポートされています。

IAM_ROLE 'iam_role_arn'

クラスターが認証と許可に使用する AWS Identity and Access Management IAM ロールの Amazon リソースネーム (ARN)。少なくとも、IAM ロールには、トレーニングデータのアンロードと Amazon SageMaker アーティファクトのステージングに使用する Amazon S3 バケットで LIST オペレーションを実行する許可が必要です。以下に ARN が 1 つの場合の IAM_ROLE パラメータ文字列の構文を示します。

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

以前に作成した Amazon S3 バケットの名前は、Amazon Redshift と SageMaker の間でトレーニングデータとアーティファクトを共有するために使用されていました。Amazon Redshift は、トレーニングデータをアンロードする前に、このバケットにサブフォルダを作成します。トレーニングが完了すると、Amazon Redshift は作成したサブフォルダとその内容を削除します。

MAX_CELLS 整数

FROM 句からエクスポートするセルの最大数。デフォルトは 1,000,000 です。

セル数は、トレーニングデータ (FROM 句のテーブルまたはクエリによって生成される) の行数と列数を掛けた積です。トレーニングデータのセル数が max_cells パラメータで指定された数よりも多い場合、CREATE MODEL は FROM 句のトレーニングデータをダウンサンプリングして、トレーニングセットのサイズを MAX_CELLS 未満に減らします。大規模なトレーニングデータセットを許可すると、精度が高くなる可能性がありますが、モデルのトレーニングに時間がかかり、コストも高くなる可能性があります。

Amazon Redshift の使用コストについては、Amazon Redshift 機械学習を使用するためのコスト を参照してください。

さまざまなセル番号に関連するコストと無料トライアルの詳細については、Amazon Redshift の料金を参照してください。

ユーザーガイダンス付きの CREATE MODEL

以下に、単純な CREATE MODEL で説明されているオプションに加えて、CREATE MODEL オプションの説明を示します。

デフォルトでは、CREATE MODEL は特定のデータセットの前処理とモデルの最適な組み合わせを検索します。モデルに対して追加の制御が必要な場合や、追加のドメイン知識 (問題の種類や目的など) を導入する場合があります。顧客解約シナリオでは、「顧客がアクティブではない」という結果がまれである場合、精度目標よりも F1 目標が優先されることがよくあります。高精度モデルでは、常に「顧客がアクティブ」であると予測される可能性があるため、精度は高くなりますが、ビジネス価値はほとんどありません。F1 目標の詳細については、Amazon SageMaker API リファレンスAutoMLJobObjective を参照してください。

次に、CREATE MODELは、目標など、指定された側面に関する提案に従います。同時に、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 'iam_role_arn' [ MODEL_TYPE { XGBOOST | MLP } ] [ 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 (, ...) )

ユーザーガイダンスパラメータ付きの CREATE MODEL

MODEL_TYPE { XGBOOST | MLP }

(オプション) モデルタイプを指定します。XGBoost や多層パーセプトロン (MLP) など、特定のモデルタイプのモデルをトレーニングするかどうかを指定できます。MLP は、Amazon SageMaker Autopilot がサポートする深層学習アルゴリズムです。パラメータを指定しない場合、トレーニング中にサポートされているすべてのモデルタイプが最適なモデルを検索します。

PROBLEM_TYPE ( REGRESSION | BINARY_CLASSIFICATION | MULTICLASS_CLASSIFICATION )

(オプション) 問題の種類を指定します。問題の種類がわかっている場合は、Amazon Redshift をその特定のモデルタイプの最適なモデルだけを検索するように制限できます。このパラメータを指定しない場合、トレーニング中にデータに基づく問題の種類が検出されます。

OBJECTIVE ( 'MSE' | 'Accuracy' | 'F1' | 'F1Macro' | 'AUC')

(オプション) 機械学習システムの予測品質を測定するために使用する目標メトリクスの名前を指定します。このメトリクスは、トレーニング中に最適化され、データからモデルパラメータ値の最良の推定値を提供します。メトリクスを明示的に指定しない場合、デフォルトの動作では、MSE が回帰に、F1 がバイナリ分類に、精度がマルチクラス分類に自動的に使用されます。目標の詳細については、Amazon SageMaker API リファレンスAutoMLJobObjective を参照してください。

MAX_CELLS 整数

(オプション) トレーニングデータのセル数を指定します。この値は、(トレーニングクエリまたはテーブル内の) レコード数と列数の積です。デフォルトは 1,000,000 です。

MAX_RUNTIME 整数

(オプション) トレーニングする最大時間を指定します。トレーニングジョブは、データセットのサイズに応じてより早く完了することがよくあります。これは、トレーニングにかかる最大時間を指定します。デフォルトは 5,400 (90 分) です。

S3_GARBAGE_COLLECT { ON | OFF }

(オプション) Amazon Redshift がモデルおよびモデルのトレーニングに使用される結果のデータセットに対してガベージコレクションを実行するかどうかを指定します。OFF に設定すると、モデルとモデルのトレーニングに使用される結果のデータセットは Amazon S3 に残り、他の目的に使用できます。ON に設定すると、Amazon Redshift はトレーニングの完了後に Amazon S3 内のアーティファクトを削除します。デフォルトはオンです。

KMS_KEY_ID 'kms_key_id'

(オプション) AWS KMS キーを使用したサーバー側の暗号化を使用して、Amazon Redshift が保管中のデータを保護するかどうかを指定します。転送中のデータは Secure Sockets Layer (SSL) で保護されています。

PREPROCESSORS 'string'

(オプション) 特定の列セットに対するプリプロセッサの特定の組み合わせを指定します。形式は、columnSets のリストであり、各列のセットに適用される適切な変換です。Amazon Redshift は、特定のトランスフォーマのリスト内にあるすべてのトランスフォーマを対応する ColumnSet 内のすべての列に適用します。たとえば、Imputer を使用した OneHotEncoder を列 t1 と t2 に適用するには、次のサンプルコマンドを使用します。

CREATE MODEL customer_churn FROM customer_data TARGET 'Churn' FUNCTION predict_churn IAM_ROLE 'iam_role' 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 – 通常、離散値をゼロ以外の値を持つバイナリベクトルにエンコードするために使用されます。このトランスフォーマは、多くの機械学習モデルに適しています。

  • OrdinalEncoder – 離散値を 1 つの整数にエンコードします。このトランスフォーマは、MLP などの特定の機械学習モデルに適しています。

  • NumericPassthrough – 入力をそのままモデルに渡します。

  • Imputer – 数値 (NaN) の値ではなく、欠損値を記入します。

  • ImputerWithIndicator – 欠損値と NaN 値を埋めます。このトランスフォーマは、値が欠落して入力されているかどうかを示すインジケータも作成します。

  • Normalizer – 値を正規化します。これにより、多くの機械学習アルゴリズムのパフォーマンスが向上します。

  • DateTimeVectorizer – 機械学習モデルで使用できる日時データ型の列を表すベクトル埋め込みを作成します。

  • PCA – できるだけ多くの情報を保持しながら、特徴の数を減らすためにデータを低い次元空間に投影します。

Amazon Redshift ML は、トレーニング済みのトランスフォーマを保存し、予測クエリの一部として自動的に適用します。モデルから予測を生成するときにそれらを指定する必要はありません。

AUTO OFF 付きの CREATE XGBoost モデル

AUTO OFF CREATE MODEL の目的は、通常、デフォルトの CREATE MODEL の目的とは異なります。

使用するモデル型と、これらのモデルをトレーニングする際に使用するハイパーパラメータを既に把握している上級ユーザーであれば、CREATE MODEL で AUTO OFF を指定することで、プリプロセッサとハイパーパラメータに関する CREATE MODEL による自動検出をオフにすることができます。そのためには、明示的にモデルタイプを指定します。XGBoost は現在、AUTO が OFF に設定されている場合にサポートされる唯一のモデルタイプです。ハイパーパラメータを指定できます。Amazon Redshift では、指定したハイパーパラメータにデフォルト値が使用されます。

AUTO OFF 構文付き CREATE MODEL

CREATE MODEL model_name FROM { table_name | (select_statement ) } TARGET column_name FUNCTION function_name IAM_ROLE 'iam_role_arn' 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 (, ...) )

AUTO OFF パラメータ付き CREATE XGBoost モデル

AUTO OFF

プリプロセッサ、アルゴリズム、およびハイパーパラメータの選択での、CREATE MODEL による自動検出をオフにします。

MODEL_TYPE XGBOOST

XGBOOST を使用してモデルをトレーニングするよう指定します。

OBJECTIVE str

アルゴリズムによって認識される目標を指定します。Amazon Redshift は reg:squarederror、reg:squaredlogerror、reg:logistic、reg:pseudohubererror、reg:tweedie、binary:logistic、binary:hinge、multi:softmax をサポートしています。これらの目的の詳細については、XGBoost のドキュメントからラーニングタスクのパラメータを参照してください。

HYPERPARAMETERS { DEFAULT | DEFAULT EXCEPT ( key ‘value’ (,..) ) }

デフォルトの XGBoost パラメータを使用するか、それをユーザー指定の値で上書きするかを指定します。値は一重引用符で囲む必要があります。以下に、XGBoost のパラメータとそのデフォルトの例を示します。

パラメータ名 パラメータ値 デフォルト値 コメント

num_class

整数

マルチクラス分類に必須です。

該当なし

num_round

整数

100

該当なし

tree_method

文字列 Auto 該当なし

max_depth

整数 6 [0 , 10]
min_child_weight 浮動小数点 1 MinValue: 0、MaxValue: 120
subsample 浮動小数点 1 MinValue: 0.5、MaxValue: 1
gamma 浮動小数点 0 MinValue: 0、MaxValue: 5
alpha 浮動小数点 0 MinValue: 0、MaxValue: 1000
eta 浮動小数点 0.3 MinValue: 0.1、MaxValue: 0.5
colsample_byleve 浮動小数点 1 MinValue: 0.1、MaxValue: 1
colsample_bynode 浮動小数点 1 MinValue: 0.1、MaxValue: 1
colsample_bytree 浮動小数点 1 MinValue: 0.5、MaxValue: 1
lambda 浮動小数点 1 MinValue: 0、MaxValue: 1000
max_delta_step 整数 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、OBJECTIVE、PREPROCESSORS など、指定された詳細オプションを使用して 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 より大きい魚の年齢を予測します。上記のコマンドで作成した関数 ml_fn_abalone_xgboost_multi_predict_age を使用します。

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 の CREATE MODEL 構文のオプションをまとめます。Amazon Redshift の外部でトレーニングされたモデルを Amazon SageMaker とともに使用して、Amazon Redshift でローカルにデータベース内推論を行うことができます。Amazon Redshift 機械学習は、ローカルまたはリモートの推論で BYOM の使用をサポートしています。

ローカル推論のための CREATE MODEL 構文

以下では、ローカル推論のための CREATE MODEL 構文について説明します。

CREATE MODEL model_name FROM ('job_name' | 's3_path' ) FUNCTION function_name ( data_type [, ...] ) RETURNS data_type IAM_ROLE 'iam-role-arn' [ SETTINGS ( S3_BUCKET 'bucket', | --required KMS_KEY_ID 'kms_string') --optional ];

Amazon Redshift は現在、BYOM 用に事前トレーニングされた XGBoost および MLP モデルのみをサポートしています。このパスを使用して、ローカル推論のために SageMaker Autopilot と Amazon SageMaker で直接トレーニングされたモデルをインポートできます。

ローカル推論のための CREATE MODEL パラメータ

model_name

モデルの名前です。スキーマ内のモデル名は一意でなければなりません。

FROM ('job_name' | 's3_path' )

job_name では、入力として Amazon SageMaker のジョブ名を指定します。ジョブ名は、Amazon SageMaker トレーニングジョブ名または Amazon SageMaker Autopilot ジョブ名のいずれかです。ジョブは、Amazon Redshift クラスターを所有するのと同じ AWS アカウントで作成する必要があります。

's3_path' では、モデルの作成時に使用される .tar.gz モデルアーティファクトファイルを格納する S3 の場所を指定します。

FUNCTION function_name ( data_type [, ...] )

作成する関数の名前と、入力引数のデータ型。スキーマ名を指定できます。

RETURNS data_type

データタイプの値は関数によって返されます。

IAM_ROLE 'iam_role_arn'

クラスターが認証と許可に使用する AWS Identity and Access Management IAM ロールの Amazon リソースネーム (ARN)。

以下に ARN が 1 つの場合の IAM_ROLE パラメータ文字列の構文を示します。

IAM_ROLE 'arn:aws:iam::aws-account-id:role/role-name'
SETTINGS ( S3_BUCKET 'bucket', | KMS_KEY_ID 'kms_string')

S3_BUCKET 句は、中間結果の保存に使用される Amazon S3 の場所を指定します。

(オプション) KMS_KEY_ID 句は、Amazon Redshift が AWS KMS キーを使用したサーバー側の暗号化を使用して、保管中のデータを保護するかどうかを指定します。転送中のデータは Secure Sockets Layer (SSL) で保護されています。

詳細については、「ユーザーガイダンス付きの CREATE MODEL」を参照してください。

ローカル推論のための CREATE MODEL 例

次の例では、Amazon Redshift 以外の Amazon SageMaker で以前にトレーニングされたモデルを作成します。モデル型は Amazon 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');

モデルが作成されたら、指定された引数タイプで関数 customer_churn_predict を使用して予測を行うことができます。

リモート推論のための CREATE MODEL 構文

次に、リモート推論用の CREATE MODEL 構文について説明します。

CREATE MODEL model_name FUNCTION function_name ( data_type [, ...] ) RETURNS data_type SAGEMAKER 'endpoint_name'[:'model_name'] IAM_ROLE 'iam-role-arn';

リモート推論の CREATE MODEL パラメータ

model_name

モデルの名前です。スキーマ内のモデル名は一意でなければなりません。

FUNCTION fn_name ( [data_type] [, ...] )

関数の名前と入力引数のデータ型。スキーマ名を指定できます。

RETURNS data_type

データタイプの値は関数によって返されます。

SAGEMAKER 'endpoint_name'[:'model_name']

Amazon SageMaker エンドポイントの名前。エンドポイント名がマルチモデルのエンドポイントを指している場合は、使用するモデルの名前を追加します。エンドポイントは、Amazon Redshift クラスターと同じ AWS リージョン内でホストされる必要があります。

IAM_ROLE 'iam_role_arn'

クラスターが認証と許可に使用する AWS Identity and Access Management IAM ロールの Amazon リソースネーム (ARN)。少なくとも、IAM ロールは Amazon SageMaker アーティファクトをステージングするエンドポイントにアクセスするために、Amazon SageMaker にアクセスする必要があります。

以下に ARN が 1 つの場合の IAM_ROLE パラメータ文字列の構文を示します。

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

モデルが SageMaker エンドポイントにデプロイされると、SageMaker は Amazon Redshift でモデルの情報を作成します。その後、外部関数を介して推論を実行します。SHOW MODEL コマンドを使用して、Amazon Redshift クラスターのモデル情報を表示できます。

リモート推論の使用上の注意のための CREATE MODEL

リモート推論に CREATE MODEL を使用する前に、次の点を考慮してください。

  • モデルは、SageMaker コンテンツタイプのテキストまたは CSV を介して、コンマ区切り値 (CSV) の形式で入力を受け入れる必要があります。

  • エンドポイントは、Amazon Redshift クラスターを所有するのと同じ AWS アカウントでホストされている必要があります。

  • モデルの出力は、SageMaker のテキストまたは CSV のコンテンツタイプを介してコンマ区切り値 (CSV) の形式で、関数の作成時に指定されたタイプの単一の値でなければなりません。

  • モデルは空の文字列として null を受け入れます。

  • Amazon SageMaker エンドポイントに Amazon Redshift からの推論呼び出しに対応するのに十分なリソースがあること、または Amazon SageMaker エンドポイントを自動的にスケーリングできることを確認してください。

リモート推論のための CREATE MODEL 例

次の例では、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';

フル CREATE MODEL

以下に、完全な CREATE MODEL 構文の基本的なオプションをまとめます。

フル CREATE MODEL 構文

以下は、CREATE MODEL ステートメントの完全な構文です。この構文は、AUTO ON 半自動 ユーザーガイダンス付きの CREATE MODEL と AUTO OFF AUTO OFF 付きの CREATE XGBoost モデル が連携する場合に使用されます。この構文には、BYOM 用の CREATE MODEL ステートメントも含まれています。

重要

CREATE MODEL ステートメントを使用してモデルを作成する場合は、次の構文内のキーワードの順序に従います。

CREATE MODEL model_name FROM { table_name | ( select_statement ) | 'job_name' } [ TARGET column_name ] FUNCTION function_name ( data_type [, ...] ) IAM_ROLE 'iam_role_arn' [ AUTO ON / OFF ] -- default is AUTO ON [ MODEL_TYPE { XGBOOST | MLP } ] -- 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 へのトレーニングデータのエクスポート時に戻ります。Amazon SageMaker でのトレーニングの残りステップは、バックグラウンドで行われます。トレーニングが進行している間は、対応する推論関数が表示されますが、実行することはできません。STV_ML_MODEL_INFO にクエリを実行して、トレーニングの状態を確認できます。

  • トレーニングはバックグラウンドで最大 90 分間実行できますが、デフォルトでは自動モデルで実行し、延長することもできます。DROP MODEL コマンドを実行するだけで、トレーニングをキャンセルできます。

  • モデルの作成に使用する Amazon Redshift クラスターと、トレーニングデータとモデルアーティファクトのステージングに使用される Amazon S3 バケットは、同じ AWS リージョンに置かれている必要があります。

  • モデルトレーニング中に、Amazon Redshift と SageMaker は、指定した Amazon S3 バケットに中間成果物を保存します。デフォルトでは、Amazon Redshift は CREATE MODEL 演算子の最後にガベージコレクションを実行します。Amazon Redshift は、Amazon S3 からこれらのオブジェクトを削除します。これらのアーティファクトを Amazon S3 で保持するには、S3_GARBAGE COLLECT OFF オプションを設定します。

  • FROM 句で提供されるトレーニングデータには、少なくとも 500 行を使用する必要があります。

  • CREATE MODEL ステートメントを使用する場合、FROM { table_name | ( select_query ) } 句には、最大 256 個の特徴 (入力) 列しか指定できません。

  • AUTO ON の場合、トレーニングセットとして使用できる列タイプは、SMALLINT、INTEGER、BIGINT、DECIMAL、REAL、DOUBLE、BOOLEAN、CHAR、VARCHAR、DATE、TIME、TIMMETZ、TIMETZ TIMESTAMP、TIMESTAMPTZ です。AUTO OFF の場合、トレーニングセットとして使用できる列タイプは、SMALLINT、INTEGER、BIGINT、DECIMAL、REAL、DOUBLE、BOOLEAN です。

  • ターゲット列タイプとして、DECIMAL、DATE、TIME、TIMETZ、TIMESTAMP、TIMESTAMPTZ、GEOMETRY、HLLSKETCH、または SUPER を使用することはできません。

  • モデルの精度を上げるには、以下のいずれかを実行します。

    • FROM 句でトレーニングデータを指定するときに、CREATE MODEL コマンドに関連する列をできるだけ多く追加します。

    • MAX_RUNTIME と MAX_CELLS にはより大きな値を使用してください。このパラメータの値を大きくすると、モデルのトレーニングにかかるコストが増加します。

  • トレーニングデータが計算され、Amazon S3 バケットにエクスポートされるとすぐに CREATE MODEL ステートメントの実行が返されます。その後、SHOW MODEL コマンドを使用して、トレーニングのステータスを確認できます。バックグラウンドでトレーニングされているモデルに障害が発生した場合は、SHOW MODEL を使用してエラーを確認できます。失敗したモデルを再試行することはできません。DROP MODEL を使用すると、失敗したモデルを削除し、新しいモデルを再作成できます。SHOW MODEL の詳細については、SHOW MODEL を参照してください。

  • ローカル BYOM は、Amazon Redshift ML が BYOM 以外の場合にサポートするのと同じ種類のモデルをサポートします。Amazon Redshift は、プリプロセッサを使用しないプレーンな XGBoost または MLP モデル (XGBoost バージョン 1.0 以降を使用) をサポートし、Amazon SageMaker Autopilot によってトレーニングされた XGBoost モデルをサポートします。Autopilot が指定したプリプロセッサで後者をサポートします。プリプロセッサは Amazon SageMaker Neo でもサポートされています。

  • Amazon Redshift クラスターで Virtual Private Cloud (VPC) の拡張ルーティングが有効になっている場合は、クラスターがある VPC に対して Amazon S3 VPC エンドポイントと SageMaker VPC エンドポイントを作成してください。これにより、CREATE MODEL の実行中にトラフィックがこれらのサービス間で VPC を通過できるようになります。