AWS Dev Day Tokyo 2018 | AWS
AWS Dev Day は、アプリケーションデベロッパーのために世界主要都市で開催される、テクノロジーカンファレンスです。クラウド上でのアプリ開発における最新のテクノロジーとトレンドを、40 本のテクニカルセッション、10 コース以上のテクニカルハンズオンや、そのほかの様々な企画を通じてキャッチアップできるラーニングイベントです。
https://aws.amazon.com/jp/aws-devday-tokyo-2018/
こんにちは、Wantedly の Infrastructure Engineer として働いている南(@south37)です。
先日、AWS Dev Day 2018 というイベントが行われ、「Amazon SageMaker で実現する生産性の高い機械学習基盤」というタイトルで登壇させていただきました!
AWS Dev Day は、アプリケーションデベロッパーのために世界主要都市で開催されるテクノロジーカンファレンスです。日本で開催された AWS Dev Day Tokyo の中に「Machine Learning」をテーマとしたトラックがあり、その中で登壇の機会をいただきました。
Wantedly の機械学習基盤と Amazon SageMaker の活用について話しました。
Wantdly の機械学習基盤については、Wantedly が機械学習を活用するにあたって以下の5つの観点から基盤を整備しているという話をしました。
Amazon SageMaker については、導入以前にどういった課題を抱えていたか、どの様に課題を解決できたのか、どの様に導入を進めたか、利用する中で出て来た注意点などについて話しました。
このブログでは、登壇内容について簡単にまとめたいと思います!
機械学習をサービスに活かしていくという観点で、継続的な改善を行う為にはそれを支える基盤が必要となります。近年では ML ops というキーワードも登場しており、機械学習をプロダクションで運用するにあたって直面する課題をどう解決するか、どういった基盤を整えるかに注目が集まっています。
発表の際には、「Wantedly では以下の様な構成で基盤を整えている」というお話をしました。
まずはデータ基盤。BigQuery にログやデータベースのデータを集約しており、また S3 には画像データや各 ML プロジェクトごとの学習データ、モデルデータを配置しています。機械学習エンジニアが、集約・整理されたデータを自由に触って分析、開発、学習が行える様になっています。
次に開発&学習。こちらでは Amazon SageMaker を利用しています。詳細は後に述べますが、Amazon SageMaker の活用によって生産性高く開発&学習が行えるようになりました。
次に評価について。学習したモデルの評価を「script/evaluate」という統一した名前の script で行なっており、どの ML レポジトリに対しても簡単に評価の実行ができる様になっています。また、ev という自社製 OSS の評価結果管理ツールを利用しており、統一したやり方で評価結果をメタデータ(commit hash、ハイパーパラメータ、学習データのバージョンなど再現に必要なデータ)と共に保存しています。また、定期的に master での評価結果を計測・保存する事で、改善の歴史を分かりやすく残しています。
ev は ev-cli という CLI ツールと ev-job-gen という Kubernetes の CronJob 生成ツールの2つを組み合わせたツールとなっています。ev については、また別の機械に詳細をブログでまとめようと思います。
次にデプロイについて。Kubernetes 上へのデプロイフローがドキュメント、ツールを通して整備されていて、誰でも簡単に推論用の API Server を立てる事ができます。スコア計算をバッチ実行したい場合には、Kubernetes の CronJob という機能を利用しています。
最後に計測について。データ基盤が整っている為、簡単にログが収集出来ています。A/B test などを通して、効果測定を行なっています。
Wantedly の基盤については、9月末に開催された Rejectcon でも発表しています。詳細についてはそちらの資料も参照してみてください。
Wantedly では、機械学習のステップのうち「開発と学習にレールが無い」という課題を抱えていました。具体的には、以下の2つの課題がありました。
これらの課題を、Amazon SageMaker を活用する事で解決しました。
Amazon SageMaker は、機械学習を「開発」「学習」「デプロイ」の3つのフェーズに分割して、それぞれの用途に特化した専用 instance を利用できる機械学習基盤です。
(学習やデプロイについては、厳密には専用 instance を立てずに利用する機能も用意されていますが、それらは基本的にデバッグ用途であり中心的な使い方は「専用 instance を利用する」というものです)
開発時には Notebook Instance を、学習時には Training Instance を利用します。Notebook Instance は Jupyter Notebook がプリインストールされた状態で起動し、すぐに開発を始める事ができます。起動時に任意の script で環境セットアップする事も可能です。Training Instance は学習ジョブ実行時にだけ起動する instance で、高コストな instance を効率的に利用する事ができます。また、学習の際は Docker で自由に環境構築が可能です。
Amazon SageMaker 上で開発・学習・デプロイを行う際の基本サイクルは次のようなものになります。
Wantedly では、Amazon SageMaker が提供する機能のうち 開発(Notebook Instance)と学習(Training Instance)だけを選択的に利用しています。
これらを利用する事で、以下のように課題が解決できました。
また、上記の課題を解決できたこと以外にも、Amazon SageMaker には様々なメリットがありました。
Amazon SageMaker を導入することで、生産性の高い機械学習基盤を整備できました。
Amazon SageMaker には以下の様な注意点・Tips があります。これらを把握して利用すると良いでしょう。
なお、発表の際には注意点として「Amazon SageMaker の Disk は 5GB で固定」という話もしたのですが、その後 AWS 側で機能アップデートがあり、Disk サイズが最大16TBまで選べる様になりました!Amazon SageMaker は今も活発に開発されており、さらに便利になっているようです。
Wantedly では、機械学習をサービスに活かしています。継続的な改善を実現するために、以下の5つの観点から機械学習基盤を整備しています。
今年から Amazon SageMaker を導入して、より生産性の高い機械学習基盤が構築できました。今後も、さらに機械学習エンジニアが輝く環境を整備していきます!
価値を生み出したい機械学習エンジニアの方、基盤を構築してエンジニアの生産性を上げたい方、その他、興味を持ってくださった方は、ぜひ話を聞きに来てください!Twitter などで気軽にお声がけいただくのも大歓迎です!