概要
機械学習をビジネスに活用したいと考えたとき、モデルの構築からトレーニング、デプロイまでの一連のプロセスには多くのステップと専門知識が必要です。データの前処理、トレーニング用のインフラ構築、モデルのホスティングなど、それぞれを個別に管理するのは煩雑で時間がかかります。
Amazon SageMaker AI は、機械学習のワークフロー全体をカバーするフルマネージドサービスです。データの準備からモデルの構築・トレーニング・デプロイまでを一つのプラットフォームで完結でき、インフラの管理は AWS に任せることができます。
本記事では、SageMaker AI の基本的な概念を理解し、SageMaker Studio のノートブックを使って組み込みアルゴリズムによるモデルのトレーニングとエンドポイントへのデプロイを体験します。

クラウドおさる弊猿はこの記事で、データを S3 に置くところから、学習したモデルに予測させるところまでを一気に通してみるでござる。機械学習の流れを、手を動かして掴むのでござるよ。
この記事のメリット
- Amazon SageMaker AI の主要コンポーネント(Studio、ノートブック、トレーニングジョブ、エンドポイント)の役割を理解できる
- SageMaker Studio の環境セットアップからノートブックの起動までの手順を習得できる
- 組み込みアルゴリズム(XGBoost)を使ったモデルのトレーニングを体験できる
- トレーニング済みモデルをリアルタイム推論エンドポイントにデプロイし、推論リクエストを送信できる
- 機械学習のワークフロー全体を AWS 上で実行する流れを把握できる
執筆者とキャラクター紹介
執筆者:土肥(とひ)
株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。


クラウドおさる



はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。



基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。



猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。
技術解説
Amazon SageMaker AI とは



とひさん、Amazon SageMaker AI とはどんなサービスでござるか?機械学習と聞くと、弊猿はどうも身構えてしまうでござる…。
SageMaker AI は、機械学習モデルの構築・トレーニング・デプロイを行うためのフルマネージドサービスだよ。機械学習に必要なインフラの構築や管理は AWS がやってくれるから、開発者はモデルの開発やビジネスロジックに集中できるんだ。



インフラを気にしなくてよいのは助かるでござるな。具体的には、どんな場面で使われるのでござる?
主なユースケースはこんな感じだよ。
- 需要予測や異常検知などのビジネス向け機械学習モデルの構築
- 画像認識や自然言語処理モデルの開発とデプロイ
- 大規模データを使った分散トレーニング
- MLOps パイプラインの構築と運用



ずいぶん幅広いでござる。猿山でも「来月のバナナの収穫量を当てたい」と長老会が言っておったが、まず SageMaker AI を考えればよいでござるか?
そうだね。AWS 上で機械学習をやるなら、SageMaker AI がまず選択肢に挙がるサービスだよ。データの準備からデプロイまで一つのプラットフォームで完結できるのが強みなんだ。
主要コンポーネント



SageMaker AI の中身は、どんな部品でできているのでござる?
SageMaker AI は複数のコンポーネントで構成されているよ。今回使う主要なものを表にまとめるとこうなるんだ。
| コンポーネント | 説明 |
|---|---|
| SageMaker Studio | 機械学習開発のための統合開発環境(IDE) |
| SageMaker ノートブック | Jupyter ノートブック環境。データの探索やモデルの構築に使用 |
| トレーニングジョブ | モデルのトレーニングを実行するマネージドジョブ。専用のインスタンスで実行される |
| モデル | トレーニング済みのモデルアーティファクト。S3 に保存される |
| エンドポイント | トレーニング済みモデルをホストし、リアルタイム推論を提供する |



Studio でコードを書き、トレーニングジョブで学習し、できたモデルをエンドポイントで公開する…という流れでござるか?猿山なら、修行場で鍛えた若猿を見張り台に立たせるようなものでござるな。
そのとおり!全体の流れをざっくり掴めているね。コンポーネント同士がうまく連携して、一連のワークフローを構成しているんだよ。


SageMaker Studio



