#0105（2025/04/13）ML Pipeline Frameworkの実装

# 📚 ML Pipeline Framework

本プロジェクトは、機械学習モデルの構築・評価を効率化し、再現可能かつ柔軟な実行環境を整備することを目的とした、scikit-learnベースのパイプライン実行フレームワークです。

各種データセットやパイプラインをJSON設定ファイルに定義することで、簡単に切り替え、実験の効率を向上させます。

## 🚩 開発の目的・背景

- モデル開発の再現性・管理性を向上させる
- 柔軟なパイプライン構成を可能にする
- コンポーネントの拡張・再利用を容易にする
- モデル実験の効率化、コード管理の簡素化を目指す


## 📌 主な特徴
- パイプラインの定義をコードから切り離し、JSONで設定可能
- データセットもJSONファイルで定義し、動的に選択可能
- Preprocessor、Transformer、Feature Selector、Estimatorをカテゴリ別に整理し、保守性を向上
- pytestを利用した自動テストの導入で、品質保証を確保



## 🗃 プロジェクト構成図

```plaintext
ML Pipeline Framework
├── configs/
│   ├── pipelines.json       # パイプライン設定ファイル
│   └── datasets.json        # データセット設定ファイル
├── src/                      # コアモジュール群
│   ├── component_mapping.py  # カテゴリ別コンポーネント定義
│   ├── pipeline_loader.py    # JSON設定からPipeline構築
│   ├── dataset_loader.py     # JSON設定からデータセット読み込み
│   └── executor.py           # パイプライン実行・評価
├── tests/                    # pytest によるユニットテスト
│   ├── test_pipeline_loader.py
│   ├── test_dataset_loader.py
│   └── test_executor.py
├── main.py                   # CLIからパイプライン実行
├── requirements.txt          # 必要なPythonライブラリ一覧
└── README.md                 # 本ドキュメント
``` 

## 📐 アーキテクチャ概要図

```plaintext
+-------------------------------------------------------+
|                   JSON 設定ファイル                   |
|               （pipelines.json, datasets.json）       |
+----------+---------------------------+----------------+
           |                           |
           v                           v
+------------------+        +------------------+
| Pipeline Loader  |        | Dataset Loader   |
+--------+---------+        +--------+---------+
         |                           |
         v                           v
+-------------------------------------------------------+
|                Executor (pipeline実行)                 |
|   [Preprocessor → Transformer → Feature Selector →    |
|                 Estimator → 評価]                     |
+---------------------------+---------------------------+
                            |
                            v
                    [評価指標・レポート出力]
```

## 📖 プロジェクトの詳細・ソースコード（GitHubリンク）
- [GitHub](https://github.com/kkkkodama10/my-project/tree/main/20250413_pipleline/app)

## 今後の拡張ポイント

## ✅ 目的別拡張方針（CI/CD/MLOps）

| No. | 項目                             | 拡張内容                                                                                         | ツール例／実装案                                                       |
|-----|----------------------------------|--------------------------------------------------------------------------------------------------|------------------------------------------------------------------------|
| 1   | **CI（継続的インテグレーション）** | 毎回の変更に対して自動テストを実行し、品質を保証                                                   | GitHub Actions + `pytest`                                              |
| 2   | **CD（継続的デリバリー）**         | モデルやパイプラインを自動でステージング／本番環境にデプロイ                                       | GitHub Actions + Docker + AWS/GCP                                      |
| 3   | **モデル管理（MLflow）**          | モデルの学習履歴・パラメータ・スコア・成果物を記録し、再現性を高める                               | MLflow Tracking + Artifact Store                                       |
| 4   | **パイプラインスケジューリング**  | 定期的・条件付き（データ変更時など）の学習・評価・再訓練                                           | Airflow / Prefect / Dagster                                            |
| 5   | **可視化・モニタリング**          | モデル精度・パフォーマンス・データ分布をダッシュボードで可視化                                     | MLflow UI / Grafana / Prometheus                                       |
| 6   | **パイプラインコンテナ化**       | ローカルと本番環境で一貫性ある環境を構築                                                           | Docker / Docker Compose                                                |
| 7   | **モデルAPI化**                  | パイプラインをREST APIとして公開し、外部から利用可能に                                            | FastAPI + uvicorn + Swagger UI                                         |
| 8   | **テスト・デプロイ自動化**      | 自動テスト成功時にデプロイプロセスを自動化                                                         | GitHub Actions + `pytest` + Docker                                     |
| 9   | **データ品質チェック**           | データセットの欠損値・異常値を事前チェックし異常検知                                              | Great Expectations / Pandera                                           |
| 10  | **データドリフト検出**           | 本番データが訓練データと乖離した場合、アラート通知                                                | Evidently / Alibi Detect                                               |
| 11  | **モデルのバージョニング**        | モデルをバージョニングし、特定バージョンへのロールバックを容易にする                             | MLflow / DVC / Model Registry                                          |
| 12  | **データバージョニング**          | データセットのバージョニング管理を行い、再現性向上                                                | DVC / Pachyderm                                                        |
| 13  | **自動ハイパーパラメータ最適化**  | ハイパーパラメータチューニングを自動化                                                           | Optuna / Hyperopt                                                      |
| 14  | **リアルタイム推論**              | モデルをリアルタイム推論用にデプロイ（低レイテンシ環境）                                          | FastAPI + Docker + Kubernetes                                          |
| 15  | **バッチ推論パイプライン**        | 定期的に大量データに対してバッチ推論を行い、結果を定期的に更新                                     | Airflow / Batch jobs on AWS Batch                                      |
| 16  | **特徴量ストアの導入**            | 特徴量を一元管理し、学習と推論の両方で再利用可能に                                                | Feast / Hopsworks                                                      |
| 17  | **セキュリティ／ガバナンス強化**  | APIの認証認可、ログ管理を徹底し、データ・モデルの安全性を確保                                     | OAuth2 + JWT + Audit Logging                                           |
| 18  | **推論パフォーマンス監視**        | 本番推論パフォーマンスの監視と異常時アラート通知                                                  | Prometheus / Grafana                                                   |
| 19  | **エラー解析・モデル説明性向上**  | モデルの判断理由を説明可能にし、信頼性を向上                                                      | SHAP / LIME                                                            |
| 20  | **マルチ環境管理（Dev/Stg/Prod）** | 開発・ステージング・本番の各環境を明確に分離し、環境別に安全に運用                                | Terraform / Kubernetes namespaces                                      |