日時: 2021年 6月 15日 (火) 12:00 - 15:00
Twitter ハッシュタグ: #startupfm
Starup Solutions Architect
- @_hariby: 日本のスタートアップに対する AWS 導入支援、特に機械学習・量子コンピュータ担当をやっています。
- @eccyan: 複数企業のスタートアップを渡り歩き Startup SA としてジョイン。好きな筋トレはスクワットです!
- @spesnova: 大中小様々な企業を経て AWS にジョイン。ソリューションアーキテクトとして日本のスタートアップを支援。
- @nog: スタートアップ、メガベンチャー等でサーバサイド開発や技術責任者等を担当。好きなおにぎりは筋子です。
注: 内容・スケジュールについては変更される可能性がございます
Event Engine を利用します。ログイン URL (expired) を開いた後、登録時に記入したメールアドレスで認証を行って下さい。認証方法は Email One-Time Password (OTP) または Login with Amazon アカウント (AWS アカウントではない) が選択できます。
AWS マネージメントコンソールにログインし、SageMaker Studio (Oregon Region) を開いて下さい。その後、各自で SageMaker Studio のユーザーを作成します。Studio にログイン後、ハンズオンでは SageMaker JumpStart を利用します。
- Notebook1: Training and Hosting a PyTorch Model
- Amazon SageMaker で Python スクリプトを用いた機械学習モデルのトレーニング (40分)
- Amazon SageMaker で推論エンドポイントへのデプロイとアプリとの統合 (40分)
- Notebook2: How to Use Spot Training
- SageMaker Managed Spot Training によるコスト削減 (20分)
Notebook1: Training and Hosting a PyTorch Model
を使って Spot Training を試す場合、"SAVING AND LOADING A GENERAL CHECKPOINT IN PYTORCH" を参考に
cifar10.py
の各エポック後 (125行目) に checkpoint を保存するよう以下を追加:
torch.save({'epoch': epoch, 'model_state_dict': model.cpu().state_dict(), 'optimizer_state_dict': optimizer.state_dict(), 'loss': loss}, '/opt/ml/checkpoints/model.pth')
105行目以降 (epoch
の for loop が始まる前) に、保存済みの checkpoint があれば読み込むよう以下を追加:
try:
checkpoint = torch.load('/opt/ml/checkpoints/model.pth')
model.load_state_dict(checkpoint['model_state_dict'])
checkpoint_epoch = checkpoint['epoch'] + 1
except:
checkpoint_epoch = 0
ループを checkpoint_epoch
から始めるよう以下のように書き換え:
for epoch in range(checkpoint_epoch, args.epochs):
また、Notebook 上では Managed Spot Training を呼び出すよう以下の5行を PyTorch
estimator に追加:
use_spot_instances=use_spot_instances,
max_run=max_run,
max_wait=max_wait,
checkpoint_s3_uri=checkpoint_s3_uri,
checkpoint_local_path=checkpoint_local_path
更にその上にセルを追加し、パラメータを記載 (checkpoint_s3_uri
がトレーニングごとに変わるようにしています):
use_spot_instances = True
max_run = 3600
max_wait = 7200 if use_spot_instances else None
import uuid
checkpoint_suffix = str(uuid.uuid4())[:8]
checkpoint_s3_uri = (
"s3://{}/{}/artifacts/pytorch-checkpoint-{}/".format(bucket, prefix, checkpoint_suffix)
if use_spot_instances
else None
)
checkpoint_local_path='/opt/ml/checkpoints/'
を追記。
SageMaker SDK (sagemaker
) ではなく、AWS SDK (e.g. Python だと boto3
) を使って呼び出す方法について説明します。
SageMakerRuntime
クラスの invoke_endpoint()
を使います。EndpointName='pytorch-training-2021-06-15-XX-XX-XX-XX'
を作成済みのエンドポイント名に置き換えて以下を実行します。
from cifar_utils import classes, show_img, train_data_loader, test_data_loader
test_loader = test_data_loader()
import numpy as np
import torchvision, torch
# get some test images
dataiter = iter(test_loader)
images, labels = dataiter.next()
# print images, labels, and predictions
show_img(torchvision.utils.make_grid(images))
print('GroundTruth: ', ' '.join('%4s' % classes[labels[j]] for j in range(4)))
# invocation
import boto3
client = boto3.client('sagemaker-runtime')
response = client.invoke_endpoint(
EndpointName='pytorch-training-2021-06-15-XX-XX-XX-XX',
Body=json.dumps(images.numpy().tolist()),
ContentType='application/json')
outputs = response['Body'].read()
import torch
_, predicted = torch.max(torch.from_numpy(np.array(json.loads(outputs), dtype=np.float32)), 1)
print('Predicted: ', ' '.join('%4s' % classes[predicted[j]] for j in range(4)))
GitHub aws/amazon-sagemaker-examples リポジトリの中からいくつかサンプルノートブックを使ってデモをお見せします。
- SageMaker Data Wrangler (GUI でのデータ前処理) (5分)
- SageMaker Debugger (デバッグ [GitHub|local]・プロファイリング [GitHub|local] (5分)
- SageMaker Experiments (実験管理) [GitHub|local] (5分)
- SageMaker Feature Store [GitHub|local] (5分)
- MLOps のためのワークフロー・パイプライン自動化の選択肢 (20分)
- SageMaker Pipelines を SageMaekr Studio で説明
- AWS Step Functions Data Science SDK for Python
- Managed Workflow for Apache Airflow (MWAA)
- Q&A (20分)
- アンケート
URL(expired)
- SageMaker Python SDK について詳しく知りたい方は
- Documentation
- "Anatomy of Amazon SageMaker Python SDK" (AWS Dev Day 2020)
- "Git integration now available for the Amazon SageMaker Python SDK" (AWS ML Blog)
- SageMaker Managed Spot Training 最大実行時間
- SageMaker Document
- SageMaker Examples
- Julien Simon (ML エバンジェリスト @julsimon) によるデモ動画
- 全般的なアップデートについて
- "re:Cap for startups – AI/ML" (AWS Summit Online 2021)
- 事例
- 「日本のスタートアップにおける AI/ML 事例」 (AWS Startup ブログ)
- イベント