SageMaker Studio というのは、普通のエディタと何が違うのでござるか?
SageMaker Studio は、機械学習のための統合開発環境なんだ。ノートブックの作成・実行はもちろん、トレーニングジョブの管理やエンドポイントの監視まで、機械学習ワークフローの各ステップを一つの画面から操作できるのが特徴だよ。



使い始めるには、どうすればよいでござる?
まず SageMaker ドメインを作成する必要があるんだ。ドメインはユーザー管理やストレージ、ネットワーク設定を管理する単位で、これを作ることで Studio が使えるようになるよ。



なるほど、ドメインが Studio の土台なのでござるな。猿山でいえば、まず縄張りを決めてから、そこに猿ごとの寝床を割り当てるのと同じでござる。
組み込みアルゴリズム



機械学習は、アルゴリズムを自分で書かねばならぬ印象があるでござる。SageMaker AI だとどうなのでござるか?
SageMaker AI には、一般的な機械学習タスクに対応した組み込みアルゴリズムが用意されているんだ。自分でアルゴリズムを実装しなくても、データを用意するだけでトレーニングを開始できるよ。



それは便利でござるな!今回はどのアルゴリズムを使うのでござる?
今回は XGBoost を使うよ。XGBoost は勾配ブースティングに基づく汎用的なアルゴリズムで、分類や回帰の問題に広く使われているんだ。組み込みアルゴリズムの中でも定番の一つだね。



データを用意するだけでよいなら、ずいぶん気が楽になったでござる。猿山の料理当番も、レシピが決まっていればバナナを並べるだけで済むのでござるよ。
トレーニングとデプロイの流れ



実際に SageMaker AI でモデルを作るときは、どういう順番で進めるのでござるか?
基本的な流れは 5 つのステップになるよ。
- データの準備: トレーニングデータを S3 にアップロードする
- トレーニングジョブの実行: アルゴリズムとハイパーパラメータを指定してトレーニングを開始する。SageMaker がトレーニング用インスタンスを自動でプロビジョニングし、完了後に自動で終了する
- モデルの作成: トレーニング済みのモデルアーティファクトが S3 に保存される
- エンドポイントのデプロイ: モデルをリアルタイム推論エンドポイントにデプロイする
- 推論の実行: エンドポイントにリクエストを送信して予測結果を取得する



トレーニング用のインスタンスが自動で起動し、終わったら自動で消える、と。修行の間だけ道場を借りるようなもので、バナナが無駄に飛ばずに済むでござるな。
そうなんだ。トレーニングジョブのインスタンスは学習が終われば止まるから、学習の分は動いていた間だけの課金で済むよ。ただし、デプロイしたエンドポイントは別で、削除するまで料金がかかり続けるんだ。そこだけは覚えておいてね。では、実際にこの流れを体験してみよう!
実践
前提条件
- リージョン:
ap-northeast-1(東京) - IAM ユーザーまたはロールに SageMaker、S3、IAM の操作権限があること
作成するリソース一覧
| リソース種別 | リソース名 | 用途 |
|---|---|---|
| SageMaker ドメイン | QuickSetupDomain-<日時>(自動命名) | SageMaker Studio 環境 |
| SageMaker ユーザープロファイル | default-<日時>(自動命名) | Studio にログインするユーザー |
| IAM ロール | AmazonSageMaker-ExecutionRole-<日時>(自動作成) | トレーニングジョブやエンドポイントの実行用 |
| JupyterLab スペース | basic-notebook | ノートブックを動かす環境 |
| S3 バケット | sagemaker-ap-northeast-1-<アカウントID>(自動作成) | トレーニングデータとモデルの保存先 |
| SageMaker エンドポイント | xgboost-basic-endpoint | リアルタイム推論用 |
ステップ1: SageMaker ドメインの作成
- AWS マネジメントコンソールにログインし、リージョンが
ap-northeast-1(東京)であることを確認します - 上部の検索バーに
SageMakerと入力し、表示された「Amazon SageMaker」を選択します - 左側ナビゲーションの「Environment configuration」→「ドメイン」を選択します
- 「ドメインを作成」をクリックします
- 「シングルユーザー向けの設定 (クイックセットアップ)」を選択し、「設定」をクリックします


