AWS の機械学習サービス SageMaker を実際に触ってみたので、その体験をまとめます。環境構築から学習・推論 API 化まで、一通り試せたので「これから SageMaker を触ってみたい人」向けに整理しておきます。
1. 準備
前提として AWS アカウントが作成済みであること。 まず必要なのは以下の3つ:
- S3 バケット:学習データやモデル成果物の置き場
- IAM ロール:SageMaker に権限を与える実行ロール(S3 / CloudWatch Logs 権限必須)
- SageMaker Studio:JupyterLab ベースの開発環境
Studio のドメインを作成して、ユーザープロファイルを「SageMakerExecutionRole」に紐づければ準備完了です。
2. ノートブックでセットアップ
Studio 内で JupyterLab を開き、Python ノートブックを作成。まずは環境確認:
import sagemaker, boto3
print("SageMaker SDK:", sagemaker.__version__)
print("Region:", boto3.Session().region_name)
print("Role:", sagemaker.get_execution_role())
ロールやリージョンが正しく表示されれば OK。
3. ダミーデータで学習
SageMaker には組み込みアルゴリズムがあり、今回は XGBoost を使用。XGBoost は表形式データに強い勾配ブースティング系のモデルで、Kaggle でも人気のアルゴリズムです。
- データを sklearn で作成し S3 にアップロード
- SageMaker 内蔵 XGBoost コンテナで学習ジョブを実行
- AUC ≈ 0.98 と高精度なモデルができました
学習コードの例:
estimator = Estimator(
image_uri=container,
role=role,
instance_count=1,
instance_type="ml.m5.large",
output_path=f"s3://{bucket}/{prefix}/output",
)
estimator.fit({"train": train_input, "validation": val_input})
4. 推論エンドポイントをデプロイ
学習済みモデルは簡単に API 化できます。
predictor = estimator.deploy(
initial_instance_count=1,
instance_type="ml.m5.large",
)
この時点で SageMaker が自動的に REST API を立ち上げてくれます。あとは predict()
で呼び出すだけ:
from sagemaker.serializers import CSVSerializer
predictor.serializer = CSVSerializer()
result = predictor.predict("0.2,0.8,0.5,...")
print(result)
出力は「クラス1である確率」。今回は 0.9997 という強気な予測結果が返ってきました。
5. エンドポイント削除(重要)
エンドポイントは起動しっぱなしだと課金が続くので、使い終わったら必ず削除します。
predictor.delete_endpoint()
6. エンドポイントへのアクセス方法
- SDK / boto3 で直接呼ぶ
- AWS CLI からテスト実行
- API Gateway + Lambda を挟んで外部公開(本番向け)
- Async Inference / Batch Transform で大規模推論も可能
まとめ
- SageMaker は 環境構築が楽(Studio + IAM ロールだけ)
- 内蔵アルゴリズム(XGBoost)で すぐに学習→API化 が体験できる
- 研究済みモデルも S3 に置けばすぐ推論に利用可能
- コスト管理のために「エンドポイント削除」は忘れずに
初めてでもChatGPTに質問しながら 1〜2時間で「学習から推論 API まで」一通り回せました。
昔はインフラやサーバーの構築から始める必要があり、セキュリティ要件も厳しく、専門的な知識がないと数日かけても動かないことがよくありました。それを思うと、ここまで簡単に試せるようになったのは本当に驚きです。
一方で、SageMaker のようなサーバーレス系サービスは Windows Server や Ubuntu に自前で環境を構築する場合と比べるとコストが高めになる傾向があります。そのため、インフラ系の知識が完全に不要になったわけではなく、今後も活かせる場面は残っていると感じました。
これからは PyTorch や TensorFlow の自作モデルも試してみたいと思います。