modelmaker
v1.3.0
Published
Model Maker CLI — easy local SFT fine-tuning, quantize, and run for LLMs
Maintainers
Readme
Model Maker
CLI for local SFT fine-tuning, quantize, and run. One project = one model.
No GUI. npm package: modelmaker. This replaces the old modelstudio command.
Install → train (intended flow)
# 1. Install the CLI (once)
npm i -g modelmaker
# 2. Put your SFT JSONL in a folder, open that folder
cd path\to\your\jsonl_data
# 3. Train
modelmaker --train
# → numbered models → pick a number → Start training? [Y/n]Local project install (no global):
npm i modelmaker
npx modelmaker --trainFrom this repo before publish:
cd ModelStudio-App
npm i -g .
# then anywhere:
modelmaker --trainAfter train
modelmaker quantize last # HF/LoRA folder → GGUF (required for --run)
modelmaker --run last
modelmaker eval
modelmaker export last
modelmaker --train stop # cancel training
modelmaker --run stop # stop inference--run needs a llama.cpp server. The npm package ships a Node fallback (modelstudio-server.js) that proxies to llama-server. Put llama-server on PATH, set MODELSTUDIO_LLAMA_SERVER, or from this repo run npm run build:server. Train and quantize do not need that.
Other commands
| Command | Purpose |
|---------|---------|
| modelmaker init . | Scaffold example JSONL in the current folder |
| modelmaker doctor | Check Python / GPU / workers / inference backend |
| modelmaker data check | Validate JSONL |
| modelmaker --train --auto | Hardware-aware base model |
| modelmaker --train --yes | Skip confirm (scripts) |
| modelmaker quantize / quantize last | GGUF quantize (needed before --run) |
| modelmaker jobs list | Job status |
Requires Node 18+. Training uses Python + workers/requirements.txt (see modelmaker doctor).
Training backends (CUDA / Intel Arc / AMD)
modelmaker --train --auto and modelmaker doctor detect the GPU vendor and pick a separate SFT flow:
| Flow | Hardware | Train stack |
|------|----------|-------------|
| cuda | NVIDIA | QDoRA/QLoRA, bitsandbytes NF4, flash-attn or SDPA, TF32, torch.compile |
| xpu | Intel Arc / Core Ultra | bf16 LoRA on torch.xpu, IPEX, SDPA, no CUDA bitsandbytes |
| rocm | AMD Radeon / Instinct | LoRA on ROCm/HIP, SDPA + TunableOp; bitsandbytes only if a HIP build works |
| cpu | last resort | fp32 LoRA, slow |
Install one torch wheel, then the matching extras (never mix CUDA wheels onto Arc/AMD):
# NVIDIA
pip install torch --index-url https://download.pytorch.org/whl/cu124
pip install -r workers/requirements.txt -r workers/requirements-cuda.txt
# Intel Arc
pip install torch --index-url https://download.pytorch.org/whl/xpu
pip install -r workers/requirements.txt -r workers/requirements-xpu.txt
# AMD ROCm (Linux)
pip install torch --index-url https://download.pytorch.org/whl/rocm6.2
pip install -r workers/requirements.txt -r workers/requirements-rocm.txtVerify:
modelmaker doctor
python workers/hw_probe.py
python workers/train_sft.py --dry-run --base-model Qwen/Qwen2.5-1.5B-Instruct --data-folder . --output-dir %TEMP%\mm-dryHSA_OVERRIDE_GFX_VERSION is not set automatically. Only export it if AMD documents that override for your gfx arch.
Env vars
Legacy MODELSTUDIO_* names are still used (including default folders named ModelStudio):
| Variable | Purpose |
|----------|---------|
| MODELSTUDIO_EXPORT_ROOT | Export / project root (--export-root) |
| MODELSTUDIO_PYTHON | Python executable |
| MODELSTUDIO_WORKERS | Workers directory |
| MODELSTUDIO_SERVER_BIN | Inference server binary or .js fallback |
| MODELSTUDIO_LLAMA_SERVER | Path to llama-server |
| LLAMA_SERVER | Same as MODELSTUDIO_LLAMA_SERVER |
Develop / test this repo
npm install
npm test
npm run smoke
npm run cli -- helpnpm test and npm run smoke are dry-run (no GPU, no weight download).
GPU smoke (manual, once before a release)
On a machine with CUDA + Python torch CUDA + llama-server (or npm run build:server):
npm i -g .
cd path\to\jsonl
modelmaker doctor
modelmaker data check
modelmaker --train --auto --sample 50 --yes
modelmaker quantize last
modelmaker --run last
modelmaker eval
modelmaker export last
modelmaker --run stopLicense
MIT