- クイックセットアップでは、ドメイン名・ユーザープロファイル名・実行ロールの入力はありません。ドメイン(
QuickSetupDomain-<日時>)、ユーザープロファイル(default-<日時>)、AmazonSageMakerFullAccessポリシーが付いた実行ロール(AmazonSageMaker-ExecutionRole-<日時>)が自動で作られます - 1 分ほどでドメインの作成が完了します。「ドメイン」の一覧でステータスが「InService」になっていれば完了です


ステップ2: SageMaker Studio の起動
- ドメインの作成が終わると、SageMaker Studio が新しいタブで自動的に開きます。開かなかった場合は、ドメイン一覧の「Studio を開く」をクリックします
- 初回はツアーの案内(Welcome)が表示されるので、「Skip Tour」で閉じます
- SageMaker Studio のホーム画面が表示されます(画面は英語です)


ステップ3: ノートブックの作成とデータの準備
- SageMaker Studio のホーム画面で、アプリケーションの「JupyterLab」を選択します
- 「Create JupyterLab space」をクリックします
- 名前に
basic-notebookと入力し、共有の設定は「Private」のまま「Create space」をクリックします - スペースの詳細画面に切り替わります。インスタンスはデフォルト(
ml.t3.medium)のまま「Run space」をクリックします - ステータスが「Running」になったら「Open JupyterLab」をクリックします。JupyterLab が新しいタブで開きます
- 開いたときに表示される通知やチャットのパネルは閉じてかまいません。ランチャーの「Notebook」から「Python 3 (ipykernel)」を選択し、ノートブックを新規作成します


- JupyterLab にあらかじめ入っている SageMaker Python SDK は v3 系で、この記事のコード(v2 の書き方)はそのままでは
ImportErrorになります。最初のセルで次のコマンドを実行して v2 を入れ、メニューの「Kernel」→「Restart Kernel」でカーネルを再起動します。依存関係の警告が表示されますが、動作には影響ありません
%pip install "sagemaker<3"- カーネルを再起動したら、次のセルに以下のコードを入力し、実行します(Shift + Enter)。このコードはセッションと実行ロールを取得し、データの保存先にする既定の S3 バケット(
sagemaker-ap-northeast-1-<アカウントID>。無ければ自動で作成されます)を確認します
import sagemaker
import boto3
import numpy as np
import pandas as pd
from sagemaker import Session
# セッションとリージョンの設定
session = sagemaker.Session()
bucket = session.default_bucket()
role = sagemaker.get_execution_role()
region = boto3.Session().region_name
print(f"S3 バケット: {bucket}")
print(f"実行ロール: {role}")
print(f"リージョン: {region}")- 次のセルに以下のコードを入力して実行します。サンプルデータを生成し、S3 にアップロードします
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
# サンプルデータの生成(二値分類)
X, y = make_classification(
n_samples=1000,
n_features=10,
n_informative=5,
n_redundant=2,
random_state=42
)
# トレーニングデータとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# XGBoost 用の CSV 形式(1列目がラベル)
train_data = np.column_stack([y_train, X_train])
test_data = np.column_stack([y_test, X_test])
# CSV ファイルとして保存
pd.DataFrame(train_data).to_csv("train.csv", header=False, index=False)
pd.DataFrame(test_data).to_csv("test.csv", header=False, index=False)
# S3 にアップロード
prefix = "sagemaker-basic-xgboost"
train_path = session.upload_data("train.csv", bucket=bucket, key_prefix=f"{prefix}/train")
test_path = session.upload_data("test.csv", bucket=bucket, key_prefix=f"{prefix}/test")
print(f"トレーニングデータ: {train_path}")
print(f"テストデータ: {test_path}")

