試験直前チェック！AWS MLS試験で役立つSageMaker機能集

## はじめに
こんにちは、ほっそーです！
この記事は「ANGEL Dojo 2024 Advent Calendar」の19日目の記事としてお届けします。

先日、AWS Certified Machine Learning – Specialty（MLS）試験に無事合格しました！受験対策として残していたメモを基に、試験対策に役立つポイントを整理しました。特に、Amazon SageMakerに焦点を当ててみました。

これから受験を予定している方や、試験準備を進めている方にとって、少しでも参考になれば幸いです。

※ なお、本記事では、私が受験対策中にメモした内容を基にしており、一部の機能に限定した解説となることをご了承ください。

## 試験対策ポイントを4つのカテゴリに分類

Amazon SageMakerを理解するために、以下の4つのカテゴリに分けて整理しました。それぞれのカテゴリごとに、試験で問われる主要な機能の目的や概要、そして具体的な用途を紹介します。

1. **データ準備**  
   - 機械学習プロセスの基盤となるデータのクレンジングや特徴量の管理を効率的に行う方法。

2. **モデルのトレーニング**  
   - モデルの性能を最大化するためのトレーニング手法や、効率的にトレーニングを実施するための機能。

3. **モデルのデプロイ**  
   - トレーニング済みモデルを本番環境にデプロイし、実際に活用するためのプロセス。

4. **モデルの運用**  
   - 運用中のモデルを監視・最適化し、データドリフトやパフォーマンス低下に対応して、安定した稼働を実現する方法。

各カテゴリでSageMakerのどの機能をどのように活用するのかを、具体的に見ていきます。

## 1. データ準備
### **Amazon SageMaker Data Wrangler**
- **目的**: データの視覚化、クレンジング、変換など、機械学習モデルの準備に必要なデータ処理を簡略化するツール。
- **主な機能と用途**:
  - **視覚的なデータ分析**:
    - データの外れ値や異常値を簡単に検出可能。
    - グラフや統計値を活用して、データセットの傾向や問題点を直感的に把握。
  - **データ変換**:
    - データフローにカスタム変換を追加し、自動的に適用可能。
    - 通常のETLツールのように、欠損値処理、標準化、カテゴリカルデータのエンコーディングなどが容易。
  - **用途例**:
    - 機械学習モデルの事前処理。
    - 不完全なデータセットの補完や正規化。
    - データセットの探索的分析（EDA）。
    
https://aws.amazon.com/jp/sagemaker/data-wrangler/

### **SageMaker Ground Truth**
- **目的**: 機械学習用のトレーニングデータに対して、効率的で高精度なラベリング作業を提供するツール。
- **主な機能と用途**:
  - **組み込みタスクタイプ**:
    - **バウンディングボックスのアノテーション**:
      - 画像内の物体の位置を矩形で指定。
      - 自動ラベリング機能により、作業効率を向上。
  - **アノテーションインターフェイス**:
    - ラベラー向けに直感的で正確な操作を可能にするUI。
    - 高度なプレビュー機能でラベルの品質を管理。
  - **コスト最適化**:
    - Amazon Mechanical Turkや社内アノテーター、または外部ベンダーを組み合わせたラベリングでコスト効率を追求可能。
  - **用途例**:
    - 大規模なラベル付きデータの構築。
    - 時間のかかるラベル作業の効率化。

https://aws.amazon.com/jp/sagemaker/groundtruth/


### **SageMaker Feature Store**
- **目的**: 機械学習モデルの性能向上を目指し、特徴量（モデル入力データ）の管理、保存、共有を効率化するツール。
- **主な機能と用途**:
  - **特徴量の一元管理**:
    - オンライン推論とオフラインモデルのトレーニングで共通のデータを使用可能。
    - **整合性の保証**:
      - 特徴量のバージョン管理。
      - データアクセスの一貫性確保。
  - **API 機能**:
    - **GetRecord API**:
      - 特定の特徴量を素早く取得可能。
      - リアルタイム推論での利用に最適。
    - **PutRecord API**:
      - 新しい特徴量を即座に登録。
  - **用途例**:
    - ユーザーデータの管理とリアルタイム推論。
    - 特徴量エンジニアリングの再利用（他のプロジェクトやチームとの共有）。
    - 広告のターゲティングモデルや推薦システムの構築。

https://aws.amazon.com/jp/sagemaker/feature-store/

## 2. モデルのトレーニング
### **SageMakerのハイパーパラメーター調整ジョブ**
- **目的**: 機械学習モデルのトレーニング時に、最適なハイパーパラメーター（学習率、バッチサイズ、エポック数など）を効率的に見つけるためのプロセス。
- **主な機能と特徴**:
  - **自動チューニング**:
    - 1つのトレーニングジョブで、最小の計算時間で最良の結果を得るためのハイパーパラメーター探索を実行。
  - **ウォームスタート**:
    - 過去のハイパーパラメーター調整ジョブの結果を活用して、新たなジョブを効率的に実行。
    - 既存の知見を再利用することで、計算リソースを節約。
  - **ベイズ最適化**:
    - 最適なハイパーパラメーターを探索する効率的な手法。
    - 探索空間を狭めつつ高精度な結果を目指す。
  - **用途例**:
    - 画像分類モデルの最適化。
    - 時系列データ分析モデルの調整。

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/automatic-model-tuning-ex-tuning-job.html


