Amazon SageMakerの利用制限について

# 1. まとめ

デフォルトの利用制限について気になったところ．

- Amazon SageMaker ノートブック
    - インスタンスタイプ
        - GPUインスタンスはデフォルトの利用数が少ない
    - トレーニングジョブの最長の実行時間
        - デフォルトだと5日間なので利用シーンによっては足りない

- Amazon SageMaker ホスティング
    - エンドポイント呼び出しの最大ペイロードサイズ
        - デフォルトの5MBではデータによっては処理できない．画像ファイルだとスマホで撮影すると5MBを超えることはあるので，その場合は画像を縮小してからホスティングしているエンドポイントに送るなど事前処理が必要
        - 最大ペイロードサイズが制限緩和できるかは不明（多分無理）．上限緩和申請のフォームには最大ペイロードサイズを項目から選択することはできない．

利用者の数や利用内容によって，ノートブックインスタンスの数は足りなくなる可能性がある．

# 2. 目次

Amazon SageMakerの利用制限についての考察

- 1. まとめ
- 2. 概要
- 3. Amazon SageMaker の制限
    - 3.1. Amazon SageMaker ノートブック
    - 3.2. Amazon SageMaker トレーニング
    - 3.3. Amazon SageMaker ホスティング
- 4. 上限緩和について
- 5. 参考リンク

# 3. Amazon SageMaker の制限

下記のデータは2018年6月21日現在のデータ．最新データは，[AWS サービス制限](https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws_service_limits.html)を参照．
（下書きしていた内容なのでちょっとデータ古いかも）

## 3.1. Amazon SageMaker ノートブック

- インスタンスタイプについて
    - 利用用途によってインスタンスタイプを変更するのが良いと思われる．
        - Amazon SageMakerのトレーニングとホスティングを利用する場合はノートブックインスタンスのリソースを消費しないため，ノートブックインスタンスは非力でも良いと思われる．
        - Amazon SageMakerのトレーニングとホスティングには興味はなく単純にJupyter Notebookを利用する目的でノートブックインスタンスを利用する場合は，利用に適したインスタンスタイプを選択するのが良いと思われる．例えばTensorFlowを利用する場合は，GPUインスタンスを利用するのが良いと思われる．
- 実行中のノートブックインスタンスの数
    - 同時で作業をする場合は，同時実行可能なノートブックインスタンス数がデフォルトでは足りなくなるかも

スタンダードインスタンス – 現行世代

|リソース|デフォルト制限|
|:-----------------|------------------:|
|ml.t2.medium インスタンス|20|
|ml.t2.large インスタンス|20|
|ml.t2.xlarge インスタンス|20|
|ml.t2.2xlarge インスタンス|20|
|ml.m4.xlarge インスタンス|20|
|ml.m4.2xlarge インスタンス|20|
|ml.m4.4xlarge インスタンス|10|
|ml.m4.10xlarge インスタンス|5|
|ml.m4.16xlarge インスタンス|5|

GPU インスタンス – 現行世代

|リソース|デフォルト制限|
|:-----------------|------------------:|
|ml.p2.xlarge インスタンス|1|
|ml.p2.8xlarge インスタンス|1|
|ml.p2.16xlarge インスタンス|1|
|ml.p3.2xlarge インスタンス|2|
|ml.p3.8xlarge インスタンス|2|
|ml.p3.16xlarge インスタンス|2|

その他

|リソース|デフォルト制限|
|:-----------------|------------------:|
|ノートブックインスタンスの数|100|
|実行中のノートブックインスタンスの数|20|

## 3.2. Amazon SageMaker トレーニング

- インスタンスタイプ
    - GPUインスタンスはデフォルトの利用数が少ない
- トレーニングジョブの最長の実行時間
    - デフォルトだと5日間なので利用シーンによっては足りない
- トレーニングジョブ全体のインスタンス数
    - 複数人で利用する場合にはデフォルトだとインスタンス数が足りない
- トレーニングジョブのインスタンス数
    - インスタンス数が足りない場合はインスタンスのスペックを上げて対処するのが良いと思われる
- インスタンスの EBS ボリュームのサイズ
    - データはS3から取得するため，1TBあれば多くの場合は足りると思われる．
   
標準インスタンス – 現行世代

|リソース|デフォルト制限|
|:-----------------|------------------:|
|ml.m4.xlarge インスタンス|20|
|ml.m4.2xlarge インスタンス|20|
|ml.m4.4xlarge インスタンス|10|
|ml.m4.10xlarge インスタンス|5|
|ml.m4.16xlarge インスタンス|5|
|ml.m5.large インスタンス|20|
|ml.m5.xlarge インスタンス|20|
|ml.m5.2xlarge インスタンス|20|
|ml.m5.4xlarge インスタンス|10|
|ml.m5.12xlarge インスタンス|3|
|ml.m5.24xlarge インスタンス|2|

