[レポート]プロダクション環境でフル活用する Amazon SageMaker #AWSSummit

2020.09.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どーもsutoです。

2020年9月8日から9月30日の間でオンラインで開催されているAWS Summit Onlineの「プロダクション環境でフル活用する Amazon SageMaker」のセッションレポートです。

セッション情報

概要

DeNA では、Amazon SageMaker をフル活用して実際のプロダクトの実装に取り入れています。本セッションでは、バッチ推論と Processing を Airflow と組み合わせてスケーラブルなバッチ推論パイプラインを構築した事例と、SageMaker 上にデプロイした推論エンドポイントで完全サーバレスな推論アプリケーションを構築した事例を紹介します。 これらの事例を通して、プロダクション環境で SageMaker を利用する方法と、それによってどのような利点があったのかを考えます。

Speaker

株式会社ディー・エヌ・エー AI 本部 AI システム部 ML エンジニアリンググループ

大谷 拓海

レポート

DeNA AIシステム部のSagemaker活用事例を紹介

  • 機械学習システムの提案/開発/運用を一気通貫に担う
    • リサーチ:機械学習モデルを研究開発し、その精度を保つ
    • エンジニアリング:モデルをサービスとして仕立て、効率的に運用する

事例1:リアルタイム音声合成システム

特徴

  • Sagemakerを使いことで、デプロイプロセスがシンプルで更新容易に
  • Sagemakerの推論エンドポイント
    • モデルを定義するだけでインスタンスをデプロイし、WebAPIサーバとして機能してくれる(Sagemakerサービスで内部的に実装してくれる)
  • API Gateway+Lambdaのサーバレスでメンテナンスコスト削減

  • Multi MNodel Endpointsでコスト削減

    • 単一エンドポイント内に複数のモデルをホストできる
    • モデルごとの負荷が少ないユースケースでは大幅にコスト削減が可能

事例2:横浜DeNAベイスターズのチーム強化

DeNAではベイスターズの試合動画をAIで解析し、選手強化に繋げるシステ ムを運用している。

→毎日生成される大量の動画を複数のモデルからなるパイプラインに通し、 様々なデータを抽出する。

  • 動画は順次メタデータが付与されてuploadされる
  • 多数のモデルの処理順序が複雑な依存関係を持っている
  • 必要な計算リソースはモデルごとに異なる
  • 可能な限り短時間で結果を出力し、チームにフィードバックしたい

改善のためにSagemaker BatchTransform使用

  • Amazon S3上にあるデータに対してバッチ処理による推論を実行する
    • リアルタイム性の必要ない推論に使う
    • モデル実装はEndpointと全く同じものをそのまま使える
    • 追加の実装コスト無しに、一つの実装でAPI化にもバッチ処理にも対応できる
  • 入力としてs3上の一つのprefixしか指定できない
    • パイプラインの各所で生成された別々のデータを参照できない
    • data_typeに’ManifestFile’を指定すると、複数のファイルを指定できる
    • SplitTypeを’Line’に設定すると、改行区切りで複数のjsonを1ファイルに格納できる

  • 並列化が容易になった
  • 余分な計算資源の削減
  • メンテナンス性の向上

新たな問題点とその改善

  • BatchTansformは内部的にEndpointを起動してリクエストを投げているためパフォーマンスが出ない
    • HTTP通信がパフォーマンスのボトルネックになりがち
  • データ読み込みが隠蔽されていて、最適化出来ない
    • ミニバッチ化したとしてもデータ読み込みとシリアライズがボトルネックになる
  • Amazon SageMaker Processingを使ってデータ前処理/後処理などを簡単に実行
    • 任意のコードをコンテナ上で実行でき、BatchTransformよりシンプルで自由度が高い
    • 今回はこれを推論に用いた結果、既存の実装をほとんど無修正でそのままデプロイできるようになった

今後について

SageMakerは何をもたらしたか

モデルの高速で低コストなデプロイ

  • 推論エンドポイント のデプロイが容易
  • 同じコードをバッチ処理で使うこともできる
  • コストを最適化する機能が備わっている

規律と管理

  • モデルのバージョンが容易に管理でき、インタフェースも明確になる

リサーチャーからみた使い勝手

  • 運用の都合から生じた制約をリサーチャーに押し付けるのは避けるべき
  • 最低限の制約と工数で、自由度の高いモデリングプロセスと確実なデプロイを実現できる

感想

去年のre:Invent2019で発表されたSageMaker Processingを含めて、Sagemaker系のサービスを使い倒してビジネス価値を生み出していて、Sagemaker事例を知る良いきっかけでした。

とくにSagemakerのなかでは、探しても比較的検証記事が少ない「Sagemaker BatchTransform」「SageMaker Processing」の話を聞けて大変貴重なセッションでした。

セッションのリンク