はじめに
この記事はCourseraのコース「Introduction to Machine Learning in Production」を受講し、要点をまとめたものです。そのため、人に読んでもらうということよりは、自分で後で見返したときに思い出すことを目的とした記事なので、誤りや見づらい点がございましたらどうぞ遠慮なくご指摘頂ければ幸いです。
本記事では、機械学習システムをデプロイする際のユースケースやケースに応じたデプロイパターンについて解説します。
デプロイパターン
ここでは3種類のデプロイパターンについて紹介されています。
- シャドーモード
- カナリアデプロイ
- ブルーグリーンデプロイ
それぞれについて詳しく見ていきます。
シャドーモード
下図は教材動画から転載したものです。教材ではスマートフォン製造過程における検査業務のシステム化を例にしてます。
このデプロイ方法では、初期段階では機械学習モデルの出力は業務の意思決定には一切関与せず、人間が従来通りの業務を遂行します。つまり機械学習モデルの出力が何だろうと、とりあえず人間の判断を仰ぐことになります。
シャドーモードのデプロイ方法の目的は、機械学習モデルがどのように実行されているか、それが人間の判断と比較してどうなのかというデータを収集・検証し、将来的に機械学習システムに実運用下で意思決定をさせるかどうかの判断材料とすることです。
既に古い意思決定システムが動いていたり、人間が作業をしている場合に、実環境に実装する手間をかけずにパフォーマンスの検証ができる効果的な方法です。
カナリアデプロイ
シャドーモードなどでの検証を終え、機械学習システムに実際の意思決定をさせる準備ができたら、一般的にはカナリアデプロイという方法をとります。カナリアデプロイでは最初は全体のトラフィックの5%以下という小さな割合で展開し、部分的に実業務の意思決定に関与させます。
トラフィックのごく一部で実行することにより、例えシステムに予期せぬ動作が生じた際にも、影響の範囲をごく一部に限定することが可能です。
同時にシステム監視を行い、パフォーマンスに自信が持てるようになったら、徐々にトラフィックの割合を拡大していきます。
余談ですが、この「カナリアデプロイ」という言葉は、昔に炭鉱夫がガス漏れを発見するためにカナリアを使っていたことに由来するそうです。
へ~ ってなりますよね。モルモットというかなんというか。カナリアかわいそうw
この辺は部署とかで区切るとなると実際のプロジェクトでは利害関係の調整が大変そうだな~と思いました。実際にはその辺の根回しや掌握がプロジェクト成功のカギを握りそうですよね。
ブルーグリーンデプロイ
これはルーターを使って、利用するシステムの向け先を旧バージョンから新バージョンにスイッチするデプロイ方法です。
ルーターのトラフィックコントロールにより、旧システムから新システムへ突然バージョン切替します。この方法のメリットはロールバックが簡単に出来ることです。新バージョンで何らかの問題があった場合には、旧バージョンにルーターの設定を切り戻すことで復旧がすぐに可能です。
一般的にはトラフィックの100%を旧から新に切り替えるようですが、徐々にトラフィックの割合を変えるような、緩やかなデプロイ方法もあるようです。
デプロイ方法を考える上でで大切なこと
いくつかデプロイの方法を紹介しましたが、システムのデプロイ方法を考える上では、「どの程度の自動化が適切か」を考えてシステム設計をすることが大切と言っています。機械学習アルゴリズムの適用が難しい業務は全て人間が行うと見極めるのも重要な判断ですし、あくまでAIはアシストの位置づけで人間の意思決定の支援をするという部分的な自動化を考えるのも重要なことです。部分的な自動化を行う場合は、人間の最終判断をフィードバックし再学習することで、よりパフォーマンスが改善し、更なる高度化・全自動化へ繋がります。
大半の場合は完全な自動化を実現する必要はありません。システムの性能やアプリケーションの要件によって適切な設計を行い、段階的な導入を行うことが最良な選択肢になり得ます。
さいごに
本記事では、いくつかのデプロイパターンをご紹介しました。また、用途に覆布手最も適切な自動化の度合いを選択する方法についても触れました。これらを検討する上では、問題を発見して対処できるようにするために、モニタリングが重要になってきます。
次回はモニタリングについての方法の詳細をご紹介できればと思います。