### **自動モデル調整**
- **目的**: 不均衡データセットに対応し、モデルの性能を向上させる。
- **主な機能と特徴**:
  - **csv_weight / scale_pos_weightハイパーパラメーター調整**:
    - 不均衡データセット内の少数派クラスに対して適切な重み付けを適用。
    - モデルが少数派クラスの特徴を効率的に学習可能。

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/automatic-model-tuning.html


### **増分トレーニング**
- **目的**: 既存モデルを活用し、新たなデータセットを使ってモデル性能を向上させる。
- **主な機能と特徴**:
  - 以前トレーニングされたモデルの成果物を基に、追加データで再トレーニング。
  - データセットが段階的に拡張される状況で効率的にモデルを更新可能。
  - **用途例**:
    - 時系列データにおける定期的なモデル更新。
    - 継続的に新しいデータが追加される環境（例: IoTデバイスからのデータ収集）。

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/incremental-training.html

### **SageMaker Processing**
- **目的**: データの前処理、後処理、モデル評価を分散環境で効率的に実行。
- **主な機能と特徴**:
  - **データ前処理**:
    - 欠損値処理、データ正規化、カテゴリカルデータのエンコーディング。
  - **後処理**:
    - 推論結果の評価、分析レポートの作成。
  - **分散処理対応**:
    - スケーラブルな環境で大規模データセットの処理が可能。
  - **用途例**:
    - トレーニングデータのクリーニング。
    - モデルの性能評価と可視化。
    - 推論結果の後処理によるレポート作成。

https://aws.amazon.com/jp/blogs/news/amazon-sagemaker-processin-fully-managed-data-processing-and-model-evaluation/


## 3. モデルのデプロイ
### **SageMaker Pipeline**
- **目的**: 機械学習ワークフロー全体を自動化し、管理可能な形で構築・実行するためのCI/CDサービス。
- **主な機能と特徴**:
  - **ワークフロー管理**:
    - JSON形式のDAG（Directed Acyclic Graph）を使用して、各ステップ（データ準備、モデルトレーニング、評価、デプロイ）を定義。
    - 繰り返し使用可能なワークフローを構築可能。
  - **自動化**:
    - パイプラインのトリガー条件を設定し、新しいデータが到着した際に自動実行。
  - **用途例**:
    - 定期的なモデル更新プロセスの自動化。
    - トレーニングからデプロイまでの効率化。
    
https://aws.amazon.com/jp/sagemaker/pipelines/

### **SageMaker Model Monitor**
- **目的**: デプロイ済みモデルのパフォーマンスを継続的に監視し、異常検出時にアラートを発生させる。
- **主な機能と特徴**:
  - **データドリフト監視**:
    - 入力データの特徴がトレーニングデータと異なる場合に通知。
  - **モデルパフォーマンス監視**:
    - 予測精度やエラー率が低下した場合のトリガー設定が可能。
  - **用途例**:
    - 本番環境でのモデルパフォーマンスの自動監視。
    - データドリフトによるモデル劣化の早期検出。

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/model-monitor.html

#### **SageMaker Clarify**
- **目的**: データセットやモデルのバイアス検出および予測の説明可能性を提供する。
- **主な機能と特徴**:
  - **バイアス検出**:
    - トレーニングデータやモデル出力に潜むバイアスを特定。
  - **説明可能性**:
    - モデル予測における各特徴量の影響度を計算。
  - **用途例**:
    - 公平性が重要なモデル（採用、ローン審査）のバイアス分析。
    - モデルのブラックボックス化を防ぐための透明性確保。

https://aws.amazon.com/jp/sagemaker/clarify/


### **SageMaker Inference Recommender**
- **目的**: 機械学習モデルの推論ワークロードに最適なインスタンスタイプや構成を自動提案する。
- **主な機能と特徴**:
  - **負荷テストの自動化**:
    - 既知のトラフィックパターンを使用し、負荷テストを実施。
  - **インスタンス最適化**:
    - 推論コストを削減しながら、パフォーマンスを最大化する構成を提案。
  - **用途例**:
    - コスト効率の高い本番環境のインスタンス選定。
    - トラフィック増加時のスケールアップ計画。

https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender.html


### **SageMaker ライフサイクル設定**
- **目的**: ノートブックインスタンス起動時に自動で必要な初期設定やパッケージインストールを実行。
- **主な機能と特徴**:
  - **カスタムスクリプト実行**:
    - 必要なパッケージのインストールや環境変数の設定を自動化。
  - **環境整備の効率化**:
    - 手動作業を削減し、ノートブック起動後すぐに作業可能な状態を実現。
  - **用途例**:
    - 特定のライブラリ（TensorFlow、PyTorchなど）の自動インストール。
    - 社内標準環境のテンプレート化。
    
