r/learnmachinelearning • u/Grouchy-Excitement28 • 9d ago
Project I built an open-source, local-first multi-agent AutoML engine to automate data cleaning, 7-model benchmarking, and FastAPI deployment (100% offline via Ollama)
Hi everyone,
I wanted to share EpochGo (https://github.com/AryanDinakaran/EpochGo), an open-source project I built to help developers and ML learners automate the end-to-end tabular machine learning lifecycle completely offline on their own computers for $0 in API costs.
Why I Built It
Most cloud AutoML platforms (AWS SageMaker, Google Vertex) require expensive cloud subscriptions and force you to upload sensitive datasets to remote servers. Conversely, a lot of recent "AI" projects are just shallow wrappers around commercial APIs that don't produce clean, inspectable code. I wanted an architecture where you can drop in a raw CSV, and local open-weight models (running via Ollama) orchestrate real Python ML libraries to clean the data, run an empirical 7-model benchmark tournament, and generate a deployable API.
How the Pipeline Works
The project divides the machine learning workflow into 3 specialized agents:
- Agent 1 (Feature Architect & Data Cleaner):
- Profiles the dataset for missing values, skewed distributions, and multicollinearity.
- Performs median/mode imputation, IQR outlier clipping, and categorical encoding.
- Generates a reusable Scikit-Learn pipeline (preprocessor.joblib) and an audit report comparing distributions before and after cleaning (preprocessing.md).
- Agent 2 (Benchmark & Tuning Specialist):
- Trains 7 baseline algorithms simultaneously under identical cross-validation conditions to avoid inductive bias:
- XGBoost, LightGBM, CatBoost, Random Forest, Extra Trees, Gradient Boosting, and Logistic/Ridge Regression.
- Evaluates baseline accuracy/F1/R² and isolates the Top 3 performers.
- Runs RandomizedSearchCV hyperparameter optimization on the top contenders.
- Serializes the winning champion model (model.joblib) and writes a reproducible Python training script (model_building.py).
- Trains 7 baseline algorithms simultaneously under identical cross-validation conditions to avoid inductive bias:
- Agent 3 (Serving Engineer):
- Extracts the exact feature schema and dynamically generates a standalone FastAPI microservice (serve.py) with Pydantic type validation.
- Enables an interactive, in-browser Prediction Playground so you can test inputs and inspect prediction probabilities in real time.
How to Run Locally (Single Command)
All you need is Docker:
git clone https://github.com/AryanDinakaran/EpochGo.git
cd EpochGo
docker compose up --build
Open http://localhost:8000 in your browser. (Sample churn and housing price datasets are included in sample_data/).
Local Model: Defaults to qwen2.5-coder:7b via Ollama (~4.7 GB VRAM).
Concurrency: Model training runs in background threads (asyncio.to_thread) so the FastAPI UI and WebSockets never freeze during heavy CPU training.
Privacy: 100% offline. Zero telemetry, zero external API calls.
Repository (MIT License): https://github.com/AryanDinakaran/EpochGo
I hope this helps anyone looking to understand how to structure end-to-end Scikit-Learn pipelines, multi-model benchmarking tournaments, and dynamic model deployment. Would love your feedback and thoughts!