こんにちは、機械学習エンジニアの @hurutoriyaです。
2018/05/23 にMercari ML Ops Night Vol.1というイベントを開催しました。
Mercari ML Ops Night Vol.1 – connpass
機械学習アルゴリズムそのものではなく、 システム構成や、モデルのデプロイ、データの収集など、 機械学習をプロダクションで運用するにあたって直面する課題やその解決方法などを、 ざっくばらんにお話できればと思います。
当イベントページは公開1時間で100人の定員枠が埋まり、最終的に申込者が296人!! に到達し、プロダクション環境での機械学習の運用に対する注目の高まりを感じ取ることができました。
プロダクション運用への壁
最近では国内でもMLSEやML Ops Studyなど機械学習のモデリング以外の部分に注目したイベントが開催されています。
Hidden Technical Debt in Machine Learning Systems でも語られているように、機械学習をプロダクション環境に投入するにはモデリング以外に様々な要素が必要とされます。
そのため、国内でも様々なコミュニティが立ち上がってきているのは、モデリングだけで終わらず各企業が機械学習のプロダクション運用段階まで到達している兆候だと思います。
引用 : Hidden Technical Debt in Machine Learning Systems (NIPS2015)
プロダクション運用の知見の共有
データ分析業界でよく取り上げられる話題として、Data Scientist と Data Engineer を同一視してしまう問題があります。
- Data Scientist vs Data Engineer (article) – DataCamp
- Data engineers vs. data scientists – O'Reilly Media
- [抄訳] Data engineers vs. data scientists – Moonshot 🚀 – Medium 拙著ですが、上記の抄訳記事です。
そのため今回のイベントでは、Data Engineer寄りにフォーカスして機械学習のプロダクション運用の知見を共有したいという思いからイベントを開催しました。
イベント当日の様子
- 司会から
SysML
という単語をお聞きした方はどれ位いますかとお聞きしてみると、参加者の約半数が手を上げていただきました。
発表資料
メルカリのマーケット健全化施策を支えるML基盤
メルカリで開発しているMLプラットフォームについて、MLを使用した機能の開発workflow等やservingの工夫を交えてお話しました
機械学習によるマーケット健全化
- メルカリのマーケット健全化のために、機械学習を用いてどう商品監視を実現しているかについてお話しました
感動出品(画像認識機能)の起案からリリースまで
2017年の秋に出品時の画像認識機能(プロジェクト名:感動出品)をリリースしました。
このプロジェクトがどのように始まり、機械学習エンジニアとSREがどう連携してリリースを行ったか、そして、機械学習を使ったサービスの開発・運用体制としてどういったものが理想的なのかについて、我々の考えをお話ししました。
発表に対する質疑応答
イベント当日は sli.do というイベントのQA投稿サービスを使って質問を募集しました。
いくつかの質問に対して、ここで回答させていただきます。
- Q : メルカリで、出品された画像と商品名・カテゴリが一致していないものが多数あると思います。機械学習に使用するデータはどのように選んでいるのでしょうか?
- A : 基本的にお客さまは、商品を売るために出品しているため正しい教師データが多数派を占めると仮定して学習しています。データの選び方としてはトレンドなどを考慮するため、直近一年間をランダムサンプリングして学習データとして利用しています。
- Q : Cloud ML Engine は利用していますか?自前で TensorFlow クラスタを運用するのと比較してどういった違いがありますか?(あともし使っていれば)kubeflowはどうですか?
- A : 一部併用しています。自前クラスタは自動化の仕組みを自由に作れるのがメリットです。kubeflowはnotebook環境を個人で使っていますが、本番環境では使っていません。
- Q : Pytorchは運用には厳しいでしょうか?
- A : ONNXの運用が厳しいという事はありませんが、現在社内ではTFとscikit-learnが主に使用されているのでそちらを主眼に開発を行っています
- Q : Training workflowでGithubを使うのはなぜですか?
- A : trainingとdatasetのコード管理を行いたいためです
- Q : SK Model, TF Model, Flask API のそれぞれのレポジトリやコンテナイメージは一緒か分けるか、どうしていますか?
- A : 現在はプロジェクトに依存しています。機械学習チームでは統一的なWorkflowの普及が始まっています。将来的には、継続的再学習を必須としたリポジトリ体制を目指しています。
- Q : Persistent Volumeの冗長化ってどうしてますか?
- A : k8sはGKE環境を使用してます。GKEの標準では
gcePersistentDisk
が使用され冗長化されています
- A : k8sはGKE環境を使用してます。GKEの標準では
まとめ
各発表後の質疑では、活発に質問があがり懇親会でも参加者同士が意見交換を行い非常に意義深いイベントになりました。
メルカリでは今後も機械学習のプロダクション運用の知見を共有するイベントを開催・応援していきます。
直近では、2018/07/13 にメルカリがスポンサーとして Machine Learning Casual Talks #5
というイベントを開催します。
こちらは社外の方の発表も交えた機械学習のプロダクション運用の知見を共有するイベントになりますので、ご興味のある方はご参加ください!
メルカリで機械学習基盤を作りたい人 WANTED!!
メルカリでは、Data Scientist と Data Engineer のスキルギャップを埋めるエンジニアの募集をしております!
Software Engineer, ML Reliability/SysML
Machine Learning(以下ML)技術を利用したシステムの開発・運用を行います。
▼ 業務内容
・MLに関連するAPIやツールの開発とその運用
・ML分野に関連する作業の自動化
・MLクラスタを改善し、MLエンジニアを支援する
・MLエンジニアと協力し、MLに関わる問題の解決
Appendix
- Twitter上での当日の様子 Twitter #mercari_mlops