Fine-tuning used to mean renting an A100. It doesn't anymore. The combination of QLoRA (quantize the base model to 4-bit, train small adapter matrices on top) and Unsloth's hand-written Triton kernels has pushed a genuine 8B fine-tune onto hardware you can get for nothing. Unsloth (69,000+ GitHub stars) is the library that made that the default assumption rather than a stunt.
Is Unsloth Actually Free?
Yes, with one licensing detail worth knowing before you build on it:
- Core library: Apache 2.0. Commercial use, modification, shipping it inside a paid product — no revenue cap, no key, no quota.
- Unsloth Studio UI: AGPL-3.0. The optional no-code web interface carries a copyleft license. Fine for internal use; read it carefully before embedding it in a hosted product.
- No account, no meter. You
pip installand train. There is no hosted Unsloth tier you eventually get funnelled into.
The weights you produce are yours, governed by whatever license the base model carries — Llama, Qwen, Gemma, and gpt-oss all have their own terms, and that's the license to check, not Unsloth's.
What Fits on a Free T4
This is the number that decides your whole project. Unsloth's own requirements table gives approximate peak VRAM for both modes:
| Model size | QLoRA (4-bit) | LoRA (16-bit) | Free Colab T4 (~15 GB)? |
|---|---|---|---|
| 3B | 3.5 GB | 8 GB | Yes, either mode |
| 8B | 6 GB | 22 GB | QLoRA only |
| 14B | 8.5 GB | 33 GB | QLoRA only |
| 27B | 22 GB | 64 GB | No |
| 70B | 41 GB | 164 GB | No |
The gap between the two columns is the entire argument for QLoRA: an 8B model goes from needing a data-centre card to needing 6 GB. On a free T4, everything up to roughly 14B is in range, and Unsloth's Studio notebook stretches that to 22B by trading speed for memory. Hardware floor: any NVIDIA GPU from 2018 onward (CUDA capability 7.0+ — T4, V100, RTX 20 through 50 series, A100, H100, L40), Python 3.11–3.13, on Linux, Windows, macOS, or WSL.
A Real Fine-Tune in 25 Lines
On Colab, !pip install unsloth is the whole setup. Locally, use the installer: curl -fsSL https://unsloth.ai/install.sh | sh (or irm https://unsloth.ai/install.ps1 | iex on Windows). Then:
from unsloth import FastLanguageModel
from datasets import load_dataset
from trl import SFTTrainer, SFTConfig
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "unsloth/Meta-Llama-3.1-8B-Instruct",
max_seq_length = 2048,
load_in_4bit = True, # QLoRA: ~6 GB instead of ~22 GB
)
model = FastLanguageModel.get_peft_model(
model,
r = 16, # LoRA rank; 8-32 is the usual range
lora_alpha = 16,
target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj"],
use_gradient_checkpointing = "unsloth", # longer context, less VRAM
)
ds = load_dataset("yahma/alpaca-cleaned", split="train[:2000]")
ds = ds.map(lambda r: {"text":
f"### Instruction:n{r['instruction']}nn### Response:n{r['output']}"
+ tokenizer.eos_token})
SFTTrainer(
model = model, tokenizer = tokenizer, train_dataset = ds,
args = SFTConfig(
dataset_text_field = "text",
per_device_train_batch_size = 2,
gradient_accumulation_steps = 4,
max_steps = 60,
learning_rate = 2e-4,
output_dir = "outputs",
),
).train()
Two parameters carry most of the memory savings. load_in_4bit=True is QLoRA itself. use_gradient_checkpointing="unsloth" is Unsloth's own implementation, which is what enables the long-context training its docs advertise as 3x faster with 30% less VRAM than standard approaches. If you hit OOM, drop per_device_train_batch_size to 1 before touching anything else — the docs name an over-large batch size as the most common cause.
Export It and Run It for Free Too
A LoRA adapter is a ~100 MB file, not a new 16 GB model — that's what makes this cheap to store and share. One call merges and quantizes it into a GGUF you can run on CPU:
model.save_pretrained_gguf("my-llama-tune", tokenizer, quantization_method="q4_k_m")
From there it drops straight into Ollama, llama.cpp, LM Studio, or vLLM, and you can put a chat UI in front of it with Open WebUI. Train free on a borrowed GPU, serve free on your own machine — the whole loop stays at $0.
The No-Code Path: Unsloth Studio
Unsloth Studio (beta) is an open-source web UI that wraps all of the above: pick a model, upload data, click train, watch the loss curve. It builds datasets automatically from PDF, CSV, JSON, DOCX, or TXT, compares checkpoints in a "Model Arena," exports to GGUF or safetensors, and runs fully offline. Launch it locally with unsloth studio -H 0.0.0.0 -p 8888, or use the free Colab notebook version, which trains most models up to 22B on a T4 without a local GPU at all.
It's genuinely the fastest way to a first fine-tune. Just remember the UI is AGPL-3.0, and beta means beta.
Where the Free GPU Comes From
| Colab Free | Kaggle | HF Spaces ZeroGPU | Modal | |
|---|---|---|---|---|
| GPU | T4, ~15 GB | P100 16 GB or 2×T4 | A100 80 GB, time-sliced | T4 → B200 |
| Free allowance | Unpublished, dynamic | ~30 GPU-hours/week | Quota per Space | $30 credits/month |
| Session cap | ~12 h, 90-min idle timeout | 12 h | Short bursts | Billed per second |
| Card required | No | No | No | No |
| Best for | First run, zero setup | Longer jobs, real quota | Demoing the result | Bigger models, scripted runs |
Google does not publish Colab's free quota — it's dynamic and availability-dependent, so treat any specific hour count you read elsewhere as a guess. Kaggle is the underrated option precisely because its ~30 hours/week is a stated number, and two T4s beat one. When a job outgrows both, Modal's $30/month credits buy roughly 50 T4-hours, and Hugging Face Spaces is where the finished model goes on show.
Unsloth vs Axolotl vs LLaMA-Factory
| Unsloth | LLaMA-Factory | Axolotl | |
|---|---|---|---|
| Stars | 69k | 73k | 12k |
| License | Apache 2.0 (Studio AGPL-3.0) | Apache 2.0 | Apache 2.0 |
| Interface | Python API + Studio UI | CLI + LlamaBoard UI | YAML config |
| Custom kernels | Yes (Triton) | No (can use Unsloth) | No |
| Free-T4 friendly | Yes, by design | Yes | Ampere+ recommended |
| Best for | Lowest VRAM, fastest single-GPU run | Widest method coverage in a GUI | Reproducible, config-driven pipelines |
They aren't strictly rivals: LLaMA-Factory can call Unsloth as a backend. Pick Unsloth when the GPU is the constraint — which, on a free tier, it always is. Pick Axolotl when the run must be reproducible from a checked-in YAML. Pick LLaMA-Factory when you want DPO, PPO, and pre-training options behind one Gradio screen.
Limits to Know
- Multi-GPU is the paid-adjacent edge. Single-GPU is where the open library shines; multi-GPU works but is less travelled than the free-tier path.
- 4-bit is a real trade. QLoRA quantization costs some quality versus a 16-bit LoRA. For domain style and format adherence it's rarely noticeable; for hard reasoning, benchmark before you commit.
- Colab will disconnect you. A 90-minute idle timeout plus dynamic quotas means long runs need checkpointing to Drive, or a move to Kaggle.
- Fine-tuning is not memory. It teaches format, tone, and domain vocabulary — not new facts you can update. For facts, use RAG or an agent memory layer.
Frequently Asked Questions
Can I really fine-tune an LLM for free?
Yes. Unsloth is free software, Colab and Kaggle give free GPUs, and QLoRA brings an 8B model down to about 6 GB of VRAM. The realistic ceiling on a free T4 is roughly 14B (22B via Unsloth Studio's notebook), and you'll checkpoint around session timeouts — but no payment is involved at any step.
How long does a fine-tune take on a free T4?
It scales with dataset size and steps, not model size alone. A demonstration run of 60 steps on a couple of thousand examples finishes in minutes; a full epoch over tens of thousands of examples can exceed a single Colab session, which is exactly when Kaggle's 12-hour sessions and stated weekly quota start to matter.
Is Unsloth free for commercial use?
The core library is Apache 2.0, so yes. The Unsloth Studio UI is AGPL-3.0, which has copyleft obligations if you distribute or host a modified version. Separately, your fine-tuned weights inherit the base model's license — check that one too.
What data do I need?
Less than people expect. Hundreds to a few thousand well-formatted instruction/response pairs is a normal starting point for teaching style or a domain format. Consistency of formatting matters more than raw volume, and Unsloth Studio can generate a dataset from documents you already have.
The Verdict
Unsloth's contribution is not a new training method — it's kernel-level engineering that moved the hardware floor down far enough that free LLM fine-tuning stopped being a headline and became a Tuesday afternoon. If you have 2,000 rows of domain data and a browser, you can have your own adapter today, export it to GGUF, and serve it locally forever at zero marginal cost. Start with the Studio Colab notebook if you want a result in an hour; drop to the Python API the moment you need control over the training config.