Amazon Web Services ブログ
Amazon SageMaker のアップデート、東京リージョン、CloudFormation、Chainer、GreenGrass ML
本日、東京での AWS Summit で、Amazon SageMaker の多数のアップデートや新機能が発表されました。本日より、SageMaker が アジアパシフィック (東京) で利用可能になります!また、SageMaker は CloudFormation もサポートします。SageMaker Python SDK では、MXNet および Tensorflow に加えて、機械学習の新しいフレームワークである Chainer も利用できます。最後に、いくつかのデバイスでの Chainer モデルの実行に対するサポートが AWS Greengrass Machine Learning に追加されました。
Amazon SageMaker Chainer エスティメーター
Chainer は、定評がある、柔軟で直感的な深層学習のフレームワークです。Chainer ネットワークは、ネットワークトポロジが順方向計算によって動的に定義される「Define-by-Run」スキームで動作します。これは、ネットワークのトポロジがデータとは別に定義される「定義と実行」スキームで動作する他の多くのフレームワークとは対照的です。多くの開発者は、ネイティブの Python の構造やツールでネットワークを書くことができるので、Chainer スキームを重宝しています。
幸いなことに、SageMaker で Chainer を使用することは、TensorFlow または MXNet のエスティメーターを使用するのと同じくらい簡単です実際には、既存のスクリプトを使用して、少し修正するだけで SageMaker でトレーニングすることができるので、さらに簡単かもしれません。TensorFlow または MXNet を使用する場合には、特定の署名を持つトレーニング機能を実装する必要があります。Chainer を使用する場合は、 SM_MODEL_DIR
、 SM_NUM_GPUS
、その他の環境変数から簡単に読み込めるので、スクリプトはより移植しやすくなります。既存のスクリプトを、 if __name__ == '__main__':
のガードでラッピングして、ローカルまたは sagemaker で呼び出すことができます。
import argparse
import os
if __name__ =='__main__':
parser = argparse.ArgumentParser()
# hyperparameters sent by the client are passed as command-line arguments to the script.
parser.add_argument('--epochs', type=int, default=10)
parser.add_argument('--batch-size', type=int, default=64)
parser.add_argument('--learning-rate', type=float, default=0.05)
# Data, model, and output directories
parser.add_argument('--output-data-dir', type=str, default=os.environ['SM_OUTPUT_DATA_DIR'])
parser.add_argument('--model-dir', type=str, default=os.environ['SM_MODEL_DIR'])
parser.add_argument('--train', type=str, default=os.environ['SM_CHANNEL_TRAIN'])
parser.add_argument('--test', type=str, default=os.environ['SM_CHANNEL_TEST'])
args, _ = parser.parse_known_args()
# ... load from args.train and args.test, train a model, write model to args.model_dir.
次に、そのスクリプトをローカルで実行するか、SageMaker Python SDK を使用して SageMaker の一部の GPU インスタンスで起動することができます。ハイパーパラメータは CLI コマンドとしてスクリプトに渡され、上記の環境変数は自動集計されます。fit を呼び出すと、渡される入力チャネルに SM_CHANNEL_*
環境変数が設定されます。
from sagemaker.chainer.estimator import Chainer
# Create my estimator
chainer_estimator = Chainer(
entry_point='example.py',
train_instance_count=1,
train_instance_type='ml.p3.2xlarge',
hyperparameters={'epochs': 10, 'batch-size': 64}
)
# Train my estimator
chainer_estimator.fit({'train': train_input, 'test': test_input})
# Deploy my estimator to a SageMaker Endpoint and get a Predictor
predictor = chainer_estimator.deploy(
instance_type="ml.m4.xlarge",
initial_instance_count=1
)
ここで、Chainer でのトレーニングおよびホスティングのために独自の docker コンテナを用意する代わりに、スクリプトをそのまま使うことができます。完全な sagemaker-chainer-containers は github で確認できます。新しいコンテナで私が気に入っている機能の 1 つは、chainer トレーニングジョブのマルチノード配布を容易にする組み込みの chainermn です。
README とサンプルノートブックの両方に、より多くのドキュメントと情報があります。
AWS GreenGrass ML と Chainer
AWS GreenGrass ML には、Intel Atomを搭載したすべてのデバイス、NVIDIA Jetson、TX2、Raspberry Pi 向けに、事前に構築された Chainer パッケージが含まれています。したがって、GreenGrass ML は、TensorFlow、Apache MXNet、Chainer 向けの事前に構築されたパッケージを提供していることになります!SageMaker でモデルをトレーニングし、GreenGrass ML を使用して、GreenGrass 対応デバイスに簡単にデプロイすることができます。
JAWS UG
本日、東京で開催された AWS Summit に出席した JAWS UG の素晴らしい友人達に心から感謝したいと思います。Summit の写真を見て楽しんでいます。日本を、AWS 開発者にとって素晴らしい場所にしてくれてありがとうございます!再び訪問し、お目にかかれることを楽しみにしています。
– Randall