{
 "schema_version": 1,
 "generated": "2026-10-20",
 "id": "whitecircle-halo--lora-sft-single-gpu",
 "repo": "whitecircle/halo",
 "repo_url": "https://github.com/whitecircle/halo",
 "repo_slug": "whitecircle-halo",
 "title": "Fine-tune a Hugging Face LLM with LoRA on one GPU",
 "page_title": "How to fine-tune a Hugging Face LLM with LoRA on one GPU with Halo",
 "summary": "Run a LoRA SFT job on a Qwen3 model with one command from a ready YAML config.",
 "who": "An ML engineer who wants to adapt an open Hugging Face model to a chat or instruction dataset and has a single GPU.",
 "problem": "Setting up a training stack with the right CUDA, attention kernels, and config format takes time before any training starts.",
 "outcome": "A LoRA fine-tuned checkpoint that still loads with from_pretrained.",
 "steps": [
  "Pull the image that matches your GPU: `docker pull public.ecr.aws/whitecircle/halo:hopper` for H100/H200 or `docker pull public.ecr.aws/whitecircle/halo:blackwell` for B200/B300.",
  "Start a container from that image with GPU access and open a shell in the repo. (inferred, check the README)",
  "Print the command without running it: `halo launch sft examples/sft/qwen3/qwen3-4b-ultrachat-lora.yaml --dry-run`. (inferred, check the README)",
  "Run the job: `halo launch sft examples/sft/qwen3/qwen3-4b-ultrachat-lora.yaml`.",
  "Load the saved checkpoint with from_pretrained to confirm it is a standard Hugging Face model."
 ],
 "agent_prompt": "In the whitecircle/halo repo, run `halo launch sft <target-config>` inside the Halo Docker image on one GPU, using examples/sft/qwen3/qwen3-4b-ultrachat-lora.yaml as the default. Expected output: a LoRA checkpoint written by the run. Verify first with `--dry-run` that the printed command matches the config path you chose.",
 "agents": [
  "any"
 ],
 "difficulty": "Intermediate",
 "time": "1 hour",
 "basis": "readme",
 "caveat": "The README describes the Docker images and the commands but does not list the exact GPU memory each example needs, so check the model size against your card before starting.",
 "category": "Software and DevOps",
 "tags": [
  "Software and DevOps"
 ],
 "lang": "python",
 "requirements": [
  "Docker installed on a host with an NVIDIA GPU (Hopper H100/H200 or Blackwell B200/B300 images are published)",
  "Network access to public.ecr.aws to pull the Halo image anonymously",
  "A Hugging Face model or the example configs in the examples/ folder",
  "Enough GPU memory for the chosen model and method (the README shows single-GPU LoRA and 8-GPU runs)"
 ],
 "risk": "none",
 "seen_in_the_wild": false,
 "mentioned_publicly": false,
 "risks": [],
 "best": true,
 "score": 1.0,
 "evidence": [],
 "url": "https://dedupedai.com/use-cases/whitecircle-halo/lora-sft-single-gpu/",
 "md": "https://dedupedai.com/use-cases/whitecircle-halo/lora-sft-single-gpu/index.md",
 "disclaimer": "Deduped lists open-source repositories that belong to other people. We do not own, maintain, audit, or vouch for any of them, and a repo appearing here is not an endorsement or a safety check. The use cases, steps, and prompts are written by AI and may be incomplete, outdated, or just wrong. Where a use case is marked \"Seen in the wild\", we link to public posts where someone described something similar, but we have not verified those posts and the use case itself is still our AI's own write-up. Use all of this at your own risk. Only run code, commands, or agents on systems and accounts you are authorized to use, and read the code and every command before you run it, especially anything that touches credentials, files, or the network. Nothing here is professional, security, legal, or financial advice. All trademarks and project names belong to their respective owners, and their use here does not imply affiliation. Content is provided as is, without warranties of any kind. Found a mistake, a safety problem, or something you want removed? Email hello@dedupedai.com and we will look at it promptly.",
 "api": "https://dedupedai.com/api/v1/usecases/whitecircle-halo--lora-sft-single-gpu.json",
 "api_version": "v1"
}