コンピューティングインスタンス – 現行世代	

|リソース|デフォルト制限|
|:-----------------|------------------:|
|ml.c4.xlarge インスタンス|20|
|ml.c4.2xlarge インスタンス|20|
|ml.c4.4xlarge インスタンス|20|
|ml.c4.8xlarge インスタンス|20|
|ml.c5.xlarge インスタンス|20|
|ml.c5.2xlarge インスタンス|20|
|ml.c5.4xlarge インスタンス|5|
|ml.c5.9xlarge インスタンス|5|
|ml.c5.18xlarge インスタンス|5|

GPU インスタンス – 現行世代	

|リソース|デフォルト制限|
|:-----------------|------------------:|
|ml.p2.xlarge インスタンス|1|
|ml.p2.8xlarge インスタンス|1|
|ml.p2.16xlarge インスタンス|1|
|ml.p3.2xlarge インスタンス|2|
|ml.p3.8xlarge インスタンス|2|
|ml.p3.16xlarge インスタンス|2|

その他

|リソース|デフォルト制限|
|:-----------------|------------------:|
|トレーニングジョブの最長の実行時間|5 日間|
|トレーニングジョブ全体のインスタンス数|20|
|トレーニングジョブのインスタンス数|20|
|インスタンスの EBS ボリュームのサイズ|1 TB|

## 3.3. Amazon SageMaker ホスティング

- インスタンスタイプ
    - GPUを利用して複数のモデルをホストする場合はデフォルトでは足りない
- すべてのエンドポイントの合計 TPS
    - デフォルトのままで十分だと思われる
- エンドポイント呼び出しの最大ペイロードサイズ
    - 入力・出力として扱えるサイズ．

標準インスタンス – 現行世代	

|リソース|デフォルト制限|
|:-----------------|------------------:|
|ml.t2.medium インスタンス|20|
|ml.t2.large インスタンス|20|
|ml.t2.xlarge インスタンス|20|
|ml.t2.2xlarge インスタンス|20|
|ml.m4.xlarge インスタンス|20|
|ml.m4.2xlarge インスタンス|20|
|ml.m4.4xlarge インスタンス|10|
|ml.m4.10xlarge インスタンス|5|
|ml.m4.16xlarge インスタンス|5|
|ml.m5.large インスタンス|20|
|ml.m5.xlarge インスタンス|20|
|ml.m5.2xlarge インスタンス|20|
|ml.m5.4xlarge インスタンス|10|
|ml.m5.12xlarge インスタンス|3|
|ml.m5.24xlarge インスタンス|2|

コンピューティングインスタンス – 現行世代	

|リソース|デフォルト制限|
|:-----------------|------------------:|
|ml.c4.large インスタンス|20|
|ml.c4.xlarge インスタンス|20|
|ml.c4.2xlarge インスタンス|20|
|ml.c4.4xlarge インスタンス|20|
|ml.c4.8xlarge インスタンス|20|
|ml.c5.large インスタンス|20|
|ml.c5.xlarge インスタンス|20|
|ml.c5.2xlarge インスタンス|20|
|ml.c5.4xlarge インスタンス|5|
|ml.c5.9xlarge インスタンス|5|
|ml.c5.18xlarge インスタンス|5|

GPU インスタンス – 現行世代	

|リソース|デフォルト制限|
|:-----------------|------------------:|
|ml.p2.xlarge インスタンス|2|
|ml.p2.8xlarge インスタンス|2|
|ml.p2.16xlarge インスタンス|2|
|ml.p3.2xlarge インスタンス|2|
|ml.p3.8xlarge インスタンス|2|
|ml.p3.16xlarge インスタンス|2|

その他

|リソース|デフォルト制限|
|:-----------------|------------------:|
|アクティブエンドポイント全体のインスタンス数|20|
|エンドポイントのインスタンスの数|20|
|すべてのエンドポイントの合計 TPS|10,000|
|エンドポイント呼び出しの最大ペイロードサイズ|5 MB|

# 4. 上限緩和について

東京リージョンは現状上限緩和申請フォームが存在しない．

東京リージョンの上限緩和申請フォームはそのうち提供されるのかな？

他のリージョンを確認する限りだと，**エンドポイント呼び出しの最大ペイロードサイズ**は項目としてない．他のAWSのサービスでもそうだが，ペイロードについては上限緩和できないと思われる．

# 5. 参考リンク

[AWS サービス制限](https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws_service_limits.html)