finetune-lora
LoRA fine-tune with evaluation
The reference fine-tune: zero-shot and 3-shot baselines, a gate that stops if few-shot is already good enough, LoRA SFT with TRL and PEFT, and an eval with the adapter. Default base model Qwen3-4B-Instruct-2507 (Apache-2.0); on-demand A10G by default (override sku to a10g-24gb-x1-spot once the catalogue sells it). Input is one data.tar.gz from finetune/prepare_data.py --archive; the adapter comes back as adapter.tar.gz, which batch-infer-lora takes as its input.
- Status
- Available
- GPU
- NVIDIA A10G · 24 GB
a10g-24gb-x1 - Default runtime
- 2 h maximum
- Publisher
- Unify Compute
What it reads and writes
Input /mnt/in | data.tar.gz from finetune/prepare_data.py --archive: train.jsonl, val.jsonl, test.jsonl, and optionally schema.json (used when SCHEMA is empty). One file; the command unpacks it. |
|---|---|
Output /mnt/out | eval_zero_shot.json, eval_few_shot.json, eval_lora.json, adapter/ and adapter.tar.gz, timestamps.json and RESULT (completed or task_not_worth_finetuning) |
What you can change
A submit may set: GPU (SKU) (sku), Cloud placement (providers), Environment variables (spec.env), Maximum runtime (spec.max_runtime_seconds). The image and the declared inputs and outputs are fixed: a different image is a different template.
BASE_MODEL | Qwen/Qwen3-4B-Instruct-2507 |
|---|---|
FEW_SHOT_GATE | 0.95 |
SCHEMA | "" |
Run it
With a key in $UNIFY_KEY (see the quick start), give each input an https:// URL, public or presigned, that ends in the file name above:
curl -s https://api.compute.unifyai.us/compute/v1/jobs \
-H "Authorization: Bearer $UNIFY_KEY" \
-H "Content-Type: application/json" \
-d '{
"template": "finetune-lora",
"spec": {
"inputs": [
{
"source": "https://YOUR-BUCKET.s3.amazonaws.com/data.tar.gz",
"mount": "/mnt/in"
}
]
}
}'The job is billed for the GPU time it uses at the SKU's rate, the same as a job you write yourself.
GPU job execution is turned on per account while it rolls out. Create an account, then ask us to enable it as the quick start describes.
Where the image comes from
| Image | ghcr.io/felixsphere/unify-compute-finetune:finetune-2026-10-04 |
|---|---|
| Digest | sha256:6d426175dcd0e2443df6da9cf68e96c079abe5a8b80d9f488d09019536272ac1 |
| Licence | Apache-2.0 |
| Source | ghcr.io/felixsphere/unify-compute-finetune, built by publish-image.yml run 37266527011 from main 150de552 (finetune/Dockerfile on vllm/vllm-openai:v0.30.0-cu129@sha256:a67f8f18…, Apache-2.0; adds TRL 1.14.1, PEFT 0.21.2, datasets 5.0.1, accelerate 1.15.0, jsonschema 4.26.0 and torchvision 0.29.0+cu130, removes torchaudio; linux/amd64 only; licences in THIRD-PARTY-LICENSES.md, Workload images) |
The digest is what runs. A tag can be re-pushed; a digest cannot, so what was reviewed is what your job pulls.