MLOpsの必要性について,イントロして紹介されている.
実世界のシステムにおいて,機械学習モデルは日々変化していくデータによってモデルの性能が低下or劣化していくことがあり,それを検知するためにデータやモデルのモニタリングが必要不可欠なわけで,この兆候をトリガーにしてモデルの再学習やパイプラインの再実行が要求される.ただ,これらが期待通りに動作しているかどうかを確認できるようにすることもまた必要で,なかなか難しい問題がある.
この論文では,CI/CDで実現する自動化パイプラインのアプローチの調査内容がメインとのこと.
以降のセクションの内容
DevOpsの2つの主なコンセプト
CIとCDの違いとしては,CI=ソフトウェアの品質チェック(テストコードとかプログラムの静的解析(Linter)とか)で,CD=本番環境でアプリケーションを利用できるようにすることという感じ.
この辺は個人的な偏見もあるけど,MLエンジニアの人は気にしない人が多いなーという印象.他の人の話も聞いてみたいけど,ABテストまでは結果が出るかわからないから,スピード重視で世に出して結果が良さげなら考えるという話もあるけど,それは意味があるのかと思ってしまう.
前職でプロダクトを開発してた時は(どの粒度でテストコードを書くかは別にあるとして),テストコード書かないとプロダクトを世に出せなかったので,最低限サービスやプロダクトを提供する立場としてやはり書くべきだと思ってる.
一方で,機械学習のテストコードは何をテストすれば良いのかは難しい問題で,以前のMLOps勉強会で松谷さんが紹介してくれた内容は大いに参考になると思う.
Difference between testing ordinary software and testing software using machine learning
この章では,もう一つ機械学習パイプラインのコンポーネントの再利用性,パイプライン全体で共有できるものが必要だと言及されていて,その方法としてDockerによるコンテナ化を上げている.大規模なアプリケーションの場合,何千ものコンテナをデプロイする必要があり,管理が大変なので,Kubernetesのようなコンテナオーケスレーションでその問題を解決していくとのこと.
Kubernetesは使ったことなくて使ってみたい気持ち😆 そのメリットデメリットや経験による勘所みたいなところを知りたい.ただ自分自身が経験しないとピンと来ないと思うので,どこかで大きめのサービス開発に携わりたいと思ってる.(実サービスで携われるところお待ちしてます笑)