BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MLOps: 機械学習システムの継続的デリバリー

MLOps: 機械学習システムの継続的デリバリー

原文(投稿日:2021/08/26)へのリンク

機械学習モデルの開発、導入、生産性の維持は、多くの困難を伴う複雑で反復的なプロセスだ。MLOpsとは、MLモデル、特にMLシステムの開発にシステムの運用を組み合わせることを意味する。MLOpsを機能させるには、データサイエンスの反復と探索コンポーネントと、より線形のソフトウェアエンジニアリングコンポーネントとのバランスをとる必要がある。

DevOpsCon Berlin 2021で、finpair GmbHのシニアソフトウェアエンジニアのHauke Brammer氏は機械学習システムの継続的デリバリーとMLOpsについて講演した。

Brammer氏によると、MLOpsはDevOpsに似ているが、機械学習では次のようになるとのことだ:

MLOpsの目標は非常に単純です。生産前のステップで、可能な限り少ない作業で機械学習モデルで最良で最も再現性の高い結果を生成したいと考えています。そして、プロダクションに入るとき、モデルがどのように機能しているか、モデルがうまく機能しているかどうかを知りたいと思います。

「DevOpsツールボックスをデータサイエンティストが利用できるようにしましょう」と言う人もいるかもしれない。しかし実際には、Brammer氏が説明するように、それほど単純なことではない:

コードだけでなく、さらに重要なのは、大量のデータと大量の構成パラメータです。そのため、主にチームの規模によって決定されるMLOpsパイプライン専用のツールが必要です。データサイエンティストが2人しかいない場合に、50人のチームが使うような複雑なツールは必要ありません。

Brammer氏によると、MLOpsパイプラインは3つのセクションに分けることができる:

最初に、ソースから生データを取得してクリーンアップするデータパイプラインです。もちろん、これを常に手作業で行う必要はありませんが、再現可能な方法で行います。したがって、ここではApache AirflowやPrefectなどのデータフローツールを使用します。データをバージョン管理するためのツールも必要です。DVCはこのためのベストフレンドです。

次のステップは、データを使用して可能な限り最良のモデルを構築することです。そのためには、分散トレーニングのためのインフラストラクチャが必要です。しかし、最も重要なことは、実験を管理する方法が必要です。モデルのすべてのトレーニングは実験だからです。結果を管理するために、MLFlowやSacredなどのツールを使用できます。これにより、Excelファイルや頭の中で実験を管理する場合に比べて、作業を2倍抑えられます。私の頭の中の結果は、同僚が簡単にアクセスすることはできないからです。

モデルのトレーニングに成功したら、この完成したモデルをキャプチャしてバージョン管理することが非常に理にかなっています。プロダクションへのステップでは、既製のモデルサーバを使用するか、自分で構築するかを決定する必要があります。ここでの可能性は本当に無限です。そして、プロダクションで監視するためのツールが必要です。

Brammer氏は、MLOpsを成功させるには、ソフトウェアエンジニアとデータサイエンティストの優れた部門横断的なチームが必要であると述べた。つまり、プロジェクトの成功と失敗に最大の影響を与えるのは依然としてチームにあると述べた。

MLOpsの実証済みで標準化されたプロセスはないとしても、「伝統的な」ソフトウェアエンジニアリングから多くの経験を採用できるとBrammer氏は述べている。イノベーションや新しくて興味深いツールの余地もまだたくさんある。しかし、誰かがこれらのツールを使用する必要がある。そして、それはDevOpsでもMLOpsでも無視できない非常に重要なポイントであるとBrammer氏は結論付けた。

InfoQはデータサイエンスに継続的デリバリーを適用することとMLシステムのパフォーマンスを管理することについてHauke Brammer氏にインタビューした。

InfoQ: データサイエンス環境で継続的インテグレーション、継続的デリバリー、継続的デプロイメントを行う場合、どのような困難に直面するのでしょうか?

Hauke Brammer氏: データサイエンス環境の全体的な問題は、「伝統的な」ソフトウェアのすべての問題と困難に対処しなければならないことです。それに加えて、機械学習を扱うときに発生する問題にも対処する必要があります。

たとえば、データサイエンスは、実験によって信じられないほど推進されます。ソフトウェアエンジニアリングははるかに直線的で予測可能です。しかし、モデルがプロダクションで直面する問題もあります。データでMLモデルをトレーニングする場合、そのデータは常に過去の世界の不完全なスナップショットです。新しいモデルを実際にデプロイする時期を認識するのは簡単ではありません。

また、組織に関連する課題もあります。MLプロジェクトチームを一方のデータサイエンティストと他方のソフトウェアエンジニアに分割すると、意味のあるDevOpsフローが得られません。

InfoQ: MLシステムのパフォーマンスを監視するためには何ができるのでしょうか?

Brammer氏: MLシステムを監視するときは、実際にはクラシックなDevOpsツールの、Prometheus、Grafana、Elastic Stackを使用します。違いは、監視対象にあります。

また、従来の指標のレイテンシにも注意を払う必要があります。たとえば、モデルが新しい値を予測するのにどのくらい時間がかかりますか? またはリソース消費は。すべてのリクエストを処理するために、モデルサーバの3番目や4番目のインスタンスをプロビジョニングする必要がありますか?

ただし、MLモデル専用に監視しなければならないものもいくつかあります。

私なら間違いなくモデルの予測をキャプチャしたいと思います。一つには、単一の値が重要です。予測はまだ妥当な範囲内にあるだろうか? モデルは明日私のアプリで「-15」ユーザを予測するだろうか? そのときは、何かがとても間違っています。

予測の分布も非常に重要です。分布は期待する値と一致しますか? 予測されたクラスと観測されたクラスの間に大きな偏差がある場合、予測バイアスがあります。これは、モデルを再トレーニングする必要があることを明確に示しています。

さらに、次の質問に答える必要があります: モデルはどのような入力データを取得しますか? 特に機密性の高いビジネスデータや個人データを処理している場合はどうなりますか? もちろん、機密データをできるだけ少なくキャプチャする必要があります。一方、モデルを改善およびデバッグするためのデータも収集する必要があります。これは非常に非常にエキサイティングな課題の分野であり、今後数年で多くのことが起こると思います。

この記事に星をつける

おすすめ度
スタイル

BT