ビジュアルなデータ準備ツールを選択する。
→MLに特化し、SageMaker Studio + フロー → Processing job → Pipeline → Notebookエクスポートと統合 → SageMaker Data Wrangler。再利用可能なレシピ、プロファイリングを備えた汎用データクリーンアップ、SageMakerに依存しない → AWS Glue DataBrew。カスタムコードを使用した50 TB以上のSpark → Amazon EMR。
理由: Data WranglerはSageMakerネイティブのオプション(300以上の変換、日付/時刻抽出、Pipeline/Processingへのエクスポート)。DataBrewはレシピベースでソースに依存しない。EMRは規模と任意のSparkに対応する。
リファレンス↗
アナリストとSageMakerがデータセットを発見できるように、S3、RDS、DynamoDBにわたるデータをカタログ化する。
→AWS Glue Crawlersは、スキーマとメタデータでAWS Glue Data Catalogを構築する。Athena、Redshift Spectrum、SageMakerがすべてこれを利用する。
リファレンス↗
データレイクで列レベルおよび行レベルのアクセス制御と監査ログが必要である。
→AWS Lake Formation。IAMおよびS3バケットポリシーでは、構造化データに対する列レベルの粒度を提供しない。
理由: Lake FormationはGlue Data Catalogのガバナンスを一元化し、監査のためにCloudTrailと統合する。
リファレンス↗
S3データに対して、何もプロビジョニングせずにアドホックSQLを実行する。
→Amazon Athena。サーバーレスで、スキャンされたTBごとに課金される。データをパーティション分割し、Parquetを使用してコストと時間を削減する。
リファレンス↗
既存のPySparkコードで50 TBの特徴量エンジニアリングを行う必要があり、4時間以内に完了する必要がある。
→Sparkを使用するAmazon EMR。調整可能なクラスターサイズ、Spotインスタンスのサポート、既存のコードを変更せずに実行できる。
理由: Glue ETLもSparkを実行するが、EMRはクラスターの形状に対してより多くの制御を提供する。SageMaker Processingは小規模な単一コンテナジョブ用である。
リファレンス↗
トレーニング前にカスタムのscikit-learn / pandas前処理スクリプトを実行する。一時的なコンピューティングで、アイドルコストなし。
→SKLearn(またはPySpark)コンテナを使用したSageMaker Processingジョブ。プロビジョニング、実行、終了を行う。
理由: ノートブック(起動し続け、コストがかかる)やLambda(15分制限、メモリ制限)で実行するよりも優れている。
リファレンス↗
10万枚の画像を費用対効果よくラベリングする — 人間と自動化されたラベリングを希望する。
→自動データラベリングが有効なAmazon SageMaker Ground Truth。最初の人間がラベリングしたサブセットの後、Ground Truthはモデルをトレーニングし、高信頼度のサンプルを自動ラベリングする。
理由: アクティブラーニングは通常、ラベリングコストを最大70%削減する。A2Iはモデル予測の人間によるレビュー用であり、大量ラベリング用ではない。
リファレンス↗
複数のアノテーターが意見を異にする。シニアレビューアがラベルのサンプルを検証する必要がある。
→Ground Truthラベル検証(監査)ワークフロー。ラベルのサブセットは、承認、却下、または調整を行うレビューワーカーにルーティングされる。複数のワーカーによる多数決のために、アノテーション統合と組み合わせる。
リファレンス↗
トレーニング時(バッチ)と推論時(10ミリ秒未満)で同じ設計された特徴量が必要である。
→オンラインストアとオフラインストアの両方が特徴量グループで有効になっているAmazon SageMaker Feature Store。オンラインストアはリアルタイムのGetRecordをサポートし、オフラインストア(S3内のParquet)はトレーニングをサポートする。
理由: カスタムのDynamoDB ↔ S3同期なしで、トレーニング/サービングスキューを排除する。
リファレンス↗
特徴量グループを定義する — 必須事項とは何か。
→レコード識別子名(レコードごとの一意のキー)とイベント時間特徴量名(ポイントインタイムクエリ用のタイムスタンプ)。
リファレンス↗
将来の特徴量値を漏洩させることなく、トレーニング用に2つの特徴量グループを結合する。
→イベント時間列を使用してオフラインストアに対してポイントインタイム結合を行う。各トレーニング行は、そのイベントタイムスタンプに存在した特徴量値のみを参照する。
理由: 最新値に対する単純なJOINは、イベント後の特徴量ドリフトをモデルに公開することにより、データ漏洩を引き起こす。
リファレンス↗
500 GBのデータセットにSageMakerトレーニングデータ入力モードを選択する。
→ファイルモード → データセット全体が最初にダウンロードされる(起動が遅い、EBSコスト)。パイプモード → S3からストリーミング、低起動時間、低ストレージ。FastFileモード → 遅延ファイルレベルストリーミング。大きなデータセットにはダウンロードを避けるためにパイプ(またはFastFile)を使用する。
リファレンス↗
数百万の小さなファイル(各約50 KB)がある場合、パイプモードのスループットが低い。
→Amazon RecordIO(protobuf)にバンドルし、パイプモードでストリーミングする。シーケンシャルレコードにより、ファイルごとのS3 GETオーバーヘッドがなくなる。
リファレンス↗
S3上のMLデータレイクで、頻繁な列サブセット読み取りとパーティションフィルタリングを伴うストレージ形式とレイアウトを選択する。
→最もフィルタリングされる列(例:日付やリージョン)でパーティション分割されたParquet(カラムナー、圧縮)。AthenaとSageMakerでの列プルーニングとパーティションプルーニングを促進する。
リファレンス↗
Glue ETLが実行のたびに既に処理済みのファイルを再処理する。
→Glueジョブブックマークを有効にする。失敗した実行がブックマークを進めないようにPAUSEオプションを使用し、必要なときにのみリセットする。
リファレンス↗
Glue ETLパイプライン内でスキーマ、型、値の範囲、NULL制約を検証する。
→DQDLルールを使用したAWS Glue Data Quality。チェックが失敗した場合、パイプラインを停止する。
リファレンス↗
カテゴリ特徴量をエンコードする。順序があるもの(Basic/Standard/Premium)と、ないもの(米国の州)がある。
→順序がある場合 → 順序エンコーディング(ランクを保持)。順序がない場合 → ワンホットエンコーディング(偽の順序性を回避)。順序のない特徴量へのラベルエンコーディングは避ける。ターゲットエンコーディングは、漏洩を避けるために注意深いCVが必要である。
数値列に、別の特徴量と相関する欠損値がある(例:収入の欠損が雇用タイプに依存する)。
→グループベースの中央値補完(雇用タイプ別の中央値)。関係性を保持する。平均は外れ値に敏感。欠損値の削除はデータを失う。ゼロはバイアスを追加する。
ポジティブクラスが0.3%の二値分類。
→トレーニングフォールドのみにSMOTEオーバーサンプリングを適用する(分割後)。精度ではなく、PRカーブ/F1評価と組み合わせる。
理由: 漏洩を避けるため、分割後にオーバーサンプリングを適用する。精度は不均衡データでは誤解を招く。
右に歪んだ数値特徴量(例:収入)が線形モデルのパフォーマンスを低下させる。
→対数変換。右側の裾を圧縮し、より対称的な分布を生成する。標準化/min-maxはスケールを変更するだけで、形状は変更しない。
相関の高い50個の特徴量がある。分散を保持しながら次元数を削減したい。
→PCA。相関のある特徴量を、分散によってランク付けされた無相関の主成分に変換する。
訓練/検証/テスト分割を選択する。
→不均衡分類 → 層化分割(クラス比率を保持)。時系列 → 時系列分割(初期期間で訓練、最新期間でテスト)。ランダムシャッフルはしない。IID表形式 → ランダム。