Amazon MLA-C01: データエンジニアリングと特徴量エンジニアリング — 学習ガイド
こちらの一部です: AWS Machine Learning Engineer Associate MLA-C01 — 学習ガイド. 検証済みの解答で練習: Amazon試験ハブ, または時間制限付き模擬試験に挑戦: ExamRoll.io.
コアコンセプト
MLのためのデータエンジニアリングとは、リーケージと運用負荷を最小限に抑えながら、モデルのトレーニングと推論のために再現可能で監査可能な入力を生成することです。その中核となるのは、一貫した取り込みセマンティクス(イベント時間、レコード識別子、スキーマ)、正規のメタデータカタログ、そしてモデルトレーニングのためのオフラインとリアルタイム推論のためのオンラインの両方で実行できる明確に定義された変換です。トレーニングデータセットと推論時に返されるオンライン特徴量の両方が、同じ変換コード(または同じFeature Storeのレコード定義)によって裏付けられるようにパイプラインを設計します。これにより、トレーニングとサービングのスキューを回避できます。時系列の問題では、各レコードのイベント時間を保持し、時間を意識した結合と分割を強制してラベルリーケージを防ぎます。SageMaker Feature Storeを使用する場合は、CreateFeatureGroupでRecordIdentifierFeatureNameとEventTimeFeatureNameを設定し、後続のトレーニングと推論で同一のキーが使用されるようにします。
特徴量エンジニアリングは、決定論的で再現可能な変換と、探索的な変換に分かれます。決定論的な変換には、補完、スケーリング、カテゴリカルエンコーディング、派生的な集約(ローリングカウント、時間ウィンドウ特徴量)などがあります。これらは、Glue ETL、SageMaker Processing、またはSageMaker Data Wranglerで実行でき、オフラインストアにチェックポイントされるコードとして実行します。高カーディナリティのカテゴリカル特徴量については、組み合わせ爆発を避けるために、単純なワンホットエンコーディングではなく、交差検証フォールドを用いたターゲットエンコーディングや、頻度/埋め込みベースの表現を選択することが推奨されます。数値特徴量については、本番環境での正規化がトレーニング時と一致するように、パイプラインに適した標準化(平均/分散)や、モデルアーティファクトにパラメータとして保存される分位点変換を選択することが推奨されます。
主要なサービスと設定
AWS Glueは、多くのMLパイプラインに対して、正規のETLおよびメタデータレイヤーを提供します。Glueクローラーを使用してS3およびJDBCソースのGlueデータカタログを生成し、その後、SparkベースのGlue ETLジョブまたはGlue Studioのビジュアルジョブを作成して、データのクレンジングと変換を行います。Glueジョブは、GlueVersion(例: 3.0)、WorkerType(G.1X, G.2X)、NumberOfWorkers、増分処理のためのJobBookmarks、そしてawswranglerやpydeequのようなライブラリを含めるための"–additional-python-modules"などのDefaultArgumentsで設定します。オンプレミスのMySQLからのデータ取り込みには、JDBC URLを持つGlue接続を確立し、GlueジョブまたはAWS DMSを使用してCDC(変更データキャプチャ)をS3のランディングゾーンにキャプチャします。DMSを使用する場合は、フルロード後にCDCを選択し、効率的なオフライン特徴量のためにS3のParquetをターゲットにします。
SageMaker Feature Storeは、大規模でも運用オーバーヘッドが低い、中央集権的な特徴量管理オプションです。CreateFeatureGroupには、FeatureDefinitions、RecordIdentifierFeatureName、EventTimeFeatureName、OnlineStoreConfig(EnableOnlineStore=TrueでDynamoDBバックの低レイテンシーストアを有効化)、そしてAthena/Glue経由でオフライン特徴量を公開するためのS3UriとDataCatalogConfigを持つOfflineStoreConfigが必要です。スループットに応じてBatchPutRecordまたはPutRecordでデータを取り込みます。その際、サービスにPutRecord権限を付与するFeatureGroupArnとRoleArnを含めます。オフラインストアはS3にParquetファイルを永続化し、Glueデータカタログと自動的に統合されるため、再現可能なトレーニングクエリが可能になります。リアルタイム特徴量にはオンラインストアに対してGetRecordを使用し、バルクでのトレーニング結合にはオフラインのS3 Parquetパスを使用することが推奨されます。
モデルガバナンスとデプロイメントワークフローには、SageMaker Model RegistryとSageMaker Pipelinesを使用します。トレーニング済みモデルをCreateModelPackageまたはPipelinesのRegisterModelステップで登録し、ModelApprovalStatusを"PendingManualApproval"に設定して手動の承認ゲートを強制します。PipelinesをAWS CodePipelineと統合するか、承認されたときにUpdateModelPackageを介してmodel_packageのバージョンを"Approved"に移行するカスタムLambdaを追加します。ドリフトとバイアスのモニタリングには、バイアス/ベースライン分析のためのSageMaker Clarifyと、継続的なデータ/ラベルドリフト検出のためのSageMaker Model Monitorを組み合わせます。オンデマンドのバイアス評価には、ClarifyProcessor(sagemaker.processing.ProcessingJob)を使用し、オフラインストアのParquetアーティファクトやModel Monitorによって収集されたストリーミングサンプルを対象とします。
設計パターンとトレードオフ
トレーニングのスループットと複雑な結合が重要な場合は、オフラインファーストのアーキテクチャを選択します。大規模なウィンドウ特徴量を集約し、S3 Parquet (Glue/EMR/Glue Sparkジョブ) に永続化し、それらをGlue Data Catalogでカタログ化し、S3のプレフィックスとオブジェクトバージョニングでデータセットをバージョニングします。このアプローチは、再現性とコスト効率の高いストレージを優先しますが、最新の特徴量を提供する際のレイテンシーが増加します。低レイテンシーの特徴量が必要な場合は、サブセットをFeature Store Online (DynamoDB) またはキャッシングレイヤーにミラーリングします。トレードオフとして、オンラインストアとオフラインストアの一貫性を保つための運用オーバーヘッドが発生します。Feature Store組み込みのBatchPutRecordパイプラインや、Feature Storeに書き込むKinesis Data Streams + Lambdaを介したストリーム取り込みを使用することで、オフラインの正規ビューを維持しつつ、ほぼリアルタイムの更新を実現できます。
反復的な実験と本番環境のスループットを比較すると、キャッシュを備えたSageMaker Pipelinesは顕著な利点をもたらします。パイプラインステップでCacheConfigを有効にすると、入力(パラメータ、データのチェックサム)が変更されていない場合に、計算負荷の高い変換やトレーニングステップさえもスキップされます。これにより、同一のコンピューティングを繰り返しプロビジョニングする場合と比較して、連続実行時の起動レイテンシーが削減されます。極めて低レイテンシーの推論のためには、コストと複雑さのトレードオフが発生します。マルチモデルエンドポイントやプロビジョニングされた同時実行数は、コールドスタートのばらつきを減らしますが、コストは増加します。Feature Storeオンラインと軽量なモデルコンテナを使用すると、リクエストごとのオーケストレーションが最小限に抑えられます。
アルゴリズムと前処理の選択にはトレードオフが存在します。組み込みのXGBoostは、表形式の不正検知タスクに優れており、リサンプリングなしでクラスの不均衡に対処するためのscale_pos_weightを提供するため、運用負荷が軽くなります。しかし、埋め込みを用いたディープモデルは、カーディナリティの高いカテゴリ変数をより適切に処理しますが、より多くのインフラストラクチャと特徴量パイプラインを必要とします。可能な限り自動化された変換を使用します。SageMaker Data WranglerとGlue DataBrewは、視覚的で再現可能な変換(欠損値補完、正規化、リサンプリング)を提供し、フローをスクリプトやFeature Storeにエクスポートできるため、エンジニアリング時間を短縮できます。
一般的な落とし穴と判断基準
よくある間違いは、トレーニングとサービングの変換を一致させないことです。オンラインの前処理がトレーニングと同一になるように、変換パラメータ(スケーラー、エンコーダー)をモデルと一緒に、またはFeature Storeに保存します。もう一つの落とし穴は、カーディナリティの高いカテゴリをワンホットエンコーディングすることで、特徴量の次元が過度に大きくなってしまうことです。埋め込み、ハッシュ化、またはターゲット頻度エンコーディングを優先し、それらを交差検証によるリーケージセーフな手順で検証してください。セキュリティ上の間違いもよくあります。機密性の高いS3データでトレーニングする場合、SSE-KMS (KmsKeyId) を強制し、S3バケットポリシーとIAMロール (sagemaker.amazonaws.com プリンシパル) でアクセスを制限し、データがパブリックインターネットを経由しないように、トレーニングジョブをS3 VPC Gatewayエンドポイントを持つVPC内に配置します。
Glueジョブ駆動のETLとSageMaker Processing/Data Wranglerのどちらを選択するかは、頻度と複雑さを評価して決定します。Glueは、多くのソースにまたがるスケジュール化されたスケーラブルなSpark ETLに最適化されており、Glue Data Catalogと統合されています。Data WranglerとSageMaker Processingは、迅速な実験やFeature Storeまたはトレーニングジョブへの直接エクスポートに適しています。異常検知には、ヘビーなML Opsを必要としない時系列データの自動的な統計的異常検知のためにAmazon Lookout for Metricsを使用しますが、ダッシュボードにメトリクスを供給できる、カスタマイズ可能でリネージを意識したデータ品質チェックのためには、Glueで実行されるDeequを選択します。
実践的な問題:ユースケースシナリオ
企業名:FinEdge
FinEdgeは、Amazon S3にある日次バッチトランザクションログと、オンプレミスのMySQLに保存されている顧客プロファイルからモデルをトレーニングする必要がある不正検知サービスを構築しています。データは暗号化され、分離されたままでなければなりません。モデルバージョンは本番デプロイ前に手動承認が必要です。モデルはオンデマンドのバイアスとドリフト評価ができなければなりません。推論には低レイテンシーな特徴量ルックアップが必要です。
取り込みと一元化:AWS DMSを使用して、オンプレミスのMySQLからS3ランディングゾーンへ、Parquetファイルとして初回フルロードとCDCレプリケーションを実行します。DMSにS3ターゲット設定を構成し、JDBCソースに対してSSLを確保します。Glue Crawlerを使用して、S3トランザクションログとDMS-parquetの顧客プロファイルの両方をGlue Data Catalogに登録します。Glueジョブのパラメータを設定します:GlueVersion 3.0、WorkerType G.2X、日々のボリュームに適したNumberOfWorkers、そして増分実行のためにJobBookmarksを有効にします。
特徴量エンジニアリングとストレージ:GlueでSpark変換を作成するか、SageMaker Data Wranglerを使用してインタラクティブな特徴量イテレーションとエクスポートを行います。決定論的な集計特徴量をParquetとしてS3に永続化し、CreateFeatureGroupでFeatureDefinitions、RecordIdentifierFeatureName=“transaction_id”、EventTimeFeatureName=“event_time”、EnableOnlineStore=Trueを指定したOnlineStoreConfig、そして正規のデータレイクを指すS3UriとGlueテーブルをリンクするためのDataCatalogConfigを持つOfflineStoreConfigを指定して、SageMaker Feature StoreのFeatureGroupを作成します。バルクロードにはBatchPutRecordを、トランザクショナルな更新にはPutRecordを介してデータを取り込みます。
トレーニングとモデルレジストリ:前処理、トレーニング、登録にはSageMaker Pipelinesを使用します。モデルをModelPackageGroupNameに登録し、ModelApprovalStatus=“PendingManualApproval"を設定するRegisterModelステップを含めます。AWS CodePipelineの手動承認アクションをフックするか、SageMaker APIのUpdateModelPackageを使用して、承認済みパッケージを"Approved"に移動します。クラスの不均衡に対しては、リサンプリングの複雑さを避けるために、ベースライン統計で計算されたクラス比率に基づいてXGBoostのハイパーパラメータ"scale_pos_weight"を設定します。
ガバナンス、モニタリング、オンデマンドチェック:SageMaker ClarifyでClarifyProcessorを使用してベースラインを作成し、バイアス指標を計算して、ベースラインをS3/FeatureStoreのオフラインストアに保存します。データ/特徴量のドリフトに対しては、CreateMonitoringScheduleでModel Monitorをデプロイします。オンデマンドのバイアスまたはドリフト評価のためには、ClarifyProcessorを実行するか、StartMonitoringScheduleをプログラムで実行して、最近キャプチャされたトラフィックまたはオンラインストアのスナップショットを分析します。モニタリングの出力をS3に保存し、QuickSightダッシュボードを介して異常を可視化します。SSE-KMSを使用してS3を保護し、最小権限のIAMロールでアクセスを制限し、トレーニングと推論をS3 VPCエンドポイントを持つVPC内に配置します。
AWSの論理的根拠:このアプローチは、Glue Data Catalogを介したスケーラブルで監査可能な取り込みとメタデータのためにGlueとDMSを使用します。オンライン/オフラインで一貫した特徴量と低レイテンシーなルックアップのためにSageMaker Feature Storeを使用します。最小限の運用オーバーヘッドと手動承認の組み込みサポートでモデルライフサイクルを制御するためにSageMaker PipelinesとModel Registryを使用します。オンデマンドおよび継続的なバイアス/ドリフト分析を提供するためにClarifyとModel Monitorを使用します。この組み合わせは、暗号化された分離(SSE-KMS、VPCエンドポイント)を維持し、取り込みと特徴量管理にマネージドサービスを使用することでエンジニアリング作業を削減し、再現可能で監査可能なMLアーティファクトを強制します。
すべてのドメイン · モデルのトレーニングとハイパーパラメータの最適化 →
これらの問題を練習する → · ExamRoll.ioで時間制限付き練習 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
試験に合格する →