$30 off During Our Annual Pro Sale. View Details »

Redshift MLの紹介

date_cocoa
September 24, 2021

Redshift MLの紹介

Redshift MLの紹介

date_cocoa

September 24, 2021
Tweet

More Decks by date_cocoa

Other Decks in Business

Transcript

  1. 4 はじめに n 発表すること Ø Redshiftの機能の1つであるRedshift MLの概要 Ø Redshift MLの裏ではSageMakerが動いているが、SageMakerに関しては本発表の対象外

    Ø その他のAWSサービスに関しても本発表の対象外 Ø 2021年08⽉の情報です n SageMakerに関しての補⾜ Ø SageMakerは機械学習に関するいくつかの機能があるAWSのサービス。機械学習の様々なワークフローを ⾃動化してくれる Ø そのうちの1つとしてSageMaker Autopilotがある。SageMaker AutopilotはAutoMLの⼀つ Ø SageMaker Neoは訓練されたモデルを様々なデバイス(EC2インスタンス等)に⾃動的にモデルを展開 はじめに 本発表の前提
  2. 6 Redshift MLの概要 2021年06⽉から⼀般利⽤可能になったAWS Redshiftの機能 Redshift上で、機械学習モデルの訓練・推論がSQLで可能 n 嬉しい点 Ø 機械学習に関する知識がなくPython/Rを知らなくても、

    SQLを使⽤している⽅なら簡単に機械学習モデルを訓練・推論できる Ø 訓練したモデルはユーザー定義関数(UDF)として誰でも呼び出して推論に⽤いることができる Ø DWH(Redshift)からデータを移動しなくても機械学習モデルを使⽤可能 n 想像される使⽤⽤途 Ø Python/Rを使⽤せずに機械学習モデルをシステム化 Ø Redshiftを共通のデータベースとして使⽤している場合、 機械学習に関する知識が少ないアナリストに分析の⼀部として機械学習を使⽤してもらう n 今後改善が期待される点 Ø サポートされているモデルが少ない Ø 訓練時、パラメータの細かいチューニングがPython/Rほどできない Ø 訓練時、チューニングの際に使⽤できる指標がMSE、Accuracy、AUC、F1、F1Macroしかない Ø ブラックボックス的要素が多い(調査しきれていない可能性も…。) Redshift MLの概要 Redshift MLの概要は下記のとおり BigQuery MLの AWS版︖
  3. 8 Redshift MLの料⾦ n 料⾦ Ø Redshiftのクラスター料⾦ Ø モデルの推論時は追加コストなし Ø

    モデルの訓練時は下記の通り p SageMakerの料⾦ p S3の料⾦ create modelクエリ によって⼀時的に⽣じるファイル(数GBオーダー) デフォルトではこのファイルはすぐに削除されるためコストとしては⼩額 ドキュメントにはなかったが、PUT料⾦もかかるはず。ただし、こちらも⼩額。 Redshift MLの概要 https://aws.amazon.com/jp/redshift/pricing/ Redshift MLの料⾦は下記のとおり セルの数 料⾦ 最初の1,000万セル 100万セルあたり20USD 次の9,000万セル 100万セルあたり15USD 1億個以上のセル 100万セルあたり7USD
  4. 10 簡単なデータで試⾏ n タイタニックデータの概要 Ø 乗客が⽣存したかどうか(Survived)を予測 Ø train.csv (891⾏ 12列)、test.csv

    (418⾏ 11列) Ø 列 p PassengerId: 乗客のID p Survived: ⽣存したかどうか(0=No, 1=Yes) p Pclass: チケットのランク(1=1st, 2=2nd, 3=3rd) p Name: 名前 p Sex: 性別 p Age: 年齢 p SibSp: 同乗した兄弟/配偶者の数 p Parch: 同乗した親/⼦どもの数 p Ticket: チケット番号 p Fare: 運賃 p Cabin: 客室番号 p Embarked: 出港地 (C = Cherbourg, Q = Queenstown, S = Southampton) S3に配置してそれぞれ、redshift_ml.train、redshift_ml.testとしてCREATE⽂、COPY⽂を実⾏ Redshift MLを試す kaggleチュートリアルのタイタニックデータでモデルを作成
  5. 11 Redshift MLの使い⽅ n Auto On でモデルの訓練・推論 Ø XGBoostと多層パーセプトロン(MLP)がサポートされている Ø

    前処理もよしなにしてくれる n Auto Off でモデルの訓練・推論 Ø XGBoostしかサポートされていない Ø numericalなカラムしか受け付けない(= 前処理は⾃⾝で必要) Ø パラメータの設定が⼿動で可能 n 独⾃モデル(BYOM)の推論 Ø ローカル推論: SageMakerで直接訓練したモデルをRedshift内に関数として持ってきて使⽤ (XGBoost, MLPしかサポートされていない) Ø リモート推論: SageMakerで直接訓練したモデルのエンドポイントをRedshift内で呼び出して使⽤ (おそらく、SageMaker上で作成したXGBoost, MLP以外のモデルも使⽤可能) Redshift MLを試す 使い⽅は⼤きく分けて3種類 発表 対象外
  6. 12 Auto Onで試⾏ 0. DROP MODEL IF EXISTS で念のためモデルがあれば削除 1.

    CREATE MODEL でモデルを訓練 2. SHOW MODEL でモデルの状態を確認 Model State が… TRAINING : 訓練中 READY : 訓練終了 FAILED : 訓練失敗(失敗例︓指定した訓練時間中に最適なモデルが⾒つからなかった場合) 3. 作成された関数を⽤いてモデルの予測 Redshift MLを試す Auto On でモデルの訓練・推論
  7. 15 CREATE⽂のパラメータ Redshift MLを試す https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_CREATE_MODEL.html オプションのパラメータ 選択肢 説明 MODEL_TYPE {

    XGBOOST | MLP } モデルのタイプを指定。指定しない場合は XGBOOST、MLP両⽅のモデルから最適なモデ ルが選択 PROBLEM_TYPE ( REGRESSION | BINARY_CLASSIFICATION | MULTICLASS_CLASSIFICATION ) 問題の種類を指定。指定しない場合は⾃動的に 検出 OBJECTIVE ( 'MSE' | 'Accuracy' | 'F1' | 'F1Macro' | 'AUC') チューニング時に使⽤する指標。 指定しない場合は、 REGRESSION: MSE、 BINARY_CLASSIFICATION: F1、 MULTICLASS_CLASSIFICATION: Accuracy となる MAX_CELLS 整数 訓練に使⽤するセルの数。訓練データが指定数 より多い場合は、指定数以下になるようにラン ダムに選択 MAX_RUNTIME 整数 訓練する最⼤時間(単位 秒) S3_GARBAGE_COLLECT { ON | OFF } ⼀時的にS3に保存するデータを削除するか KMS_KEY_ID AWS KMSのキーを使⽤したサーバー側の暗号 化を使⽤して保存データを保護するかどうか PREPROCESSORS string JSONのような形式でカラムの前処理を指定可 能
  8. 16 PREPROCESSORSの種類 Redshift MLを試す https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_CREATE_MODEL.html PREPROCESSORS 説明 OneHotEncoder OneHotエンコーディング OrdinalEncoder

    離散値を1つの整数に NumericPassthrough ⼊⼒値をそのまま使⽤ Imputer ⽋損値とNaNをある値で代⼊ ImputerWithIndicator ⽋損値とNaNをある値で代⼊し、代⼊された⾏にはフラグを追加 Normalizer 正規化 DateTimeVectorizer ⽇付型をベクトル化 PCA 主成分分析
  9. 17 Auto Offで試⾏ 0. DROP MODEL IF EXISTS で念のためモデルがあれば削除 1.

    CREATE MODEL でモデルを訓練 2. SHOW MODEL でモデルの状態を確認 Model State が… TRAINING : 訓練中 READY : 訓練終了 FAILED : 訓練失敗(失敗例︓指定した訓練時間中に最適なモデルが⾒つからなかった場合) 3. 作成された関数を⽤いてモデルの予測 Redshift MLを試す Auto Off でモデルの訓練・推論
  10. 19 指定可能なハイパーパラメータ Redshift MLを試す https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_CREATE_MODEL.html パラメータ名 パラメータ値 デフォルト値 備考 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]
  11. 20 少し実践的なデータで試⾏ n 注意点 Ø 評価指標はMAEだが、Redshift MLではMAEはサポートされていないのでチューニングの際はMSEを使⽤ Ø 訓練データのセル数は17,845,828(637,351×28)だが、訓練で使⽤するセル数のMAXは1,000,000 Ø

    ⼿動の前処理は全く⾏わない Ø 明らかに連続量として扱った⽅が良さそうなものも。⽂字列が1つでも含まれればvarcharとしている 例︓⾯積(2000㎡以上は「2000㎡以上」とか) Redshift MLを試す https://www.nishika.com/competitions/13/summary NishikaのトレーニングコンペでRedshiftMLで試す
  12. 25 まとめ n Redshift MLとは Ø 2021年06⽉から⼀般利⽤可能になったRedshiftの新機能 Ø SQLでモデルの訓練・推論が可能 Ø

    サポートされている機能(モデル、評価指標)が少ない n 触ってみた所感 Ø AUTO ONは結構時間がかかる。例えば、titanicデータのような⼩さなデータでも、学習時間のmaxを10分 とすると最適なモデルが⾒つからないというエラーとなる Ø AUTO OFFはすぐに終わる まとめ 以下、まとめを記述