https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/notebook-lifecycle-config-create.html

## 4. モデルの運用
### SageMakerによるA/Bテストの実施

#### **UpdateEndpointWeightAndCapacities API**
- **目的**: SageMakerエンドポイント内で、各モデル（プロダクションバージョン）のトラフィックやリソースを動的に調整。
- **主な機能**:
  - **VariantName**（必須）: 対象モデルの名前を指定。
  - **DesiredWeight**（オプション）: トラフィックの割合を指定。
  - **DesiredInstanceCount**（オプション）: 割り当てるインスタンス数を指定。
- **用途例**:
  - 新旧モデルの性能を比較するA/Bテスト。
  - 一時的なトラフィック増加への柔軟な対応。
#### **バリアント**
- SageMakerエンドポイントにデプロイされる1つのモデルまたはその設定。
- **活用シナリオ**:
  - 複数モデルの同時デプロイと比較。
  - トラフィックの割合やリソースの動的なスケーリング。

https://aws.amazon.com/jp/blogs/news/a-b-testing-ml-models-in-production-using-amazon-sagemaker/

#### SageMaker Studio
- **目的**: 機械学習プロジェクト全体を一元管理する統合開発環境（IDE）。データ準備、トレーニング、デプロイ、運用を効率化。
- **主な機能**:
    - **統合環境**
        - 全プロセスを1つのインターフェイスで操作可能。リソースの動的スケーリングに対応。
    - **ノートブック管理**
        - スナップショット機能による復元。ノートブックの共有でコラボレーションを強化。
    - モデルとデータの管理
        - トレーニング結果の比較、運用中モデルの監視、パフォーマンス改善に対応。
- **用途例**:
    - 機械学習プロジェクトの統合管理。
    - チームでのコラボレーション

https://aws.amazon.com/jp/sagemaker/studio/

### **効率化とセキュリティ**
#### **ネットワーク分離**
- **目的**: 外部ネットワークへのアクセスを制限し、データの漏洩リスクを軽減。
- **用途例**:
  - 高度なセキュリティ要件が求められる環境。

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/mkt-algo-model-internet-free.html#mkt-algo-model-internet-free-isolation

#### **マネージドスポットトレーニング**
- オンデマンドより低コストでトレーニングを実行。
- **用途例**:
  - 予算が限られる環境でのトレーニングジョブ。

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/model-managed-spot-training.html

### **アルゴリズムと高度なモデル運用**
#### **SageMaker Neural Topic Model**
- **目的**: 未分類の大量テキストデータからトピックを自動的に特定。
- **用途例**:
  - 大規模な文書データセットの整理。

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/ntm.html

#### **SageMaker IP Insight**
- **目的**: ユーザーのログインデータを分析して異常検知。
- **用途例**:
  - 不正アクセス防止。

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/ip-insights.html

#### **SageMaker Object2Vec アルゴリズム**
- **目的**: 複数タイプのオブジェクトを数値表現（ベクトル）に変換。
- **用途例**:
  - 推薦システムでの類似性分析。

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/object2vec.html

#### **SageMaker Horovod**
- **目的**: 分散型深層学習の効率化。
- **用途例**:
  - 大規模データセットを用いたディープラーニング。

https://aws.amazon.com/jp/blogs/news/launching-tensorflow-distributed-training-easily-with-horovod-or-parameter-servers-in-amazon-sagemaker/

#### **推論パイプライン**
- **目的**: データの前処理、モデル推論、後処理を一連のステップとして実行可能。
- **用途例**:
  - 画像処理モデルの前処理と推論を一つのパイプラインで管理。

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/inference-pipelines.html

### **データ処理と入出力**
#### **Fast Fileモード**
- S3からデータをオンデマンドでストリーミング。
- **用途例**:
  - 大規模データセットの効率的な処理。

https://aws.amazon.com/jp/about-aws/whats-new/2021/10/amazon-sagemaker-fast-file-mode/


#### **SageMaker パイプモード**
- コンテナに直接データをストリーミング。
- **用途例**:
  - 高効率なデータ処理が求められる場合。

https://aws.amazon.com/jp/blogs/news/using-pipe-input-mode-for-amazon-sagemaker-algorithms/

### 最後に
AWS Certified Machine Learning – Specialty（MLS）は、機械学習に関する幅広い知識とAWSのサービスを活用するスキルが求められる試験です。今回の記事では、特にAmazon SageMakerに焦点を当てて、試験対策に役立つポイントを整理しました。

受験を控えている方や機械学習に興味を持つ方にとって、本記事が少しでも参考になれば幸いです。ぜひこの記事を活用し、試験合格を目指して頑張ってください！