【レポート】ZOZO Researchの研究活動を支える Amazon SageMaker 利用 導入課題の解決と展開について #AWSSummit

こんにちは、城岸です。

2019/6/12(水)~14(金) の期間で開催されている、AWS Summit 2019 Tokyo からセッションをレポートします。 本記事は「ZOZO Researchの研究活動を支える Amazon SageMaker 利用 導入課題の解決と展開について」のセッションレポートになります。

セッション概要

スピーカー:光野 達朗氏 (株式会社ZOZOテクノロジーズ 開発部SRE テックリード)
スピーカー:中村 拓磨氏 (株式会社ZOZOテクノロジーズ ZOZO Research リサーチサイエンティスト)

セッション名:ZOZO Researchの研究活動を支える Amazon SageMaker 利用 導入課題の解決と展開について

ZOZO Research では Amazon SageMaker をスケーラブルな機械学習基盤として利用しています。動的に計算資源を確保できるため、各々が実験へ集中できるようになりました。しかし、これの導入は課題の連続でした。Amazon SageMaker を使いこなす為にはサービス自体を理解する必要がありますが、本来の目的は機械学習であり展開においてサービス自体の学習は少ないに越したことはありません。本発表では、我々が Amazon SageMaker 利用において学び工夫した点と、所内で利用を促進する為に行った取り組みについてご紹介します。

レポート

アジェンダ

  • 会社紹介
  • ZOZO Research のミッション
  • ZOZO Research とSREチームの関わり方
  • 利用促進のための取り組み
    • 開発
    • 学習
    • 推論

会社紹介

  • 株式会社ZOZOテクノロジーズ
    • 事業利権:70億人のファッションを技術の力で変えていく
    • 主要プロダクト:ZOZOTOWN、WEARを運営

ZOZO Researchのミッション

  • ZOZO Research
    • ZOZOテクノロジーズの研究機関
    • ミッション:ファッションを数値化する
      • 服作りの研究
      • 似合うの研究
      • 採寸の研究
    • データ × 機械学習

ZOZO ResearchとSREチームの関わり方

  • 機械学習基盤をSREチームがAWSの上に設計、構築
  • Researchメンバーがそれを利用

  • 計算機版のジレンマ(SageMaker導入前)

    • GPUを利用できるP系のインスタンスを必要な分だけ並べていた
    • 繁忙期には必要な分だけのリソースを起動する、リソースの利用率が下がったあらインスタンスを削除するという運用をしていたため効率が悪い
  • SageMakerの登場
    • Train、ワンクリックトレーニングに着目
    • 学習に必要なリソースを立てる仕組みであり効率が良い

以降、研究内容の紹介とSageMakerを利用した具体的な取り組み

ZOZO Researchの研究紹介

  • レコメンドアルゴリズムを開発(服=同じ時間に複数のアイテムを組み合わせる)
  • 似合うアイテムを可視化することに成功
  • 服の組み合わせをクラスタリングし演算
  • ファッションスタイル毎のコーディネート生成

SageMaker導入に関して

  • SageMakerを導入して実験はスケールした、およそ導入前の10倍くらい
  • SageMakerを導入は大変であった
    • SageMakerを実行した結果Failedとうステータスになることが多かった(単純なタイポなども含めて)
  • SageMakerはMLプラットフォームであり、ML開発業務のフレームワークでもある
    • SageMakerを利用することで効率的な開発ができるようになった。慣れたやり方を踏襲しないことが大事

利用促進のための取り組み

開発

  • SageMaker導入前
    • 複数のインスタンス上で学習、管理が複雑、リソースも使いきれていない
  • SageMaker導入後
    • 良かった点
      • 学習ジョブ実行
        • ジョブという単位で実験を管理できる
        • 実験をクローンできる
        • コストを最小化できる
    • 使いづらかった点
      • Notebookの使い勝手
        • Jupyterやエディタのカスタマイズができない
        • sshができない
        • ipynbファイルとgitの相性が悪い
    • 使いづらかった点を以下で解決
      • 開発機にsagemaker実行用のSDKをインストール
      • 普段使っているPCから直接ジョブを実行
      • 使いなれたPC上で作業を実施、リソースが必要な学習処理の際にSDK経由でSageMakerを起動

学習

  • SageMaker導入前
    • EC2で学習しており、学習経過をEFSにスナップショットとして出力していた
  • SageMaker導入後
    • 使いづらかった点
      • SageMakerからはEFSにマウントができない
    • 使いづらかった点を以下で解決
      • 最新のスナップショットはboto3(PythonSDK)を使って定期的にS3出力
      • 学習ログはWebHookでSlackにポスト

推論

  • SageMaker導入前
    • テスト用インスタンスからEFSをマウントして推論(テスト)を実行する
  • SageMaker導入後
    • 使いづらかった点
      • 学習ずみのモデルはS3に格納されているため、推論(テスト)の度にモデルをS3からコピーする必要があった
    • 使いづらかった点を以下で解決
      • バッチ変換ジョブを利用、学習モデルとテストスクリプト、テストデータを指定して推論(テスト)を実行できる
      • EC2を介さずテストを実行できるようになった

まとめ

SageMaker導入前後でどのような変化があったのかを知ることのできるセッションでした。SageMakerをそのまま使うのではなく、一部工夫して使うことでより効率的な開発ができるようですね。

本セッションで出てきたSageMakerを利用することで効率的な開発ができるようになった。慣れたやり方を踏襲しないことが大事 という言葉が刺さりました。

そして何とびっくり!本セッションで紹介があったツールはGitHubで公開させれるようです。すごい時代になったもんだ!

chainer-sagemaker-tools