💫
MLOpsの概要
MLOps(Machine Learning Operations)とは
機械学習(ML)モデルの開発、デプロイ、運用、継続的改善を一貫したワークフローで管理するためのフレームワーク。
データのバージョニングやモデルの監視、自動デプロイなどを含み、機械学習のプロジェクトをスケーラブルかつ再現性のある形で運用することを目的としている。
(ソフトウェア開発のDevOpsの概念を機械学習に適用したもの)
従来のML開発の課題
-
手動管理の負担が大きい
例:データ収集、前処理、モデルの再学習、デプロイがすべて手作業で行われると、開発のたびに時間がかかる。
-
実験と本番運用のギャップ
例:ローカル環境で動作していたモデルが、本番環境の計算リソースやライブラリの違いによってうまく動作しない。
-
データやモデルのドリフトによる劣化
例:ECサイトのレコメンドモデルが、ユーザーの購買傾向の変化に適応できず、精度が徐々に低下していく。
MLOpsの主要なフェーズ
①データ管理
データの取得、前処理、バージョニングを行う。
主なタスク
- データ収集(スクレイピング、データベース、APIなど)
- データ前処理(欠損値処理、正規化、特徴量エンジニアリング)
- データバージョニング(DVC、MLflow、Delta Lakeなど)
主なツール
- DVC(Data Version Control):Gitライクなデータバージョン管理ツール
- MLflow:機械学習モデルのライフサイクル管理ツール。実験管理(ハイパーパラメータ、メトリクス、モデルの比較)、データやモデルのバージョン管理、モデルデプロイができる
- Delta Lake:データレイクのためのストレージレイヤー。ACIDトランザクション、バージョン管理を行う
- Apache Airflow:ワークフロー管理ツール。データの取得、前処理、学習パイプラインをスケジューリングできる
②モデルの開発
MLモデルのトレーニングと評価を行う。実験を再現性のある形で管理する。
主なタスク
- モデルの設計、トレーニング
- ハイパーパラメータチューニング
- 実験管理
主なツール
- Hugging Face Transformers:NLP、画像生成、音声認識などの事前学習済みモデルを簡単に活用できるライブラリ。ファインチューニングや推論の最適化もできる。
- TensorFlow / PyTorch:ディープラーニングの2大フレームワーク。モデルの開発、学習、推論を行うための基盤。TensorFlowは大規模デプロイ向け、PyTorchは研究開発やLLMのファインチューニングに。
- MLflow / Weights & Biases:機械学習の実験管理、モデルバージョニング、メトリクス可視化を行うツール。MLflowはデータバージョン管理やデプロイ、W&Bはリアルタイムの実験可視化や最適化ができる。
- Optuna / Ray Tune:モデルのハイパーパラメータ最適化に特化したツール。Optunaはローカルで軽量な最適化ができ、Ray Tuneは大規模分散環境でのハイパーパラメータ探索ができる。
③モデルのパッケージング
学習したモデルを本番環境で動かせる形式に変換し、推論を最適化する。
主なタスク
- モデルの軽量化
- 量子化(Quantization):モデルのパラメータを32-bit浮動小数点から16-bitや8-bit整数に変換し、推論制度を向上させる手法。
- 蒸留(Knowledge Distillation):大規模モデル(Teacher)から軽量なモデル(Student)に知識を転送し、パフォーマンスを維持しつつ計算コストを削減する手法。
- モデルのエクスポート
主なツール
- ONNX(Open Neural Network Exchange):異なるフレームワーク間でモデルを互換性のある形式に変換できるオープンフォーマット。例えば、TensorFlowやPyTorchで学習したモデルをONNXに変換し、ONNX Runtimeで推論することができる。
- TensorRT(NVIDIA TensorRT):NVIDIA GPU向けにモデルを最適化し、推論を高速化するツール。量子化など。大規模なLLMや画像認識モデルをデプロイする際に必須のツール。
- Pickle:Pythonオブジェクトをバイナリ形式で保存(シリアライズ)、復元(デシリアライズ)するための標準ライブラリ。Scikit-learnなどの小規模モデルの保存や、Python環境内でモデルを素早く再利用できる。
- SavedModel:TensorFlowの標準的なモデル保存フォーマット。モデルの重み、グラフ、メタデータを含む。
- TorchScript:PyTorchのモデルを最適化して保存、デプロイできる形式。PyTorchモデルをPython環境外(C++、Rust、モバイル)でも動かせるようになる。
④モデルのデプロイ
学習済みのモデルをAPIとして公開、運用環境にデプロイする。
主なタスク
- モデルのAPI化
- デプロイ方法
- クラウド
- コンテナ
- サーバレス
主なツール
- FastAPI / Flask:機械学習モデルをAPIとして公開するためのPythonフレームワーク。FastAPIはFlaskよりも高速で非同期対応。
- Docker / Kubernetes:モデルをコンテナ化(Docker)し、大規模なデプロイ環境を管理(Kubernetes)するツール。
- AWS SageMaker / GCP Vertex AI:クラウド上でMLモデルをデプロイ&運用するためのプラットフォーム。クラウドのスケーラビリティを活かしつつ、管理負担を減らせる。
⑤モデルのモニタリング、運用
本番運用中のモデルの精度、レスポンス速度、データドリフトなどを監視する。
主なタスク
- モデルの監視
- 推論結果の品質(精度の変化)
- モデルのレスポンス時間
- 入力データの変化(データドリフト)
- 再学習の自動化(データが増えたら自動で再トレーニング)
主なツール
- Prometheus & Grafana:リアルタイムでシステムのメトリクスを監視、可視化するツール。MLモデルの運用では、推論速度(レイテンシ)、リクエスト数、メモリ使用量、エラー率などを監視するのに使われる。
- Evidently AI:データドリフトやモデルの性能変化を監視するオープンソースツール。機械学習モデルはデータの変化に敏感なので、運用中にデータドリフト(入力データの分布変化)や精度低下を検出する必要がある。
- MLflow:モデルの精度の履歴管理、再トレーニング、A/Bテストに活用される。
⑥継続的学習
データが変化し続けるので、モデルを継続的に更新する仕組みを構築する。
主なタスク
- データの自動収集
- モデルの自動トレーニング&デプロイ
- A/Bテストでの性能評価
主なツール
- Kubeflow Pipelines:機械学習のトレーニング、デプロイ、評価を自動化するオープンソースのワークフローツール。データ取得→前処理→学習→評価→デプロイのフローをKubernetes上でスケーラブルに管理することができる。
- GitHub Actions + MLflow:GitHub Actionsは、コードの変更をトリガーにして自動的にパイプラインを実行するCI/CD(継続的インテグレーション&デリバリー)ツール。MLflowと組み合わせることで、MLモデルの実験管理、バージョニング、デプロイを自動化できる。(具体的にはGitにプッシュすると再学習を自動実行するなど)
- Canary Deployment:新しいモデルを少数のユーザーに提供し、問題がないことを確認してから本番環境へ段階的に展開するデプロイ手法
Discussion