これから機械学習エンジニアとして
戦っていくみなさんへ
~MLOpsというマインドセットについて~
株式会社マイクロアド
システム開発本部データサイエンスユニット
豊原 優
スライドレジュメ
● 弊社機械学習エンジニアチームについて
● ML研究と実ビジネスとの違い
● 基盤とは?MLOpsとは?
機械学習エンジニアチーム
MLUについて
MLUでのプロダクトを紹介
● CTR/CVR予測
○ クリックの予測や、kpi達成の予測をする
RTBにおける重要な予測。これがよく出来ていると、配信効果にダイレクトに響く
● ユーザーデモグラフィック推定
○ ユーザの性別・年齢を予測するプロダクト
配信する先(20代女性ターゲットなど)の設定において重要
● ダイナミック広告
○ クリエイティブをユーザごとに生成する広告の仕組み。
主に商品レコメンドなどを取り扱う。
レコメンドアルゴリズムもMLUで作成している。
MLシステムの
研究と実ビジネスとの違い
研究と実ビジネスとで何が違うか
だいたい、この3つに絞れる
● MLを保守する必要があるということ
● 技術的負債が存在するということ
● 必要なのはMLだけじゃないということ
この3つについて説明
MLを保守する
● MLを保守する必要があるということは、
機械学習のご機嫌取りをしなきゃいけない
● 昨日の精度が明日ある保証はない。
● 研究では統計的有意差などの結果さえ残っていれば成果になる...けど
● ビジネスでは継続的にビジネスバリューを出さなければだめ。
MLシステムはデータ依存
機械学習とはそもそも
明示的なプログラミングなしに、データを元に自動で学習を行い、
コンピュータが何かしらの判断を改善していくアルゴリズム
のことであり、これには致命的なことに、明示的なプログラミングがない。
→これはつまり、データによって学習する度にMLシステムが変化することを示唆
→放っておけばモデルは腐るが、再学習すると変化してしまう
→手厚い保守が必要(というよりそれができるような徹底した自動化が必要)
技術的負債が存在
運用していくと、様々なニーズが発生
新しいシステムを作ったから
本番に適用したい。
研究して新しい理論ができたから、
A/Bテストして実験結果を見たい
新しいコードを追加したいけど、
既存のコードを大きく修正しないと
いけない💦
さらに、以下のことも出てくる。
手で作ったインスタンスを
再現することができなくて、
コードが動かない💦
こうしたことが起こると、思うように実験できない、
研究に集中できない、と言うことが発生
必要なのはMLだけじゃない
必要なのはMLだけじゃない。
(旧機械学習システムのバッチスケジューリングシステム)
なぜ機械学習基盤が必要なのか
● 実はMLシステムを運用するのに必要な要素はあまりにも大きい
● MLシステムを動かすためにはTensorflowのコードだけというわけではない
● →それぞれをスムーズに動かせる仕組みづくりが必要
https://papers.nips.cc/paper/5656-hidden-technical-debt-in-machine-learning-systems.pdfから引用
機械学習の基盤とは?
● 通常、MLプロダクトは複数存在する
● 複数存在する物を全て管理することは出来ない
○ CTR/CVR/デモグラ...✖各A/Bテストで掛け算で増えていく
● 一つ一つ自動化しても俗人化する恐れが存在
→共通した基盤を作成
機械学習基盤とは何をするのか
MLシステム化は自動化との戦い
● 多くの手運用をいかに自動化できるかがポイント。
● 多くの要素は大概自動化できる。ML研究にフォーカスできるように
その他はどんどん自動化していく
● ML研究は一番ビジネスバリューに直結。
→ここにフォーカスできるように他の大量の要素を自動化していくのが
MLOpsエンジニアの真価を発揮する部分
MLOpsで重要な4つの要素
● 自動化の上で重要な考え方を紹介
● CI/CD/CT/CEの4つ
● それぞれについて解説
CI/CDとは?
● CI/CDとは、継続的インテグレーション、継続的デリバリーの略
● 継続的インテグレーションとは、(定義がまちまちで厳密な正解じゃないが)
ツールを使って自動テスト化などを指す。
コード統合の高速化・安全化を目指す。
● 継続的デリバリー(デプロイ)とは、
自動でDockerImageを配布するなどの、デプロイ自動化を指す。
自動化により、手運用ミスのないデプロイを目指す。
CT/CEとは
● CT:継続的トレーニングのこと。
モデルのワンショットモデル化を避け、
自動学習・自動デプロイ運用を目指す
● CE:継続的評価(Evaluation)のこと
昨日のモデルが良くても明日のモデルがいい保証はない。
このことからモデルの自動評価・モデル監視などを行うことを目指す
実際弊社が行ってるCI/CD/CT/CE
● CI:DockerImageの自動ビルド・Push
● CD:DockerImageの配布、Airflowに必要なDAGファイルの配布など
● CT:Airflow上で毎日継続的に学習を実行
● CE:MLFlow上で毎日モデルの状態を計測
+異常を検知した際のSlack通知を整備
学習のイメージ
MLOpsとは?
MLOpsって何?
MLシステムを円滑に動かすために、チームの知識レベルを上げて行ったり、
文化醸成など、様々な手を尽くしてMLとOpsの両輪を回せるようにする活動
のこと。
● MLシステムは他の大きな要素が面倒
→これを円滑化・自動化していき、MLエンジニアが
MLシステムを実現するハードルを下げるのがMLOpsエンジニア
私の思うこれからの時代のMLエンジニア
● MLシステムは2個3個で終わりではない
○ 各プロダクトxA/Bテストで増えていくシステム作成のハードルを下げることが大事
● ハードルを下げるために、全体で最適化できるスキルが必要になる
○ 各部署をまたいで連携できるようにする必要がある。
● →つまり、ボトムアップで全体改善していけるエンジニアとかが必要
○ ボトムアップでチャレンジして巻き込んでいける力が必要かも。
チームとしての動きを意識する
● MLOpsはツールを作ってポイではない。
→ツールは使われて初めて意味がある。
● チームの意識改善、レベルアップなども含めてやっていく必要がある。
(+迷惑をかけないことも大事)
● そのためには、やはりボトムアップで改善していくスキルが必要。
まとめ
● MLをシステムに落とし込む際には、
ML以外の多くの要素も絡む話になるので注意。
● それらの要素をいかに自動化できるかがビジネスバリュー提供の要
○ また、自動化したら布教も大事
● これからの時代、MLOpsでボトムアップで全体最適も求められる。
○ 自分からチャレンジしていく姿勢が大事
マイクロアドで働く魅力
MLUとして働く魅力
● 何よりも挑戦させてもらえることが魅力
● 自分が1年目なのに、MLOps的なことをやろう!と言い出して、
そのまま実行に移させてくれたりする。
● 弊社全体がとりあえずやってみよう!っていう姿勢なので、
すぐにチャレンジすることができる環境が整備されている
● 皆さんも、チャレンジしてみませんか!
おわり

これから機械学習エンジニアとして戦っていくみなさんへ ~MLOps というマインドセットについて~