Penguin Explorer - フルスタックMLデモ
MLOps
Full-stack
R
Python
Docker
完全なMLアーキテクチャ:モデルからAPIまで、RとPythonで
背景と課題
技術的課題:モダンなアーキテクチャでMLモデルをエンドツーエンドでデプロイするには?
このプロジェクトでは、有名なPalmer Penguinsデータセットを使用した完全なMLアーキテクチャを実演します。目標はモデル自体(単純な線形回帰)ではなく、デプロイインフラストラクチャです。
アーキテクチャ
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ DuckDB │────▶│ scikit- │────▶│ Vetiver │
│ (データ) │ │ learn │ │ (レジストリ) │
└─────────────┘ └─────────────┘ └─────────────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ FastAPI │ │ Shiny │ │ Shiny │
│ (API) │ │ (Python) │ │ (R) │
└─────────────┘ └─────────────┘ └─────────────┘
アーキテクチャのハイライト
- Vetiverとpinsによるモデルレジストリ(バージョン管理)
- OpenAPIドキュメント付きの自動生成API
- デュアルフロントエンド:Shiny PythonとShiny R
- Docker Composeによる完全なコンテナ化
- GitHub ActionsによるCI/CD
実装
モデルトレーニング&レジストリ
Vetiverを使用してAPIを自動生成するバージョン管理されたモデルを作成。
Docker Composeデプロイメント
3つのサービスをデプロイ: - API(Vetiver経由のFastAPI):http://localhost:8080/docs - フロントエンドPython(Shiny):http://localhost:8000 - フロントエンドR(Shiny):http://localhost:3838
GitHub ActionsによるCI/CD
mainブランチへのプッシュ時に自動デプロイ、gh-pagesへのドキュメント公開。
テクノロジー
| コンポーネント | テクノロジー |
|---|---|
| データ | DuckDB、palmerpenguins |
| ML | scikit-learn |
| モデルレジストリ | Vetiver、pins |
| API | FastAPI、Uvicorn |
| フロントエンドPython | Shiny for Python |
| フロントエンドR | Shiny |
| コンテナ化 | Docker、Docker Compose |
| CI/CD | GitHub Actions |
| ドキュメント | Quarto |
学び
このプロジェクトはMLOpsのベストプラクティスを示しています:
- 関心の分離:モデル、API、フロントエンドを分離
- モデルレジストリ:Vetiverによるモデルバージョン管理
- APIファースト:標準APIを通じてモデルを公開
- マルチ言語:RとPythonが調和して共存
- コンテナ化:Dockerによる再現可能な環境
- CI/CD:GitHub Actionsによる自動デプロイ