実践 AWSデータサイエンス
―エンドツーエンドのMLOpsパイプライン実装
Contents-list
これはなに?
書籍AWSデータサイエンス入門のメモ(編集中・・・)
AWSにおけるデータサイエンス入門
クラウドコンピューティングのメリット
- 俊敏性, コスト削減, 伸縮自在性, イノベーションを加速, 数分内のグローバル展開, プロトタイプから本番稼働への円滑な移行
データサイエンスのパイプラインとワークフロー
- Amazon SageMaker Pipelines(標準的で機能が充実、最も完成度の高い方法)
- AWS Step Functions Data Science SDK(複雑なワークフローを作成できる)
- Kubeflow Pipelines(Kubernetes上に構築されている)
- Apache Airflowのマネージドワークフロー(人気の手法 Amazon MWAA)
- MLflow(Amazon EKSのクラスタを構築・保守が必要)
- TensorFlow Extended(TFX:)
- Human-in-the-Loopワークフロー(ワークフロー)
MLOpsのベストプラクティス
- MLOps v1.0:モデル構築、訓練、チューニング、デプロイを手動で行う
- MLOps v2.0:モデルパイプラインの構築とオーケストレーションを手動で行う
- MLOps v3.0:GitOps、確定・統計的トリガーを起点としパイプラインを自動で実行
- 運用上の優秀性(こつ)
- データの品質をチェックする, シンプルに始め、既存ソリューションを再利用する, モデルのパフォーマンス指標を定義する, 全てを追跡し、バージョン管理する, モデル訓練とモデルサービングのそれぞれに適切なハードウェアを選択する, デプロイしたモデルを継続的に監視する, 機械学習のワークフローを自動化する
- セキュリティ, 信頼性, パフォーマンス効率, コスト最適化
Amazon AIサービスとAmazon SageMakerによるAutoML
SageMaker AutopilotによるAutoML
Autopilotは表形式を見て、回帰や分類を決める。多様な機械学習モデル候補のパイプラインを作成する。特徴量エンジニアリングのステップでデータ変換を適用し、それぞれのモデル候補の訓練とチューニングを行う。リーダーボードを作成する。データ分析ステップの結果やモデル訓練を再現するためのモデル候補パイプラインを文章化した追加のJupyterノートブックを生成します。必要に応じてモデルをファインチューニングをし、改善することができる。Autopilotで生成されたモデル指標は提供されたデータセットで達成可能なモデル品質の優れたベースラインになる。
AWSでのデータの取り込み、探索、準備
Amazon S3とAWS Lake Formationによるデータ取り込みとデータレイク
Amazon Athena, Amazon Redshift, Amazon QuickSightによるデータ分析
AWS DeequとSageMaker Processing Jobによるデータ品質評価
SageMaker Ground Truthによる訓練データのラベル付け
AWS Glue DataBrew, SageMaker Data Wrangler, SageMaker Processing Jobによるデータ変換
Amazon SageMakerによるモデル訓練とチューニング
SageMaker TrainingとSageMaker Experimentsによるモデルの訓練
SageMaker Experiments:
個々のモデル訓練の実行を整理、追跡、評価することができる
SageMaker Debugger:
モデルの訓練プロセスの透明性を得ることができる。システムリソースの使用状況をプロファイルして監視し、CPUやGPUの過負荷のようなリソースのボトルネックを特定する。
SageMakerを用いた訓練で必要なもの
- データのS3ロケーション
- モデル訓練コードを実行するアルゴリズムコンテナを指定
- 必要なSageMaker MLインスタンスのタイプと数を定義することだけ
SageMaker Autopilot以外にも、Amazon SageMakerに搭載されている組み込みアルゴリズムを選択したり、自前のモデルコード(スクリプトモード)や自前のアルゴリズム/フレームワークコンテナを持ち込んでモデル訓練をカスタマイズすることができる。
SageMakerには多くの組み込みアルゴリズムが搭載されている
教師あり・なし学習ができる。大体なんでもできる
Bring Your Own Script(スクリプトモード)
自前のモデル訓練コードを利用することができる
Bring Your Own Container(BYOC)
独自のカスタムコンテナを用意できる
SageMaker JumpStartによる構築済みソリューションと事前学習済みモデル
SageMaker Hyper-Parameter Tuningによるモデルのチューニングと検証
指定した範囲で探索を行う
Aamazon SageMakerとAWS Lambda関数によるモデルデプロイ
モデルの訓練、検証、最適化が完了したら、モデルをデプロイして監視する段階に入る。Amazon SageMakerでモデルをデプロイするには、アプリケーションの要件に応じて一般的に3つの方法がある。
・SageMaker EndPoint:RESTベース予測のため
低レイテンシーのリアルタイム予測のためにモデルのデプロイを最適化する必要がある場合、SageMakerのホスティングサービスを使用してモデルをデプロイすることができ、予測のためのREST APIを提供する
・AWS Lambda関数:サーバレス予測
SageMakerでモデルを訓練した後、AWS Lambda関数を使用し、S3からモデルを取得して予測を提供する。AWS Lambdaにはメモリとレイテンシー制限があるので、このデプロイ方式を利用すると最終的に決定する前に、このオプションを十分にテストすることをお勧めする。
・SageMaker Batch Transform:バッチ予測
データセット全体の予測値を取得する必要がある場合、SageMaker Batch Transformを使用できる。バッチ変換はリアルタイム性や低レイテンシーを必要としないような、こうスループットの予測に最適化している。SageMakerは指定された数のリソースを立ち上げ、S3データに対して大規模なバッチ予測を実行する。Jobが完了すると、SageMakerはデータをS3に書き込み、計算リソースを破棄します。
自動化された機械学習(AutoML)
特徴量選択やハイパーパラメータチューニング(HPT)などの定型的なライフサイクルフェーズに費やす時間を減らすことで、ドメイン固有の問題により多くの時間を費やすことができる。
Amazon SageMaker Autopilot
アルゴリズム:
ロジスティック回帰、線形回帰、XGBoost、ニューラルネットワークなどがある
各アルゴリズムに固有のモデルパイプラインのセットを実行するためのコードを生成する。
生成されたコードには、データ生成、モデル訓練、モデルチューニングが含まれる。
SageMaker Autopilotには透明性があり、生成されたコードに完全にアクセスして、自分で再現することができる。
生成されたパイプラインを並列に訓練・およびチューニングした後、訓練されたモデルを正確度、AUC、F1スコアなどの目的指標でランクづけする
Candidate Definitionノードブックには、与えられたデータセットを学習するのに最適なアルゴリズムと、データセットで使用する必要なコードと設定が示されている
SageMaker Experimentsを使用して、すべてのデータ分析、特徴量エンジニアリング、モデル訓練・チューニングジョブを追跡する。MLライフサイクルのすべてのフェーズでモデルのバージョン管理とリネージ追跡を可能にする。
Amazon AthenaとSageMaker Autopilotによる予測
サーバレスなので、実行するクエリのみに費用が発生する
SQLでAutoPilotなどが使用できる
Amazon Redshift MLとSageMaker Autopilotによる訓練と予測
TODO
- SageMaker AutoPilotによる実験の記録を確認
- SageMaker AutoPilot UIによる訓練とデプロイ
- SageMaker AutoPilot Python SDKによるモデルの訓練とデプロイ
※データ変換コンテナ→アルゴリズムコンテナ→逆ラベル変換器コンテナの 推論パイプラインを構成している
Amazon Comprehend
自然言語処理(NLP)タスクのためのフルマネージドAIサービスであり、AutoMLをしようしてデータセットに対する最適なモデルを見つけることができる
Amazon Comprehendの組み込みモデルによる予測
Amazon Comprehend UIによるカスタムモデルの訓練とデプロイ
Amazon Comprehend Python SDKによるカスタムモデルの訓練とデプロイ
【まとめ】
クラウドへのデータの取り込み
データレイク
機械学習・アナリティクス・構造化、半構造化、非構造化データ
データレイク構築手順
- ストレージのセットアップ
- データの移行
- データのクレンジング、準備、カタログ化
- セキュリティおよびコンプライアンスポリシーの策定と遵守
- データを分析で使えるようにする
Amazon Athenaを使ってAmazon S3データレイクにクエリを出す
AthenaテーブルとしてS3データを登録する
AWS Glue Crawlerを利用して新たなデータが到着するたびにAthenaテーブルを更新する
AWS Glue Crawlerを用いて新しいデータを継続的にとりこむ
Amazon AthenaとAmazon Redshiftのどちらを選択するか
AWSと機械学習パイプライン
データ取り込みとバージョン管理:S3とData Wrangler
データ分析と検証:SageMaker Studio Notebooks
特徴量選択とエンジニアリング:SageMaker Processsing Jobs
モデル訓練とチューニング:SageMaker TrainingとTuning
モデル分析とバージョン管理:S3とSageMaker Debugger
モデルデプロイと監視:SageMaker Endpointsとバッチ予測
効果的なMLパイプライン
・データ取り込み、データのバージョン管理、データの品質チェック、データの前処理、特徴量エンジニアリングなどのデータに焦点を当てたタスク
・モデルの訓練、モデルの品質チェック、モデルのバージョン管理などのモデルの構築タスク
・モデルデプロイの自動化、モデルのスケーリング、モデルの説明、バイアスの検出
・モデルの任意のバージョンに後戻りし、ゼロから再現することを可能にするための実験とリネージ追跡
・新しいデータが到着(S3のPutObjectイベント)すると自動的にピックアップし、再訓練する機構。あるいは、cronのようなタイマーを使用した自動化
・今後12か月間で顧客満足度を10%向上させるなど、ビジネス目標や重要な結果に応じてモデルを継続的に改善するためのフィードバック機構