Amazon SageMaker

# 1. Amazon SageMakerとは

**Amazon SageMaker**は、AWSが提供する**エンドツーエンドの機械学習（ML）開発プラットフォーム**です。  
データ準備からモデルの構築・トレーニング・デプロイ・運用監視まで、**すべてAWS環境内で完結**できます。

> ※2024年12月3日より「SageMaker AI」に改称されましたが、2025年3月時点のAWS認定試験では依然として「SageMaker」という名称が使われている可能性があります。

---

# 2. 一般的なワークフロー

### 2.1. SageMaker Studioを起動する
AWSマネジメントコンソールから「SageMaker」を選択し、統合開発環境（IDE）である**SageMaker Studio**を起動します。

### 2.2. データを準備する
学習データは主に**Amazon S3**に保存し、SageMakerから取り込みます。  
取り込みモードによるパフォーマンスの違いに注意が必要です。

- **Pipe**：ストリーミング方式。低レイテンシ・高速処理向き。
- **File**：標準的なファイル読み込み方式。
- **FastFile**：Pipeよりさらに高速な最新方式。

### 2.3. ノートブック環境でコーディングする
SageMaker Studio内の**Jupyterベースノートブック**で、データ処理・モデル構築・トレーニングコードを記述します。

### 2.4. トレーニングジョブを実行する
定義したトレーニングジョブをSageMaker上で実行し、必要に応じてインスタンスタイプや分散学習を選択できます。

### 2.5. モデルをホスティング（デプロイ）する
完成したモデルを**エンドポイント**としてデプロイし、推論推論を実施します。


### 2.6. 推論処理（Inference）
モデルをエンドポイントにデプロイした後は、推論(Inference)によって新しい入力データに対する予測や分類を行います。

#### リアルタイム推論（Real-time Inference）
　エンドポイントにHTTPリクエストを送信し、即座にレスポンスとして推論結果を取得する方式。REST APIを通じてAmazon SageMaker Runtime経由で行います。
 用途例：チャットボット、詐欺検出など即時性が重要な場面。

#### バッチ推論（Batch Transform）
　あらかじめS3にアップロードされた大量データに対して、非同期で推論を行う方式。エンドポイントは不要で、コスト効率に優れます。用途例：レコメンド生成、顧客スコアリングなど。

推論処理では、モデルに合わせて前処理・後処理が必要になることがあります。たとえばテキストモデルであれば、トークナイズやTF-IDF変換、画像モデルでは正規化やリサイズ処理が必要です。

また、SageMakerではマルチモデルエンドポイントを使うことで、1つのエンドポイント上で複数モデルを動的に切り替えることも可能です（例：ユーザーごとの専用モデル切り替えなど）。

---

# 3. SageMakerの主要機能


| 機能名                                   | 概要                  | Studio依存                            |
| ------------------------------------- | ------------------- | ----------------------------------- |
| **3.1. SageMaker Managed Warm Pools** | トレーニングインスタンスの事前起動保持 | ❌ 不要                                |
| **3.2. SageMaker Canvas**             | ノーコードでのML構築ツール      | ✅ 必須（Canvas専用UI）                    |
| **3.3. SageMaker Clarify**            | バイアス検出と説明可能性分析      | ❌ 不要（SDKで利用可）                       |
| **3.4. SageMaker Feature Store**      | 特徴量の保存と共有           | ❌ 不要（ただしStudioでのGUI表示は便利）           |
| **3.5. SageMaker JumpStart**          | 事前学習済みモデルのテンプレート群   | ✅ 必須（StudioのGUI上のみ）                 |
| **3.6. SageMaker Model Cards**        | モデルのドキュメントテンプレート    | ✅ StudioからのGUI操作が基本（SDKでも可）         |
| **3.7. SageMaker Neo**                | モデルのクロスコンパイル        | ❌ 不要                                |
| **3.8. SageMaker Pipelines**          | ワークフロー自動化           | ✅ Studio推奨（SDK単独でも利用可だがUIはStudio限定） |
| **3.9. SageMaker with TensorBoard**   | トレーニング中の可視化         | ✅ Studioに統合されている                    |
| **3.10. SageMaker Data Wrangler**     | GUIによる前処理パイプライン構築   | ✅ 必須（Studio専用）                      |


