最終更新日:
Tyagi氏によれば、MLOpsとはMachine Learning(機械学習)とソフトウェア開発におけるDevOpsが結合して誕生した造語です。この用語は、機械学習システム構築の需要が高まるにつれて、機械学習モデルのコーディングに加えて、学習データの収集やシステム・メンテナンスといった周辺業務が不可欠になった結果、機械学習版のDevOpsが必要になったために考案されました。
MLOpsでは、以下のような7つの業務の遂行が求められます。
- ビジネス目標の機械学習的問題への翻訳
- 機械学習システムに必要な学習データの選定
- 学習データの収集とモデル訓練の準備
- モデルの訓練と実験
- パイプラインの構築
- 本番環境への実装
- モデルの監視とメンテナンス
以上のような業務には、機械学習に関する技術的知識に精通しているわけではない企業管理職、データサイエンティスト、機械学習エンジニアといったさまざまな立場の人々が関わります。それゆえ、技術的な話題をビジネス的な話題に翻訳する(あるいはその逆)ことが重要になります。
MLOpsが普及するにつれて、データサイエンスや機械学習の知識とソフトウェア工学のそれを併せ持つ人材が重宝されるようになる、ともTyagi氏は述べています。
MLOpsは日本でも普及すると予想されるので、それに関する基礎知識は日本のAI業界関係者に必須のものとなるでしょう。
なお、以下の記事本文はHarshit Tyagi氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。また、翻訳記事の内容は同氏の見解であり、特定の国や地域ならび組織や団体を代表するものではなく、翻訳者およびAINOW編集部の主義主張を表明したものでもありません。
目次
MLシステム開発のライフサイクルとMLOpsの必要性を徹底解説
つい最近まで、私たちはソフトウェア開発ライフサイクル(Software Development LifeCycle:SDLC)について、用件抽出→設計→開発→テスト→実装→メンテナンスまでの流れを学んでいた。ソフトウェア開発のウォーターフォールモデル、反復モデル、アジャイルモデルも(現在にいたるまで)学んできた。
今、ほとんどすべての組織がAI/ML(Machine Learning:機械学習)を自社製品に組み込もうとしている段階にある。このMLシステムの構築という新たな要件は、SDLCのいくつかの原則に追加・変更を加え、MLOpsと呼ばれる新たなエンジニアリング分野を生み出した。
MLOps – この新しい言葉が登場して話題を呼び、新しい職種を生んでいる。MLOpsはMachine Learning Operationsの略で、ModelOpsとも呼ばれる。
この記事では、以下について解説する。
- MLOpsとは何か
- それが扱う重要な課題は何か、そして
- それはどのような構成をしているか
- どのようなスキルと経歴が組み合わさった人材を登用すべきか、そして、どのように始めるとよいのか
以上の内容をセクションごとに展開していくので、ぜひご笑覧頂きたい。
Googleトレンドで調べてみると、現在より多くの組織が自社の製品やプラットフォームにMLシステムを統合しようとしているため、比較的新しい分野であることがわかる。
定義
私が考えるMLOpsの定義は以下の通りだ。
MLOpsとは、MLシステムの開発(dev)とMLシステムの実装(ops)を統合して、本番環境にある高性能なモデルの継続的提供を標準化・効率化することを目的としたエンジニアリング分野である。
なぜMLOpsなのか?
最近までは管理可能な量のデータと、ごく少数のモデルを小規模に扱っていた。現在では状況が変わって、さまざまなアプリケーションに意思決定の自動化を組み込むようになったため、MLベースのシステムの構築と実装に伴う多くの技術的課題が生じている。
MLOpsを理解するためには、まずMLシステムのライフサイクルを理解する必要がある。このライフサイクルには、データドリブンな組織のさまざまなチームが関わっている。サイクルの最初から最後までのあいだで関わっているのは、以下のようなチームである。
- ビジネス開発または製品を扱うチーム – KPIを伴うビジネス目標の定義
- データエンジニアリング – データの取得と準備
- データサイエンス – MLソリューションの構築とモデルの開発
- ITまたはDevOps – 本番環境のセットアップ、監視、データサイエンティストとの連携を完全遂行
以下の図では、MLのライフサイクルを非常に簡略化して表現する。
- ビジネス上の目標からML的問題へのとらえ直し
- モデルに必要なデータへのアクセス、準備、処理
- MLソリューションの設計とMLモデルの開発
- モデルの実装
- モデルパフォーマンスの監視、最適化、維持の反復
Googleのチームは、MLベースのシステムを構築する際の技術的な課題について多くの研究を行ってきた。NeurIPSの論文「MLシステムにおける隠れた技術的負債」では、モデルの開発は全体のプロセスのごく一部に過ぎないことが示されている。モデル開発のほかにも多くのプロセス、構成、ツールをシステムに統合する必要があるのだ。
- システム全体の構成を定義する(Configuration)
- データの収集(Data Collection)
- データの検証(Data Verification)
- 特徴量の抽出(Feature Extraction)
- MLシステムのコーディング(ML code)
- 分析ツールの使用(Analysis tool)
- サービス提供環境の構築(Serving Infrastructure)
- MLシステムの監視(Monitoring)
- プロセス管理ツールの使用(Process Management tools)
- マシンリソースの管理(Machine resource management)
MLシステム全体を効率化するために、新しい機械学習エンジニアリングの文化が生まれた。こうして生まれたMLOpsシステムには、技術的なスキルがほとんどない上層マネジメント部から、DevOpsを扱えるデータサイエンティスト、MLエンジニアまでが関わることになった。
MLOpsが解決する主な課題
大規模なMLシステムを管理することは容易なことではなく、多くのボトルネックに対処しなければならない。以下は、チームが直面する主な課題となる。
- スケーラブルなWebアプリケーションの開発と実装を得意とするデータサイエンティストの不足。最近の市場では、このニーズに応えることを目的とした新しいMLエンジニアのスキルセットがある。それは、データサイエンスとDevOpsが交差するMLエンジニアリングにおけるスイートスポットだ。
- 変化するビジネス目的のモデルへの反映 – データの継続的な変化、モデルの性能基準の維持、AIガバナンスを確保などのあいだには多くの依存関係がある。継続的なモデルの訓練と進化するビジネス目的に対応するのは大変な作業だ。
- 技術チームとビジネスチームのあいだにあるコミュニケーションギャップ。彼らが共同作業するための共通言語を見つけるのは難しいのだ。多くの場合、このギャップが大きなプロジェクトの失敗の原因となる。
- リスク評価 – ML/DLシステムのブラックボックス性については、多くの議論がなされている。多くの場合、モデルは最初に意図したことから離れてしまう傾向がある。このような失敗のリスクと(失敗によって生じる)コストを評価することは、非常に重要で綿密に行うべきステップだ。例えば、YouTubeで見当違いな動画を推薦された場合に生じるコストは、無実の人に詐欺のフラグを立て、その人のアカウントをブロックしたり、ローンの申請を誤って断ったりすることに比べれば、はるかに低いだろう。
主要なフェーズ – MLOpsを使いこなすために必要なこと
この時点ですでに、システムのボトルネックと、それを解決するMLOpsの仕組みについて、多くの示唆を与えてきた。ターゲットにすべきスキルは、以上の課題から導き出せるだろう。
MLOpsを活用するうえでカギとなるフォーカスすべきスキルとは、以下の通りである。
1.ビジネスの目的からMLの問題をとらえる
機械学習システムの開発は、通常、ビジネス上の目標や目的の設定から始まる。それは、不正取引の割合を0.5%以下にするという単純な目標であったり、皮膚科医がラベル付けした画像から皮膚がんを検出するシステムを構築することであったりする。
これらの目的には、特定のパフォーマンス指標、技術的要件、プロジェクト予算、実装されたモデルを監視するプロセスを推進するKPI(Key Performance Indicators)が含まれていることが多い。
2.問題に対するMLとデータを使ったソリューションを構築
目的を明確にMLの問題に変換した後は、次のステップに進む。次のステップは、適切な入力データと、そのデータに対してどのようなモデルを試すべきかを探し始めることだ。
データの検索は最も骨の折れる作業のひとつだ。それは、以下のような項目を確認する作業を伴うプロセスである。
- 利用可能な関連データセットを探す必要がある。
- データの信憑性とそのソースを確認する。
- データソースは、GDPR(※訳註3)などの規制に準拠しているか。
- データセットにどのようにアクセスするか。
- データソースの種類は、静的(ファイル)かリアルタイムストリーミング(センサー)か。
- 使用するデータソースの数はいくつか。
- モデルが本番環境に導入された後、訓練と最適化の両方を推進できるデータパイプラインをどのように構築するのか
- どのようなクラウドサービスを利用するのか?
3.データの準備と処理 – データエンジニアリングのパート
データの準備には、特徴量エンジニアリング、クリーニング(フォーマット、外れ値のチェック、欠陥値補完、リバランスなど)、そして根本的な問題のアウトプットに貢献する特徴量セットの選択といった作業が含まれる。
完全なパイプラインを設計し、コード化することで、クリーンで互換性のあるデータを生成し、モデル開発の次の段階に送り込める。
パイプラインを導入する際に重要なのは、パフォーマンスとコスト効率に優れたクラウドサービスとアーキテクチャの適切な組み合わせを選択することである。例えば、データの移動が多く、膨大な量のデータを保存する場合は、AWS S3とAWS Glueを使ったデータレイク(※訳註4)の構築を検討するとよい。
以上の内容を検討するために、(バッチやストリーミングのような)いくつかの異なる種類のパイプラインを構築し、それらをクラウド上に実装する練習をしてみたいと思うことだろう。
4.モデルの学習と実験 – データサイエンス
データの準備ができたら、次はMLモデルの訓練の段階に移る。訓練の初期段階では、さまざまな種類のモデルを繰り返し使用する。正答率、適合率、再現率など、いくつかの定量的な指標を用いて最適なソリューションを絞り込んでいく。また、モデルを駆動している数学を考慮したモデルの定性的な分析もできるだろう。この分析は、簡単に言えば、モデルの説明可能性である。
MLモデルの訓練については、以下のような完全なタスクリストがあるので、ぜひお読み頂きたい。
この段階では、さまざまな種類のデータやパラメータを使って、たくさんの実験を行うことになる。データサイエンティストがモデルを訓練する際に直面するもう一つの課題は、再現性だ。この課題は、モデルとデータをバージョン管理することで解決できる。
(再現性を確保するために)MLシステムを構成するすべての(主にデータやモデルを含んでいる)コンポーネントをパラメータと一緒にして、バージョン管理というプロセスを追加できる。
DVCやCMLのようなオープンソースのツール(※訳註6)が開発されたことで、バージョン管理が非常に簡単に実現できるようになった。
その他の作業は以下の通り。
- モデル訓練用のユニットテストを書いて、モデルをテストする。
- ベースラインやよりシンプルなモデル、さらにはさまざまなサイズのモデルでチェックしてみる。
- 分散システム、ハードウェアアクセラレータ、スケーラブルな分析を用いて、モデルの訓練の規模を拡大する。
5.MLパイプラインの構築と自動化
MLパイプラインは、以下の作業を念頭に置いて構築する。
- システム要件(パラメータ、必要な演算能力、トリガー)の特定
- ハイブリッドやマルチクラウドなど、適切なクラウドアーキテクチャの選択
- 訓練とテストのそれぞれに対応したパイプラインの構築
- 駆動中のパイプラインの追跡と監査
- データ検証を実行
6.モデルの本番システムへの実装
MLモデルを実装する方法は、主に2つある。
- 静的実装または組み込みモデルとは、モデルをインストール可能なアプリケーションソフトウェアにパッケージ化してから実装すること。例えば、リクエストのバッチスコアリングを提供するアプリケーションなど。
- 動的実装 – FastAPIやFlaskなどのWebフレームワークを使用してモデルを実装し、ユーザのリクエストに応答するAPIエンドポイントとして提供する。
動的実装では、さまざまな方法が使える。
- サーバー(仮想マシン)への実装
- コンテナへの実装
- サーバーレス実装
- モデルストリーミング – REST APIの代わりに、モデルとアプリケーションコードのすべてが、Apache Spark、Apache Storm、Apache Flinkなどのストリーム処理エンジンに割り当てられる。
実装時に必要な考察は、以下の通り。
- 適切な文書化とテストのスコアが満たされていることを確認する。
- モデルの正答率を再検証する。
- 説明可能性チェックの実施。
- すべてのガバナンス要件が満たされていることを確認する。
- データアーティファクト(※訳註7)の品質チェック。
- 負荷テスト – コンピュートリソースの使用状況の確認。
7.モデルの監視、最適化、メンテナンス
組織は、稼働中のモデルのパフォーマンスに目を配りつつ、適切で公正なガバナンスを確保する必要がある。ここでいうガバナンスとは、モデルの影響を受けるすべてのステークホルダー、従業員、ユーザに対して、モデルが責任を果たすことを確実にするための管理策を講じることを意味する。
このフェーズの一環として、本番環境にあるシステム全体を維持するために、以下の作業を実行するデータサイエンティストとDevOpsエンジニアが必要になる。
- モデルのパフォーマンス劣化の追跡を続け、モデルの予測品質をビジネスレベルに維持する。
- ロギング戦略の設定と、継続的な評価指標の確立。
- システム障害やバイアスの混入に対するトラブルシューティング。
- 本番環境に実装された訓練パイプラインとサービングパイプラインの両方において、モデルのパフォーマンスをチューニングする。
さらにおすすめの読み物…
この記事では、MLOpsとは職種ではなく、複数の関係者によるエコシステムであることを示した。MLとソフトウェアエンジニアリング(DevOps)を掛け合わせて仕事をする人は、MLシステムをエンドツーエンドで扱える人材を求めているスタートアップや中規模組織に適していると思われる。
MLエンジニアは、MLを導入したいスタートアップや中規模組織が求めるスイートスポットを提供するポジションなので、意欲的な求職者が狙うべきものだ。以下に、MLエンジニアリングに関して見るべき資料をいくつか紹介する。
- (書籍):Andriy Burkov氏によるMLエンジニアリングの書籍(※訳註8)
- (書籍):オライリーメディア出版のMLOps入門書
- 下記のような認定プログラムも目指せる。
また、このブログの動画版もご高覧頂ける。
アップデート: このトピックについて、Dmitry Petrov氏(※訳註9)にさらに話を聞いてみたので、以下の動画からこの記事の著者である私と同氏の対談を聴く(あるいは見る)ことができる。
次のステップ
今後はGoogle CloudやAWSを使ってエンドツーエンドのMLシステムを構築するためのチュートリアルやビデオのシリーズを展開していく予定。私のニュースレターを購読して、最新情報を入手してください。
✨告知 – 本番環境にすぐ使えるMLパイプラインの構築に関するコホートベースの講座✨
こんにちは。私は、3週間のコホート型講座「Building ML Production Pipelines」を立ち上げようと考えています。まずは教材を完成させるために、ベータ版のコホートから始めようと思っています。ベータ版は800ドルで、最終的な価格よりも大幅に割引されています。
私と私のチームがライブクラスを担当し、GoogleのTensorFlow Extended、Apache Airflow、Kubeflow、Google Cloud Platformなどのツールを使った堅牢なMLパイプラインの構築について学んだことをすべてお伝えします。この講座で学ぶ技術スタックを使えば、#Spotify、#Airbnb、#twitterなどのようにアプリを強化できるようになります。
ご興味のある方は、こちらのフォームにご記入ください。
講座のゴール
目標は、受講者の初級MLエンジニアリングのキャリアを加速することです。
講座の価値
この講座を修了すると、より自信を持って、より逞しいMLエンジニアになれます。これは、私がMLエンジニアリングに飛び込んだときに欲しかったものです。
講座から学ぶこと
notebookモデルを本番環境に移行するために必要な、MLパイプラインの個々のコンポーネント(インフォグラフィックに示されています)を一緒に解き明かしていきます。
講座は、プロジェクトをこなしながら学んでいきます。
教材と指導方法
- アクティブラーニングを容易にするワークショップと受動的指導より実践を重視するセッション
- 同じスキルレベルであるコホートの仲間と一緒に学ぶ – Zoomのブレイクアウトグループ、熱心なslackコミュニティ、グループプロジェクトなどを用意
- スタディガイド、フラッシュカード、AMA(Ask Me Anything:「何でも聞いて」という意味のスラング)へのアクセスが付属した応用コースも用意
受講すべき人
このコースは、すでに大規模なMLモデルの訓練を行っており、これから完全なMLパイプラインを構築する技術を学びたいと考えている人を対象としています。より実践的なエンジニアリングの役割に移行しているデータサイエンティストや、キャリア2年未満の新米MLエンジニアも向いています。
連絡してください
私のTwitterのDMは問い合わせ用にオープンになっています。また、この記事が役に立った、もっと見たいという方は、TwitterやLinkedInでつながってください。また、私のYouTubeチャンネルをチャンネル登録して、データサイエンスに関するより多くのコンテンツをご覧ください。
私の週刊データサイエンス・ニュースレターを購読すれば、図解入りのチュートリアル、実用的なプロジェクトのアイデア、ライブ・トレーニング・セッションなどをあなたの受信箱に直接お届けします。
原文
『What is MLOps — Everything You Must Know to Get Started』
著者
Harshit Tyagi
翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)
編集
おざけん