SageMakerってどんなサービス?

機械学習をサービスに導入する際に、ローカルで学習をするだけでなく、使える形でデプロイするのも管理するのって大変ですよね

はたまた、モデル更新をするためのスケジューラ管理やどのモデルで予測したかなどちゃんとログを残したり、一から考えると考慮しなきゃいけないことがいっぱい

そんなあなたにおすすめするのがAmazon SageMaker!

aws.amazon.com

SageMakerを用いた開発の流れ

処理の流れは、まずはAWS上に構築したインスタンス上で作業

f:id:b0941015:20200314220931p:plain
開発の流れ①動作確認

次に、作成したスクリプトを学習用のインスタンスを設定して、学習開始!

学習したモデルはS3上に保存され、学習が終わると学習に使用したインスタンスを自動で破棄してくれる

f:id:b0941015:20200314221103p:plain
開発の流れ②モデルの学習

最後に学習したモデルを用いて推論するためにエンドポイントを作成します。 先程作成した学習モデルが読み込まれ、推論用のインスタンスが作成される

f:id:b0941015:20200314221353p:plain

開発の流れ③エンドポイントによる推論

バッチで大量のデータを推論する際はバッチ処理を実行する これによって、推論用のインスタンスが立ち上がり、学習モデルを読み込んで、予測したデータが最終的にS3へと保存される

f:id:b0941015:20200314221455p:plain
開発の流れ③' バッチによる推論

各段階での機能

開発

  • gitインテグレーション
    • SageMakerにGitリポジトリを登録するとノートブック起動時に、リポジトリが最初から含まれた状態でノートブックを利用することが可能

開発の流れ③' バッチによる推論

  • ライフサイクル設定
    • インスタンス起動時と開始時のセットアップ処理を自動化できる

    • これによって環境変数の設定や、特定ライブラリのインストールなどの定番処理を自動化できる

学習

  • 分散学習及び複数ジョブの同時実行可能
  • ハイパーパラメータのチューニング
    • ベイズ最適化にパラメタの自動チューニング
  • ローカルでテスト可能
    • コンテナをノートブックインスタンスにpullしてきて動作テスト可能

予測

  • オートスケーリング
    • 平均リクエスト数 or カスタムメトリクスでインスタンスのスケールイン・アウトが可能
  • A/Bエス
    • 複数モデルに重みでリクエストの振り分け可
    • レスポンスのヘッダーにモデル名が含まれているので、どのモデルで予測したのかログに残すことが可能

その他

  • AWS Marketplaceから機械学習のモデルが購入可能
    • モデルを提供して、売ることも可能!

f:id:b0941015:20200314222907p:plain

まとめ

機械学習の基盤を作るときに考慮しなきゃいけないこと・ベストプラクティスをAWSが用意してくれてる

AWSを使っていて、新しく機械学習基盤を作るなら、これを使わない手は無いでしょう