## 3.1. SageMaker Managed Warm Pools
トレーニング後のインフラを保持し、再利用することで次回トレーニングの**起動レイテンシーを削減**できます。
**反復実験やパラメータチューニング時に有効**。

## 3.2. SageMaker Canvas
コード不要で機械学習モデルを作成・予測できる**ノーコードツール**。
主に**非エンジニア向け**。

## 3.3. SageMaker Clarify
データやモデルの**潜在的バイアス検出**と **説明可能性評価（Explainability）** をサポートします。
**バイアス対策や監査対応**に必須。

## 3.4. SageMaker Feature Store
**特徴量データ** を保存・管理・共有できるサービス。
**オンラインストア（リアルタイム推論用）** と **オフラインストア（バッチ学習用** を区別して使用します。

## 3.5. SageMaker JumpStart
事前学習済みモデルやテンプレートソリューションをすぐに利用できる。
**内部ではSageMakerインスタンスを使用**するため、**サーバーレスではない**点に注意。

## 3.6. SageMaker Model Cards
モデルの目的・使用データ・リスクなどを記述する**ドキュメントテンプレート**を提供。
モデルガバナンスや説明責任が求められる場面で有効。

## 3.7. SageMaker Neo
一度学習したモデルを、どこでも超高速に動かすためにコンパイルするサービス。

## 3.8. SageMaker Pipelines
データ前処理、トレーニング、デプロイなどMLワークフローを**一連のパイプラインとして自動化**します。
**CSV, JSON, Parquet**など、複数のデータ形式に対応。

## 3.9. SageMaker with TensorBoard
トレーニング過程の**可視化とデバッグ**を支援。
ただし、**自動で異常検知や最適化を行う機能はない**点に注意。

## 3.10. SageMaker Data Wrangler
GUIベースで**データ前処理・特徴量エンジニアリング**を効率化できる。
特に大量の特徴量作成や前処理パイプライン構築など<font color="red"> **重いGUI系**</font> に用いる。

### 【Data WranglerでTF-IDFを適用する例】

1. データインポート：Amazon S3からレビューや売上データを取り込む。
2. 特徴量化：Data Wranglerの「変換」機能でTF-IDFを適用。
3. エクスポート：前処理後のデータをSageMakerトレーニング用に保存。

---

# 4. SageMaker組み込みアルゴリズム




| カテゴリ     | モデル名                  | 概要                                                                 | AWS固有 |
|--------------|---------------------------|----------------------------------------------------------------------|--------|
| **表形式**   | 線形学習器(Linear Learner)          | 線形回帰・ロジスティック回帰・多クラス分類・回帰に対応。                    | ❌     |
|              | XGBoost                   | 勾配ブースティングによる高精度な分類・回帰タスク向けモデル。                  | ❌     |
|              | **<font color="red">因数分解機</font>(Factorization Machines)**      | 特徴間の相互作用を学習可能な疎データ向けモデル。レコメンドに有効。           | ❌     |
| **テキスト** | Seq2Seq                   | 入力と出力がともにトークン列の教師あり生成モデル（翻訳・要約など）。           | ❌     |
|              | BlazingText               | 高速なテキスト分類・word2vec埋め込み（fastTextベースのSageMaker版）。 正解ラベルありの分類タスクに向いてる。        | ✅     |
| **時系列**   | DeepAR                    | RNN（LSTM）ベースの時系列予測モデル。将来の確率分布を予測。                  | ✅     |
| **教師なし** | k-means                   | 非階層クラスタリング。特徴空間に基づきグルーピングを行う教師なし学習手法。     | ❌     |


---
# 5.variant

エンドポイントに対して複数のモデルを同時にデプロイしたいときに使います。
特に Amazon SageMaker の ProductionVariant パラメータが該当します。

---
# 6.Horovod

Amazon SageMaker の Horovod またはパラメータサーバーでTensorFlow 分散トレーニングを簡単に起動できます。

---

# 7.CloudTrailとの連携

Amazon SageMaker はAWS CloudTrailと統合されていて、APIコールをログに記録するためにLambdaを必要としません。

---

# 8.参考リンク
- [Amazon SageMaker 公式ドキュメント](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html)