mirror of
https://github.com/unslothai/unsloth
synced 2026-04-21 21:47:51 +00:00
5.5 KiB
5.5 KiB
🦥 Unsloth Studio
A modern, full-stack web interface for fine-tuning, managing, and chatting with large language models — locally or in the cloud.
Features • Quick Start • API Reference • Project Structure
Features
| Area | Capabilities |
|---|---|
| Training | Configure and launch LoRA / QLoRA fine-tuning jobs with real-time SSE progress streaming, live loss charts, and one-click stop / resume |
| Model Management | Browse, load, and manage Hugging Face hub models and local checkpoints |
| Inference | Interactive chat playground for testing fine-tuned models |
| Dataset Tools | Upload, preview, and prepare datasets (JSON, CSV, Parquet, PDF, DOCX) |
| Export | Export & push trained adapters to the Hugging Face Hub |
| Auth | Token-based authentication with JWT access / refresh flow and first-time setup token |
Quick Start
One-command setup
bash setup.sh
This script will:
- Install Node.js ≥ 20 via nvm (if needed)
- Build the frontend to
studio/frontend/dist - Create a Python virtual environment and install all dependencies (including
unsloth) - Register a convenient
unsloth-uishell alias
Launch the studio
# After setup, open a new terminal (or source ~/.bashrc), then:
unsloth-ui -H 0.0.0.0 -p 8000
On first launch, a one-time setup token is printed to the console. Use it in the browser to create your admin account.
API Reference
All endpoints require a valid JWT Authorization: Bearer <token> header (except /api/auth/* and /api/health).
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/health |
Health check |
GET |
/api/system |
System info (GPU, CPU, memory) |
POST |
/api/auth/signup |
Create account (requires setup token on first run) |
POST |
/api/auth/login |
Login and receive JWT tokens |
POST |
/api/auth/refresh |
Refresh an expired access token |
GET |
/api/auth/status |
Check if auth is initialized |
POST |
/api/train/start |
Start a training job |
POST |
/api/train/stop |
Stop a running training job |
POST |
/api/train/reset |
Reset training state |
GET |
/api/train/status |
Get current training status |
GET |
/api/train/metrics |
Get training metrics (loss, LR, steps) |
GET |
/api/train/stream |
SSE stream of real-time training progress |
GET |
/api/models/ |
List available models |
POST |
/api/inference/chat |
Send a chat message for inference |
GET |
/api/datasets/ |
List / manage datasets |
Full interactive docs are available at
/docs(Swagger UI) and/redocwhen the server is running.
CLI Commands
The Unsloth CLI (cli.py) provides the following commands:
Usage: cli.py [COMMAND]
Commands:
train Fine-tune a model
inference Run inference on a trained model
export Export a trained adapter
list-checkpoints List saved checkpoints
ui Launch the Unsloth Studio web UI
studio Launch the studio (alias)
Project Structure
new-ui-prototype/
├── cli.py # CLI entry point
├── cli/ # Typer CLI commands
│ └── commands/
│ ├── train.py
│ ├── inference.py
│ ├── export.py
│ ├── ui.py
│ └── studio.py
├── setup.sh # One-command bootstrap script
└── studio/
├── backend/
│ ├── main.py # FastAPI app & middleware
│ ├── run.py # Server launcher (uvicorn)
│ ├── auth/ # Auth storage & JWT logic
│ ├── routes/ # API route handlers
│ │ ├── training.py
│ │ ├── models.py
│ │ ├── inference.py
│ │ ├── datasets.py
│ │ └── auth.py
│ ├── models/ # Pydantic request/response schemas
│ ├── core/ # Training engine & config
│ ├── utils/ # Hardware detection, helpers
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── features/ # Feature modules
│ │ │ ├── auth/ # Login / signup flow
│ │ │ ├── training/ # Training config & monitoring
│ │ │ ├── studio/ # Main studio workspace
│ │ │ ├── chat/ # Inference chat UI
│ │ │ ├── export/ # Model export flow
│ │ │ └── onboarding/# Onboarding wizard
│ │ ├── components/ # Shared UI components (shadcn)
│ │ ├── hooks/ # Custom React hooks
│ │ ├── stores/ # Zustand state stores
│ │ └── types/ # TypeScript type definitions
│ ├── package.json
│ └── vite.config.ts
└── tests/ # Backend test suite
License
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
Copyright © 2026 Unsloth AI.