見出し画像

Retai AiグループのMLOpsのご紹介

初めまして。Retail AIの機械学習エンジニアのショウです。
今回は塩田さんのこちらの投稿に関連しているテーマです。
内容としては、レコメンデーションに用いる機械学習モデルをスマートショッピングカートで利用するための開発プロセスと方法の効率化について書いていこうと思います。
この投稿では、MLOpsという新しい開発方法とMLOpsを用いて、たった3人のスマートショッピングカートの機械学習チームがどう開発を効率化できているかの概要について紹介します。

MLOpsとは?

MLOpsはMachine Learning Operations(機械学習基盤)の略です。
機械学習モデルの研究内容から実装、最終的にお客様が使える形までのプロセスを効率化する過程ということです。
まずプロセスをより深く理解できるように、”ML”と”DevOps”を簡単に説明させていただきます。

■ML(Machine Learning)
ご存知の方もいらっしゃるかと思いますが、MLは Machine Learning (機械学習)の略です。機械学習とは、大量のデータからパターンを学習して特定のタスクを自動でこなす技術のことです。
通常のソフトウェアと機械学習を比較した時、通常のソフトウェアはエンジニアが書いた通りの指示で動作しますが、機械学習はデータから特徴を学んで賢くなり、通常のソフトウェアにはできないことが出来るようになります。
例えば、Retai Aiグループの場合は、商品をスキャンしたら画面で明細が表示される流れは通常のソフトウェアです。一方、大量のデータからお客様の購買行動を学習したことによりレコメンデーションを実行するソフトウェアは機械学習によるものです。

画像1

■DevOps(Development and IT Operations)
DevOpsは Software Development and IT Operationsの略で、ソフトウェア開発のリスク予防と効率化を意味します。
以前は Dev(開発)とOps(運用)という分野は分けていました。開発側は「できるだけ新しい機能を作る」という目的があって、運用側には「なるべくソフトウェアのリリースを速くし、不具合などが起こらないようにする」という目的がそれぞれありました。

画像2

しかし、「新しい機能」と「不具合」はいつも関連がありますよね。新たなものを追加したら、それは以前のものと異なっているので変化になります。その変化が原因で、バグやヒューマンエラー(人為的過誤や失敗)のもとで不具合が発生する可能性があります。特にマーフィーの法則によって「失敗する余地があるなら、失敗する」ということもありますし。
と言っても、何も機能をリリースしなければ進化はありませんよね。なので、どんな会社やプロダクトでも新しい機能を追加する必要があります。その結果、「できるだけ不具合なしで、効率的に新しい機能をリリースする」という目的になります。そのおかげでDevとOpsは結合し、DevOpsという概念が生まれました。

画像3

以下は DevOps が作られる以前の話の例です。一般的に開発者はローカル環境で新しい機能を作ります。その後、実装した機能をサービスが動いているプロダクション環境へ移行させます。
しかし、プロダクション環境のOSや設定は開発者のローカル環境と違うということは結構あります。その結果、リリースした新しい機能はプロダクション環境で動かない場合があり、そのバグが原因でサービスを止めてしまうことになりますよね。
それを防ぐために、プロダクション環境と全く同じ設定と環境の下でテストする必要があります。簡単に説明するとこのような考え方が DevOps の根底にあります。

画像4

こちらは、前説明されていた「通常のソフトウェア」で使われている流れです。

■ML + DevOps = MLOps ​
機械学習ソフトウェアは、通常のソフトウェアと比べたら実際のプログラミングだけではなく、データの取得や処理、モデルのトレーニングや実験などという多くの段階があり、基本的にはより複雑になります。
バグやエラーによってトラブルを防ぐために、各ステップごとにテストを書くような構成が求められます。

画像5

上の画像は、全体的にモデルのアルゴリズム研究からユーザーに届くまでのワークフローの概要です。
この中で最も重要なことは、ヒューマンエラーで不具合が起こらないように、可能な限り手動作業を減らすことです。つまり、モデルの開発や動作確認のためのテストなど、さらにデプロイメントまでを自動化するということです。

Retai AiグループのMLOps

以前のRetai Aiグループでは、レコメンデーションのシステム開発はほとんどの作業が手動によるものでした。
機械学習エンジニアは以下のステップを全て手動で行っていました。
(1)データを直接データベースから取得
(2)ローカル環境の jupyter notebook でアルゴリズムの実装、モデル作成までをする
(3)モデルとAPIサービスのソースコードをVMにコピーし、ユーザーにAPIとしてサービング

画像6

上記は実用最小限の製品(MVP)としては良かったけれども、徐々にスケールアップしていき、実験、開発、テスト、デプロイメントを効率化する必要がありました。例えば、新しい機能を開発したり、モデルのトレーニングデータを変更して再トレーニングする場合、最初から手動で行う必要があり時間がかかりすぎてしまいます。
ということで、MLOpsの考え方を導入しプロセスを改善しました。データサイエンティストの実験から作ったモデルが店舗で利用されるまで、段階ごとにプロセスとテストを自動化し、最終的に新しい機能や変更があっても以前のように長時間の作業が必要なく開発できてリリースすることができるようになります。

画像7

画像8

画像9

その結果、モデルの改善もAPIの新機能の開発もスムーズになり、フィードバックループが短くなるので、レコメンデーションのシステムを改善しやすくなり、お客様の買い物エクスペリエンスを素早く向上させることができます。
次の記事では、MLOpsの流れとテクニカルな部分についてもっと詳しくお話ししたいと思います。お楽しみに!

Retail AIでMLOpsのご紹介は以上です。ご精読ありがとうございました!

興味を持っていただいたらぜひ、ホームページからご連絡ください!