Train, run, and evaluate large language models — entirely on your own hardware.
A self-hosted workshop for the whole lifecycle: documents → datasets → LoRA training → GGUF → benchmarks → chat. One dark-themed WebUI that lives in your browser. No cloud, no telemetry, no lock-in.
Every stage of the local-LLM pipeline, wired together with a shared project concept. Pick what you need — most people start with one tab and grow.
A local model mines your documents for training data: list_sources → read_source → create_qa_pairs, with every tool call rendered inline so you can audit exactly what the AI did before it touches your dataset.
Point at a JSONL or your mined dataset, pick a base model, hit train. Live loss curves, VRAM-aware config, adapter merge, and a one-click bake to GGUF.
Ingest PDF / DOCX / CSV / code / images (OCR), chunk, embed, index. Search playground with top_k, threshold and reranker tuning. SSE progress the whole way.
SHA-256 dedup, MIME-auto-routed immutable raws, your own folders, versioning, and a 7-day soft-delete trash. Files are data; the DB is just the index.
MMLU · HellaSwag · ARC · TruthfulQA · GSM8K · Winogrande + tool-calling evals. Side-by-side base-vs-trained tables, exportable JSON.
GGUF (llama.cpp) or safetensors (transformers), vision models included. Idle auto-unload frees VRAM; per-chat temperature, top-p and system prompt.
./update.sh or Settings → Apply update: pull, venv repair, dep sync, migrations, restart — with a live log stream in the UI.
Out-of-VRAM? The load error names the culprit and its memory: “needs ~19.8 GB, only 10.3 free; top consumers: comfyui(pid 2063394)”.
Terminal-grade UI: tmux-style session bar, phosphor-green notches, animated sprites, command palette on Ctrl+K. Live on any modern browser at :7860.
From raw documents to a benchmarked, chat-ready model — one project, one flow:
upload ──► file library sha256 dedup · MIME auto-folders · versioning · 7-day trash └─► parse + chunk pdf · docx · csv · xml · images(OCR) ── ~500-token chunks └─► Q&A mining batch prep job OR agentic tool-calling chat └─► review approve / reject / edit pairs ──► JSONL datasets └─► train LoRA / QLoRA / full · live loss · VRAM profiles └─► merge + bake adapter → merged → GGUF (quantized) └─► benchmark MMLU · GSM8K · tool-calling · base-vs-trained └─► chat single-model engine · vision · RAG context
None of the pieces are impossible by hand. The point is that all of them are now in one place, with your data in ~/.finetune-studio/ where you can find it.
| What you'd do manually | What Finetune Studio does |
|---|---|
| Five terminal windows + a Notion page of "things to remember" | One browser tab, one project concept |
| Hand-craft chunking + embedding loops | Click Build — SSE progress the whole way |
| Write your own MMLU eval harness | Pick the suite, click Run, get a comparison table |
| Lose an afternoon to CUDA install issues | One ./install.sh — GPU-aware wheels, self-repair |
| “Failed to load model from file” (useless) | Actionable errors: needs 19.8 GB, 10.3 free, comfyui is holding it |
Linux / macOS / Windows(WSL2). Auto-detects your GPU and picks the right CUDA wheels.
$ git clone https://github.com/GenorTG/finetune-studio.git $ cd finetune-studio $ ./install.sh # GPU detection, venv, wheels, llama.cpp CLI $ source .venv/bin/activate $ fts web --host 0.0.0.0 --port 7860 # open http://localhost:7860 — an 8-step tour walks you through it