⚡ FINETUNE STUDIO▮

A web app for working with local language models on your own documents: search them, fine-tune on them, test the result.

A hobby project: I like tinkering with local models and did my best to make this solid (tests, CI, measured results), but it is a one-person beta. Use it if it helps you.

Project data is stored locally. If you enable a connected provider, the data needed for that feature may be sent to it.

python 3.12–3.13 polyform noncommercial cuda fastapi Playwright E2E requires explicit opt-in

FOUR USE CASES

You don't have to use everything. Pick what you need — most users start with one and grow.

1 · SMART BRAIN OVER PRIVATE DOCUMENTS

"I have a pile of PDFs and want to ask questions about them in plain English — without uploading anything to the cloud."

Every file is parsed once in Files & Knowledge (PDF, DOCX, TXT, MD, HTML, code, CSV, JSON, images via OCR or a Vision reader). The Smart Brain answers from that parse with sources: semantic + keyword search, rank fusion, reranking, an answer gate — often called RAG. Live build progress via SSE, an index status that says when files changed, optional fact cards from reviewed pairs. One-click ⚡ Quick index; export it as a standalone MCP + HTTP server.

SMART BRAINHYBRID SEARCH

2 · FINE-TUNE A MODEL

"I want to teach a small open model how my company talks."

Point at a JSONL or your mined dataset, pick a base model, run LoRA / QLoRA. Live loss curves, VRAM profiles, adapter merge, then export (merged / abliterated; GGUF when host tools are installed). Per past-run Actions (⭐ Set production, ▶ Open in inference, ⬇ Export).

LoRAQLoRAMERGEEXPORT

3 · BENCHMARK BEFORE SHIP

"I trained two variants. Which one is actually better?"

Offline smoke suites styled after MMLU / GSM8K / HellaSwag (not the full HuggingFace dataset downloads), plus project-local suites. Two tabs: Recent scores and Compare two runs (per-suite Δ = B − A, colored).

MMLU-styleGSM8K-styleHellaSwag-style

4 · JUST CHAT LOCALLY

"I want to run an open model locally with my own chat history and image support."

Pick a safetensors or GGUF model, load with auto-unload-on-idle to free VRAM. Image input for multimodal. Per-session temperature / top-p / system prompt. Conversation persists.

safetensorsGGUFVISION

HOW MUCH DOES FINE-TUNING ACTUALLY TEACH?

Measured on a fictional company (80 files, 1,130 facts with a known answer key) with Qwen3.5-9B on one RTX 3090: 102 quiz questions reworded from the training pairs, plus 20 the documents do not answer, scored by an AI judge checked against hand-labelled cases.

SetupQuiz correct (of 102)Declines the 20 unanswerable
Base model alone36
Fine-tuned on ~2,450 reviewed pairs19–28 (+ ~23 half right)0
Fine-tuned, each pair + 3 reworded questions (simple matcher)48 (15 without rewording)0
Base model + Smart Brain76–9720
Fine-tuned + Smart Brain82–940–2

Fine-tuning learns some facts and the answer style, but it stops the model from saying "I don't know", and fact training cost instruction following too (IFEval 83 % -> 68-70 %; the optional replay mix keeps it, at the price of recall). For knowing your documents, use the Smart Brain. Every run is written up in RESULTS.md.

FEATURES

A quick overview of the current self-hosted workflow. See the README and tutorial for installation requirements and step-by-step use.

THE PIPELINE

From raw documents to a benchmarked, chat-ready model — one project, one flow — or let ⚡ Quick work chain it from one page:

upload ──► file library      sha256 dedup · MIME auto-folders · versioning · 7-day trash · rename · per-file purge · parsed MD
   └─► parse once         text · code · data · office · email · images(OCR / Vision reader) ── passages
        └─► Smart Brain       index: semantic + keyword search, rank fusion, reranking · live SSE
             └─► 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 · per-run Actions
                            └─► merge + export adapter → merged → optional GGUF when tools installed
                                 └─► benchmark     offline smoke suites · compare tab (Δ = B − A, colored)
                                      └─► chat          single-model engine · vision · Smart Brain sources · log tail

WHY NOT JUST DO IT BY HAND?

You can, and for a one-off that is fine. The app is for when you repeat the loop: the steps share one project, and your data stays in ~/.finetune-studio/ where you can find it.

What you'd do manuallyWhat Finetune Studio does
Five terminal windows + a Notion page of "things to remember"One browser tab, one project concept
Hand-craft chunking + embedding loopsClick Build — SSE progress the whole way
Write your own eval harnessPick a suite, click Run, get a comparison table
Lose an afternoon to CUDA install issuesOne ./install.sh — GPU-aware wheels, self-repair
Guess why a model will not loadSee estimated VRAM needed, free VRAM, and the named GPU processes using it
Compare two trained runs by handCompare tab — pick run A + B, get the Δ table
SSH in to grep server logsSettings → WebUI log tail, Refresh + Auto-refresh

QUICKSTART

Linux only (NVIDIA GPU or CPU) until the stable 1.0.0. install.sh selects a compatible accelerator stack.

$ git clone https://github.com/GenorTG/finetune-studio.git
$ cd finetune-studio
$ ./install.sh                    # detects hardware; starts on localhost by default
$ source .venv/bin/activate
$ fts webui
# open http://localhost:7860 — a short onboarding tour shows the first steps

DOCS