ここでは、公式のAmazon SageMaker exampleに加えて、いくつかの日本語のexampleを用意しています。ここのexampleに関して、コメントがある方、問題を発見された方は、このレポジトリのissueより報告いただけるとありがたいです。
Chainerでmnistの手書き数字の画像を分類します。これでSageMaker上での分散学習、ハイパーパラメータ最適化、ローカルモード実行、エンドポイントの起動・推論実行など一通り試すことができます。また、対象データセットが小さいため、ml.m4.xlargeといった小さめのインスタンスでも学習可能です。
ChainerCVによる物体検出アルゴリズムSSDをそのままデプロイしてエンドポイントを作成する方法と、S3においたファイルを一括で推論するバッチ変換ジョブを作成する方法を紹介します。
食事画像の輪郭から食事画像をpix2pixで生成します。具体的な例として、food-101に含まれる1000枚のラーメン画像を使用して、輪郭情報を抜き出し、そこからラーメン画像を生成します。MXnet/Gluonを利用して実装しています。ネットワークが大きいためGPUでの学習を推奨します。エッジの抜き方が雑でまだ精度がでていません。
pytorchを利用してmnistの分類を行います。これでSageMaker上での分散学習、ハイパーパラメータ最適化、ローカルモード実行、エンドポイントの起動・推論実行など一通り試すことができます。また、対象データセットが小さいため、ml.m4.xlargeといった小さめのインスタンスでも学習可能です。
Amazon SageMakerのビルトインアルゴリズムImage classificationの転移学習を利用してCaltechデータセットを学習します。ビルトインアルゴリズムの利用にはp2, p3のインスタンスが必要です。
SageMaker上でのTensorflowモデルのFine Tuningを行う例として、TF SlimのResnetモデルをS3にアップロードして、SageMakerでFine Tuningします。
XGBoostでmnistの手書き数字の画像を分類します。推論方法として、XGBoostのモデルをSageMaker外で読み込む方法と、SageMakerでエンドポイントを立てる方法を説明します。オープンソースのXGBoostとモデル互換性があるため、SageMaker外の環境(たとえば分析用のローカルマシンなど)で、モデルの簡単なテストや特徴量の重要度評価を行うことも可能です。
北京のpm2.5データセットに対してDeepARを適用し、pm2.5を予測するコードです。
異常検知用のビルトインアルゴリズムRandom Cut Forestを利用して、ニューヨークのタクシー乗車数の異常検知を行います。実際に異常を検知した時間帯において、特殊なイベントが開催されていたことを確認し、実際の異常検知でも利用可能であることを確認します。
MXNetをバックエンドとしたKerasを利用して学習し、MXNetのモデルに変換してデプロイします。2018.12時点で、Kerasの複数インスタンスの学習およびKerasモデルを直接デプロイすることはできません。MNISTデータセットを対象としたMLPとCNNによる分類を行います。
TensorflowをバックエンドとしたKerasを利用して学習し、Tensorflow Serving用にモデルに変換してデプロイします。2018.12時点で、Kerasの複数インスタンスの学習およびKerasモデルを直接デプロイすることはできません。MNISTデータセットを対象としたMLPとCNNによる分類を行います。
Tensorflow の mobilenetをSageMaker Neoでコンパイルして推論した場合と、Elastic Inferenceを使って推論した場合で、推論にかかる時間を比較しました。
re:Invent2018でScikit-Learnがデフォルトでサポートされるようになりました。公式githubをご覧ください。
https://github.com/aws/sagemaker-python-sdk/tree/master/src/sagemaker/sklearn
ChainerのSageMakerコンテナを利用してScikit-Learnの学習と推論を行います。