forge / README.md
juiceb0xc0de's picture
Forge: initial deploy β€” API + static UI over prebuilt forge.db (seeded at build)
00cabba
|
Raw
History Blame Contribute Delete
2.07 kB
---
title: Forge
emoji: πŸ”₯
colorFrom: yellow
colorTo: red
sdk: docker
app_port: 7860
pinned: false
license: mit
---
# Forge β€” ML Training Compatibility Graph
Pick your training ingredients (optimizer, scheduler, quantization, technique, architecture). Incompatible or not-yet-satisfied components grey out **live**, each with a cited reason and the fix. Output: a validated training recipe assembled from real practitioner evidence across the web.
Built for the Bright Data **Web Data UNLOCKED** hackathon.
## How it works
- **Data (Bright Data):** `discover` (AI-intent ranking) + Web Unlocker + SERP (EN + CN geo) + Scraper API + Scraping Browser mine compatibility signal from docs, papers, GitHub repos/issues, and forums.
- **Extraction (local, free):** a local Qwen2.5-3B model (llama.cpp) pulls `(A, relation, B, conditions)` triples β€” no paid LLM API. A keyless heuristic is the fallback.
- **Trust:** tier-1 = verified practitioner research + a real LR-scheduler benchmark; tier-2 = docs / 2+ independent sources; tier-3 = single scrape (held in a review queue until corroborated). GitHub is used as a secondary source to verify candidates.
- **Graph:** SQLite (`forge.db`). The grey-out resolves client-side for instant feedback.
## Architecture
The heavy work (scrape + extraction) runs at **build time** on the maintainer's machine. This Space just serves the prebuilt `forge.db` via FastAPI + a static D3 frontend β€” one origin, CPU-only.
```
brightdata CLI + local model ──build──> forge.db ──serve──> FastAPI (/graph,/resolve,/recipe,/feed) + static UI
```
## Run locally
```bash
pip install -r requirements.txt
python -m forge.seed # build forge.db
uvicorn forge.api:app --port 7860 # serves API + UI at http://localhost:7860
```
To grow the graph from live web data (needs the Bright Data CLI authenticated + a local `llama-server`):
```bash
python -m forge.campaign # discover EN+CN across components
python -m forge.github_collect corroborate # verify candidates against GitHub
```