This blog post covers the best way to use Unsloth and Hugging Face Jobs for fast LLM fine-tuning (specifically LiquidAI/LFM2.5-1.2B-Instruct ) through coding agents like Claude Code and Codex. Unsloth provides ~2x faster training and ~60% less VRAM usage compared to straightforward methods, so training small models can cost just a number of dollars.
Why a small model? Small language models like LFM2.5-1.2B-Instruct are ideal candidates for fine-tuning. They’re low-cost to coach, fast to iterate on, and increasingly competitive with much larger models on focused tasks. LFM2.5-1.2B-Instruct runs under 1GB of memory and is optimized for on-device deployment, so what you fine-tune may be served on CPUs, phones, and laptops.
You will have
We’re making a gift of free credits to fine-tune models on Hugging Face Jobs. Join the Unsloth Jobs Explorers organization to say your free credits and one-month Pro subscription.
- A Hugging Face account (required for HF Jobs)
- Billing setup (for verification, you may monitor your usage and manage your billing in your billing page).
- A Hugging Face token with write permissions
- (optional) A coding agent (
Open Code,Claude Code, orCodex)
Run the Job
If you wish to train a model using HF Jobs and Unsloth, you may simply use the hf jobs CLI to submit a job.
First, you must install the hf CLI. You possibly can do that by running the next command:
# mac or linux
curl -LsSf https://hf.co/cli/install.sh | bash
Next you may run the next command to submit a job:
hf jobs uv run https://huggingface.co/datasets/unsloth/jobs/resolve/fundamental/sft-lfm2.5.py
--flavor a10g-small
--secrets HF_TOKEN
--timeout 4h
--dataset mlabonne/FineTome-100k
--num-epochs 1
--eval-split 0.2
--output-repo your-username/lfm-finetuned
Take a look at the [training script](https://huggingface.co/datasets/unsloth/jobs/blob/fundamental/sft-lfm2.5.py) and [Hugging Face Jobs documentation](https://huggingface.co/docs/hub/jobs) for more details.
## Installing the Skill
Hugging Face model training skill lowers barrier of entry to coach a model by simply prompting. First, install the skill together with your coding agent.
### Claude Code
Claude Code discovers skills through its [plugin system](https://code.claude.com/docs/en/discover-plugins), so we want to put in the Hugging Face skills first. To achieve this:
1. Add the marketplace:
```text
/plugin marketplace add huggingface/skills
- Browse available skills within the
Discovertab:
/plugin
- Install the model trainer skill:
/plugin install hugging-face-model-trainer@huggingface-skills
For more details, see the documentation on using the hub with skills or the Claude Code Skills docs.
Codex
Codex discovers skills through AGENTS.md files and .agents/skills/ directories.
Install individual skills with $skill-installer:
$skill-installer install https://github.com/huggingface/skills/tree/fundamental/skills/hugging-face-model-trainer
For more details, see the Codex Skills docs and the AGENTS.md guide.
The rest
A generic install method is just to clone the skills repository and duplicate the skill to your agent’s skills directory.
git clone https://github.com/huggingface/skills.git
mkdir -p ~/.agents/skills && cp -R skills/skills/hugging-face-model-trainer ~/.agents/skills/
Quick Start
Once the skill is installed, ask your coding agent to coach a model:
Train LiquidAI/LFM2.5-1.2B-Instruct on mlabonne/FineTome-100k using Unsloth on HF Jobs
The agent will generate a training script based on an example within the skill, submit the training to HF Jobs, and supply a monitoring link via Trackio.
How It Works
Training jobs run on Hugging Face Jobs, fully managed cloud GPUs. The agent:
- Generates a UV script with inline dependencies
- Submits it to HF Jobs via the
hfCLI - Reports the job ID and monitoring URL
- Pushes the trained model to your Hugging Face Hub repository
Example Training Script
The skill generates scripts like this based on the instance within the skill.
from unsloth import FastLanguageModel
from trl import SFTTrainer, SFTConfig
from datasets import load_dataset
model, tokenizer = FastLanguageModel.from_pretrained(
"LiquidAI/LFM2.5-1.2B-Instruct",
load_in_4bit=True,
max_seq_length=2048,
)
model = FastLanguageModel.get_peft_model(
model,
r=16,
lora_alpha=32,
lora_dropout=0,
target_modules=[
"q_proj",
"k_proj",
"v_proj",
"out_proj",
"in_proj",
"w1",
"w2",
"w3",
],
)
dataset = load_dataset("trl-lib/Capybara", split="train")
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=dataset,
args=SFTConfig(
output_dir="./output",
push_to_hub=True,
hub_model_id="username/my-model",
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
num_train_epochs=1,
learning_rate=2e-4,
report_to="trackio",
),
)
trainer.train()
trainer.push_to_hub()
| Model Size | Really useful GPU | Approx Cost/hr |
|---|---|---|
| <1B params | t4-small |
~$0.40 |
| 1-3B params | t4-medium |
~$0.60 |
| 3-7B params | a10g-small |
~$1.00 |
| 7-13B params | a10g-large |
~$3.00 |
For a full overview of Hugging Face Spaces pricing, take a look at the guide here.
Suggestions for Working with Coding Agents
- Be specific concerning the model and dataset to make use of, and include Hub IDs (for instance,
Qwen/Qwen2.5-0.5Bandtrl-lib/Capybara). Agents will seek for and validate those combos. - Mention Unsloth explicitly for those who want it used. Otherwise, the agent will select a framework based on the model and budget.
- Ask for cost estimates before launching large jobs.
- Request Trackio monitoring for real-time loss curves.
- Check job status by asking the agent to examine logs after submission.
