2018年12月3日月曜日

Amazon SageMaker

SageMaker の ハンズオンに参加。

内容は初心者向けでしたが、私には非常に効果的なレベル。というかギリセーフでした。半年前なら全く理解できていなかったでしょう。
参加者の顔ぶれを見ると働き盛りの若い方が多く、健全な分野と感じます。講習会といえばおじさんばかりの建設業界の異常さをあらためて認識させられました。

以下、備忘録です。
****************************************
フロー
①Sagemaker で開発
②Dodker 利用で学習環境に移行、学習、API化
③推論は API 利用
開発・学習はSagemaker、推論はオンプレミスというように、部分利用可


アルゴリズム
①AWS ビルトイン利用
・学習データのみ
②TensorFlow 等、一般的なモデルを使用
・学習データと開発したコードが必要
・Docekerでコンテナ作成
③それ以外
・学習コードと推論用 Web サーバが入ったコンテナを ECR に push
・学習データは S3 へ


開発と学習・・・データサイエンティストが SageMaker SDK を使ってJupyterで。
デプロイ~推論・・・機械学習と関連のないエンジニアリングが大半・・・インフラエンジニアが AWS SDK を利用
役割の違うチームがそれぞれに合ったツールを利用


ビルトインで気になったアルゴリズム・・・Image Classification(教師あり)
・ゼロからトレーニング or 大量のデータを用意できない場合に転移学習を使用
・ResNet を使用。
https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html


学習時のTips

・分散学習
instance_count を2以上で自動で分散学習
⇒基本はデータを分割
Tensorflow/Chainer/PyTorch/MXNet → instance_countに加えてコードも分散学習に対応させる必要あり。

・ハイパーパラメーターの自動チューニング
Estimater 初期化時に hyperparameters で引き渡すパラメータに関し自動チューニング
Tensorflow/Chainer/PyTorch/MXNetでも利用可

・学習ジョブの評価
CloudWatchLogs、後から集計

・Tensorflow
AWS 側で Tensorflow の分散学習に最適な Docker コンテナイメージ用意
https://github.com/aws/sagemaker-tensorflow-container

・大量データの読み込みにpipeモード
PIPE:学習用データを必要なタイミングで必要な分だけ S3 API 経由でストリーム処理
Tensorflow : TFRecord フォーマット
MXNet : RecordIO フォーマット


推論時のTips
・オートスケーリング
・Tensorflow
AWS 側で Tensorflow の推論に最適な Docker コンテナイメージ用意


セキュリティ
学習時の入出力データ、インスタンス、ストレージ、バッチ推論時の入出力データは暗号化可能

amazon-sagemaker-examples
https://github.com/awslabs/amazon-sagemaker-examples
SageMaker SDK
https://github.com/aws/sagemaker-python-sdk

出席者
Tensorflow 半数
次いでChaneir 、Keras
Pytorch 0
MXnet 0


不要な課金を避けるため、
エンドポイントの削除
ノートブックの削除
※停止でも良いが、S3に保存したデータは課金される
s3の削除
ログの削除
※ログは微々たるもの。置いたままでもOK
※トレーニングジョブは課金対象でなく、日がたつと自動で削除される。
ロールを削除
※課金対象ではない。




0 件のコメント:

コメントを投稿