Machine Learning Design Patterns
Design
Pattern 27:
Model
Versioning
hei4
図は以下から引用:
Lakshmanan, Valliappa, Sara Robinson, and Michael Munn.
Machine learning design patterns. " O'Reilly Media, Inc.", 2020.
Problem
• 機械学習モデルは環境の変化を反映するように定期的に更新する必要がある。
本番環境でモデルを更新すると、モデルの動作に影響が出ることは避けられない。
ユーザーが以前のバージョンを選択できる仕組みが必要
事例)本の説明文からジャンルを予測して、レコメンドするシステム
新しいデータで再訓練すると、全体の精度は向上するが古い本の精度は落ちる
• 本番環境で新しいモデルの挙動を以前と比較したり、一部のユーザーだけでテス
トするなど、既存のユーザーに迷惑をかけずにモデルを継続的に更新するソリュー
ションが必要
Solution
• 異なるRESTエンドポイント*の複数のバージョンをデプロイする。後方互換性が確
保され、古いバージョンに依存しているユーザーもサービスを利用できる
• 加えて、バージョン管理を行うことでバージョン間のきめ細かなパフォーマンス監視や
分析が可能になる。精度や使用状況の統計から、特定のバージョンをオフラインに
するタイミングを判断することもできる
• モデルをアプリケーションのフロントエンドから切り離せる効果もある。新しいバージョ
ンを追加するには、RESTエンドポイントを変更するだけでよい
* APIにアクセスするためのURL
Solution
• モデルの「エンドユーザー」には2種類存在する
• モデルのエンドポイントを利用する社外のアプリケーション開発者:モデルに依存し
たアプリケーションを構築している。バージョン管理による後方互換性の担保を、最
も重要視する
• デプロイされたモデルを呼び出すアプリケーションの利用者:後方互換性の問題に
直面する可能性は低い。アプリケーションの新機能(=新しいバージョン)を使い
始めるタイミングを自分で選択したい場合がある
Solution
Cloud AI Platform でのバージョン管理の例
• テキストではCloud AI Platformでのバージョン
管理の方法が紹介されている
• モデル自体の変更だけでなく、新しい訓練データ
が利用可能になった場合にもバージョン管理を
行う。そのためには、各バージョンの学習に利用し
たデータの追跡を行えることが重要。データのタイ
ムスタンプの範囲を、モデルのバージョン名に含め
るという方法がある
Trade-Offs and Alternatives (1)
Other serverless versioning tools TensorFlow Serving
• 一般的なサーバーレス製品でも、機械学習モデ
ルのバージョニングは実行できる(Cloud Run
など)
• AI Platform Predictionの長所は、機械学
習モデルのデプロイに特化して構築されていること。
機械学習モデルに最適化されたGPUを使ったデ
プロイのサポート、ライブラリの依存関係の管理
• TensorFlow Servingのようなオープンソース
ツールを使用しても、モデルのバージョニングは行
うことができる
• TensorFlow Serving API にはモデルのバー
ジョニングのサポートが組み込まれている。
SeldonやMLFlowなど、他のオープンソースのモ
デルサービングの選択肢も存在する
Trade-Offs and Alternatives (2)
Multiple serving functions New models versus new model versions
• 複数のバージョンをデプロイする別の方法として、
1つのモデルに対して複数のサービング関数を定
義する方法がありうる
• Model Versioningパターンとの大きな違いは、
モデルは1つだけで、そのモデルがデプロイされると
すべてのバージョンが同時に更新されてしまうとい
うこと
• モデルのタスクが変更された場合は、全く新しいモ
デルを作成することを勧める。新しいタスクではモ
デルの出力形式が異なり、出力を変更すると既
存クライアントを破壊する可能性があるため
• 迷ったときは、既存顧客にアップグレードしてほし
いかどうかを考える。答えがイエスなら、タスクを変
更せずに新しいバージョンを作成すれば十分。
Model Versioning
どんなメリットがある?
• 本番環境のモデルを最新の状態に保ちながら、既存
モデルのユーザーに悪影響を与えないようにできる
• バージョン間での詳細な分析やパフォーマンスの監視
ができる
どうやって解決する?
• 異なるRESTエンドポイントを持つ複数のモデルバー
ジョンをデプロイして、後方互換性を確保する
• モデルをバージョン管理し、バージョン間の比較試験
や分析を行う
どんなときに使う?
• 本番環境でモデルを継続的に更新するとき
トレードオフや関連手法はある?
• 関連手法:新しい学習データが利用可能になったと
きにもバージョニングを行う
• 関連手法:予測タスクが変更された場合はバージョ
ニングではなく新しいモデルリソースを作成する

Model versioning pattern