ステップ4: トレーニングジョブの実行
- 次のセルに以下のコードを入力して実行します。XGBoost の組み込みアルゴリズムを使ってトレーニングジョブを開始します
from sagemaker.inputs import TrainingInput
# XGBoost コンテナイメージの取得
container = sagemaker.image_uris.retrieve("xgboost", region, version="1.7-1")
# Estimator の設定
xgb = sagemaker.estimator.Estimator(
image_uri=container,
role=role,
instance_count=1,
instance_type="ml.m5.large",
output_path=f"s3://{bucket}/{prefix}/output",
sagemaker_session=session,
)
# ハイパーパラメータの設定
xgb.set_hyperparameters(
objective="binary:logistic",
num_round=100,
max_depth=5,
eta=0.2,
)
# トレーニングデータの指定
train_input = TrainingInput(
s3_data=train_path,
content_type="text/csv",
)
# トレーニングジョブの開始
xgb.fit({"train": train_input})- トレーニングジョブが開始されると、ログがセルの出力に表示されます。完了までに数分かかります


- SageMaker コンソールでもトレーニングジョブの状態を確認できます。左側ナビゲーションの「Model training & customization」→「Training & tuning jobs」を選択すると、実行したジョブの一覧が表示されます





ノートブックの fit() 1 行で、トレーニングジョブがコンソールにも 1 件残ったでござるな。学習は専用のインスタンスで走り、できたモデルは S3 に置かれるのでござる。
ステップ5: モデルのデプロイ
- ノートブックに戻り、次のセルに以下のコードを入力して実行します。トレーニング済みモデルをリアルタイム推論エンドポイントにデプロイします
# エンドポイントへのデプロイ
predictor = xgb.deploy(
initial_instance_count=1,
instance_type="ml.m5.large",
endpoint_name="xgboost-basic-endpoint",
)
print("エンドポイントのデプロイが完了しました")- デプロイが完了するまで数分待ちます
- SageMaker コンソールの左側ナビゲーションの「Deployments & inference」→「エンドポイント」を選択すると、作成したエンドポイントが表示されます


ステップ6: 推論の実行
- ノートブックで次のセルに以下のコードを入力して実行します。デプロイしたエンドポイントに推論リクエストを送信します
from sagemaker.serializers import CSVSerializer
# シリアライザーの設定
predictor.serializer = CSVSerializer()
# テストデータから数件を使って推論
test_samples = X_test[:5]
predictions = predictor.predict(test_samples)
print("予測結果:")
print(predictions.decode("utf-8"))
print("\n実際のラベル:")
print(y_test[:5])

- 出力された予測結果は 0 から 1 の間の確率値です。0.5 以上であればクラス 1、0.5 未満であればクラス 0 と判定します
- 実際のラベルと比較することで、モデルの予測精度を確認できます



データの準備 → トレーニング → デプロイ → 推論、技術解説の 5 つのステップを全部通したでござる。エンドポイントは呼べばすぐ答える見張り台、トレーニングジョブは終われば片付く道場、と分けて覚えるとよいでござるぞ。
まとめ
- Amazon SageMaker AI は、機械学習モデルの構築・トレーニング・デプロイを一つのプラットフォームで完結できるフルマネージドサービスです
- SageMaker Studio は機械学習開発のための統合開発環境であり、ドメインを作成することで利用を開始できます
- 組み込みアルゴリズム(XGBoost 等)を使えば、アルゴリズムの実装なしにデータを用意するだけでモデルのトレーニングが可能です
- トレーニングジョブ はマネージドで実行され、トレーニング用インスタンスのプロビジョニングと終了は自動で行われます
- トレーニング済みモデルは リアルタイム推論エンドポイント にデプロイして、即座に推論リクエストを処理できます
- SageMaker AI を利用することで、インフラ管理の負担を軽減し、モデルの開発とビジネス課題の解決に集中できます
参照先
- Amazon SageMaker AI とは – Amazon SageMaker AI
- Amazon SageMaker Studio – Amazon SageMaker AI
- 組み込みアルゴリズムを使用する – Amazon SageMaker AI
- XGBoost アルゴリズム – Amazon SageMaker AI
- リアルタイム推論 – Amazon SageMaker AI
- エンドポイントとリソースを削除する – Amazon SageMaker AI














