【レポート】AIベンチャーのコスト効率を最大化させるAI開発環境の実践方法 #AWSSummit

千葉県幕張メッセにて開催中のAWS Summit Tokyo 2019に参加しています。こちらで講演されたセッション「AIベンチャーのコスト効率を最大化させるAI開発環境の実践方法」を聴講しましたのでレポートします。
2019.06.12

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

こんにちは。サービスグループの武田です。

2019年6月12日(水)から14日(金)の3日間、千葉県幕張メッセにてAWS Summit Tokyo 2019が開催されています。こちらで講演されたセッション「L1-06 AIベンチャーのコスト効率を最大化させるAI開発環境の実践方法」を聴講しましたのでレポートします。

AWS Summitでは全セッションで撮影が基本NGということですので、文字だけでお届けします。

概要

AI開発で利用するGPUインスタンスは非常に高価であり、中々、利用をすることができない。しかし、モデルのトレーニングをいち早く終わらせて多様なモデルのトレーニングも実践したい。この、矛盾を解決する対策の有効的な回答を得ることは難しかった。 しかし、その矛盾に1石を投じて解決に乗り出されたのがSageMakerであり、その利用・導入の事例を交えて紹介します

スピーカー

  • 株式会社シナモン
  • Infrastructure & Information Security Office Manager
  • 斉藤 哲也
  • ※基調講演で登壇されていた平野さんと同じ会社です

(※敬称略)

レポート

  • アジェンダ
  • シナモンの開発体制の特徴・課題
  • 課題解決へのアプローチ
  • GPUインスタンスのコスト効率の最大化
  • プロダクト開発期間の短縮

メインプロダクトはFlax Scanner。請求書などのような不定形帳票をスキャンすることが可能だったり、契約書の重要論点の抽出などもできそうです。

シナモンの開発体制の特徴・課題

  • 90/200名以上のAIリサーチャー/エンジニアが在籍
  • 開発拠点は日本とアメリカだが、AIラボはベトナムと台湾にある
  • 多様な人材の積極的な採用と活用
  • 積極的な裁量権の委任と個人の最大化
  • 最新のAI研究に関する論文の調査及び検証

さまざまな拠点および不均一な組織構成のため、コストや開発ワークフローに課題を抱えていた。

GPUインスタンスのコスト効率の最大化

  • AI開発ではGPUインスタンスの利用は必要不可欠
  • ただし高い
  • 常に使い続けるわけではないため、必要なときにオンデマンドインスタンスを起動している
  • しかし、起動したインスタンスはフル稼働していない
  • 特定の時間帯は一切使用していないなど(その期間のコストはもちろん発生する)
  • 利用率を調べてみると、使っていない時間帯がある
  • P3.8xlargeで試算すると少なくとも $306 は無駄にしていた(ある月の一定期間を抽出)。
  • 利用率を100%に近づけたいが自社の管理ポリシーでは難しい
  • AWSの全サービスを管理できるのは管理者のみ
  • インスタンスの作成/削除、起動/停止は管理者が実行する
  • 夜間は停止するなど新しい管理ポリシーを考えたものの、遵守されない

さまざまな課題を抱えていたが、SageMakerがこれらの問題を解決する助けになった。

  • シナモンの考えるSageMaker
  • 開発からデプロイまで統一されたワークフローの提供
  • トレーニングインスタンスの自動起動および削除
  • トレーニングに必要なインスタンスタイプを指定し、必要なときに起動できる
  • トレーニングが終了すると、インスタンスは自動的に削除される
  • → GPUの最大化が実現できる
  • SageMaker SDKによる統一されたインタフェースの提供
  • GPUインスタンスの数量の推移
  • 現在を100とすると、3ヶ月で60%、半年後に10%までオンデマンドインスタンスを削減できる見込み
  • コスト換算すると
  • 3ヶ月後はオンデマンドが50%以下、SageMakerが20%
  • 半年後はオンデマンドが10%、SageMakerが30%
  • 全体で約60%のコスト削減ができる見込み
  • SageMakerに移行する際の注意点
  • SageMaker利用のための、最小限のルールに則る必要がある
  • アルゴリズムのライブラリバージョンの確認
  • データの入出力の変更
  • IAMの権限設定、など

いくつかの解決については次のように解決した。

  • ライブラリ関連の課題
  • SageMaker提供のコンテナではなく、自社で利用していたコンテナをSageMakerで利用する
  • データの入出力の変更
  • 通常はインスタンス内で実施するが、S3バケットを利用するように
  • 既存コードの修正は必要
  • IAMの権限設定
  • SageMakerではノートブックインスタンスを作成する際にIAMロールが作られるが、不足する場合がある
  • 自社コンテナを利用する場合、ECRを利用すると仮定すると……
  • デフォルトのIAM権限はS3しかないので不足する
  • 手動でECRへの許可を付与する
  • ECRを使わない場合は権限変更は不要

SageMakerを導入することで、大幅にコスト削減に成功した。

プロダクト開発期間の短縮

  • これまでは顧客環境ごとに開発環境を用意するなど、レガシーな開発フローだった
  • ベトナムとのシームレスな連携が課題
  • 統一的なワークフローとはなっていなかったためコストが発生
  • レガシーな開発ワークフローからの脱却が課題
  • 顧客環境からの脱却
  • Researcher/Engineerの個人の最大化が課題
  • 案件ごとに属人的な手法で開発していた
  • SageMakerを導入することで統一的なワークフローが実現できた
  • Researcher/Engineerは本番環境を容易に構築できる
  • 不均一な組織構成でも、開発を促進できる
  • Try & Errorが容易に行える
  • 新しいアイデアを実践することが容易になる
  • より精度の高いアルゴリズムの作成ができる
  • プロダクトの品質の向上が実施できる

結果として、SageMakerを利用することにより、均一な組織構成ではなくともプロダクトの開発期間が短縮可能になった。

まとめ

  • SageMakerのプロダクト開発に導入する際の注意点
  • 強力なフレームワークだが、既存の開発環境を変更する必要がある
  • 影響をできるだけ与えないようにスモールスタートが望ましい
  • 良い結果が得られたら水平展開をしていく
  • シナモンとしてはSageMakerの機能を最大化するところまでは至っていない
  • しかし、一部を利用するだけでも大幅に改善することができた
  • 今後も最大限活用できるようにより理解し実践していきたい

最後に

AIを活用したサービスを開発している方の事例セッションでした。日本だけでなく世界各地に拠点があり、クラウドを利用することで地理的差異をなくすというのは非常に共感の持てる話でした。また、SageMakerを導入することで、これまでの課題も改善できるなど、示唆に富んだセッションでした。