← All posts

Train a LoRA Online Without a Local GPU

Use Wavemaker Training Studio to train image, video, and voice LoRAs on hosted GPUs—pick your epoch, bind into workflows, and skip the Python stack entirely.

Illustration for: Train a LoRA Online Without a Local GPU
Conceptual illustration — product screenshots appear in the guide below where they help you click through.

You can train a LoRA online without a local GPU by uploading a curated dataset to Wavemaker Training Studio, starting a hosted job, picking the checkpoint that generalizes best, and binding that version into any workflow. The platform owns GPUs, moderation, and checkpoint grids—you own creative choices (dataset, epoch, weight).

Why “no GPU” still needs honest expectations

Local LoRA culture assumes you control PyTorch, CUDA drivers, and a folder of .safetensors checkpoints. That freedom comes with ops work: environment drift, VRAM math, and silent corruption when a run dies halfway through epoch 40.

Training Studio inverts the contract:

  • Hosted execution on engines Wavemaker already operates for production workflows—not an arbitrary ComfyUI stack on a rented VM.
  • Typed jobs (image_lora, video_lora, wan_pair, voice) with preset bounds so learning rate and rank stay in safe envelopes unless you deliberately open advanced settings.
  • Visible pricing before the job starts: image LoRA from ~60 credits, video from ~200, voice ~30 at default step counts (overages apply if you raise steps).

What you do not get is “any Civitai LoRA runs here.” Imported Flux/SDXL files land in your library for provenance and future mounting; runnable training today follows the krea2/ltx/wan/hunyuan/elevenlabs matrix documented on the LoRA training landing page.

The four-step loop (browser to bound asset)

The whole path is visual and repeatable—agents can mirror it via REST/MCP, but humans usually live in the Studio tabs.

Diagram: dataset upload, hosted train job, manual epoch pick, workflow bind

1. Datasets without a /datasets folder on disk

Open /assetsDatasets. Create an image, video, or voice dataset, then upload files or promote your own recent run outputs (the generate → curate → train loop). Items stay pending until ingest + moderation pass; photoreal faces are allowed when you hold rights, with hard blocks only on prohibited classes.

Captions matter more than raw count. Auto-captioning runs after scan; edit captions so what varies (pose, wardrobe, lighting) is described while your trigger token stays stable. Eight excellent images beat eighty duplicates.

2. Start a training job on managed hardware

On Train, choose dataset + job type + preset (character, style, product, motion, narration). The UI shows the training hold before submit. While the job runs, {phase, pct} updates—so “stuck or stepping?” has an answer without SSH.

Runnable backends align with product docs: image jobs target krea2/ltx families; video jobs use wan/hunyuan paths; voice requires the consent record described in voice training with consent. Advanced knobs exist, but defaults exist because most first runs should succeed, not tune.

3. Pick an epoch—never trust the last grid by default

When epochs complete, each checkpoint renders a sample grid with identical prompts and seeds. Compare grids side by side; the winner becomes a version on your asset. Wavemaker deliberately does not promote the last epoch automatically—that epoch often memorizes training selfies and collapses on new prompts.

This design pairs with the epoch selection guide and later blind A/B evaluations if you train v2.

4. Bind into workflows, Hub, or cast packs

Library assets pin to workflow nodes by version. Published workflows keep those pins—improving the asset later does not silently change a shipped graph. Optional Hub publish runs moderation + provenance attestation; cast packs bundle multiple pins for multi-character shoots (cast packs guide).

For character consistency across long-form video (subject refs, LoRAs, casting choices), see the dedicated explainer at /blog/consistent-characters-across-scenes/—this post stays focused on training, not every consistency tactic.

Credits, refunds, and testing costs

Training holds cover the job; generating with your picked LoRA bills normal workflow credits. Failed training jobs auto-refund the training hold. Testing a checkpoint grid is part of training UX; heavy production batches after bind use the same per-block quotes as any other workflow run.

If you import weights instead of training, remember library-only Flux/SDXL imports do not consume training credits—but they also do not execute until mounted. Train on-platform when you need a runnable asset today.

API and agent parity

Everything above exists as REST (POST /api/v1/datasets, POST /api/v1/training-jobs with optional webhooks) and MCP tools (create_dataset, add_dataset_items, pick_checkpoint). Webhooks emit training_job.awaiting_checkpoint when grids are ready—agents should pause for human or policy-driven epoch choice, not assume final epoch.

Pair agent automation with workflow API endpoints when you want train → bind → slug-run in CI.

Comparison table: local GPU vs Training Studio

ConcernLocal Comfy/Kohya stackTraining Studio
HardwareYou buy/maintain GPUHosted krea2/ltx/wan/hunyuan/elevenlabs paths
Checkpoint choiceManual folder of .safetensorsGrids per epoch; explicit pick
SafetyYour responsibilityFail-closed moderation + voice consent gates
Workflow useManual loader nodesVersion-pinned bindings + cast packs
Flux/SDXL Civitai importsOften runnable locallyLibrary-only on Wavemaker until mount ships

Common mistakes when moving off a home GPU

Skipping caption edits. Auto-captions are a starting point, not ground truth. Vague captions teach vague LoRAs.

Training on unlicensed likeness. Character recipes require rights confirmation; recognizable people need consent. Moderation enforces fail-closed behavior—do not treat the checkbox as theater.

Assuming imported Civitai files run. Match filename to library entries during ComfyUI import or Civitai import; runnable execution requires a trained asset on a supported base or an mounted engine family.

Never evaluating weight. Training gets you a checkpoint; strength tuning still matters at inference time.

Guided path: character pack recipe

If you want a scripted first run, use Train a character pack (/assets?recipe=character): dataset → uploads → image_lora on krea2 → pick checkpoint → fork/bind a workflow → optional publish. It is the supported answer to “I don’t want to assemble tabs manually.”

Training Studio character recipe tracker with rights confirmation

Training Studio recipe — dataset, recipe, and train controls.

Presets, job types, and when to choose each

Training Studio exposes presets so you do not have to reverse-engineer hyperparameters on day one. Character presets bias toward identity retention; style toward palette and brush language; product toward geometry and label stability; motion and narration route you toward video and voice job types respectively. Switching preset does not bypass moderation or consent—it changes safe defaults inside the same registry that powers pricing quotes.

Image LoRA remains the default on-ramp for most creators because krea2 bindings attach to the widest set of Hub templates today. Video and voice are parallel tracks: attempting to “save money” by training only image LoRA when your deliverable is Wan motion usually fails—plan video LoRA training instead of forcing one checkpoint to do everything.

Webhooks, idempotency, and production train loops

When training becomes part of a pipeline (nightly SKU refreshes, cast refresh after a photoshoot), treat checkpoint pick as a human or policy gate in the graph. The training_job.awaiting_checkpoint webhook is the correct pause point: your orchestrator can open a review UI, attach grid thumbnails to a ticket, and call pick_checkpoint only after approval. Auto-picking the highest epoch number is an anti-pattern Wavemaker deliberately does not implement.

Hold idempotency on the training job submit itself if your CI retries POSTs—duplicate jobs burn credits even when refunds exist for hard failures. Pair training webhooks with workflow API slug-runs only after bind completes so you never generate ads against unpicked weights.

Troubleshooting hosted training without SSH

SymptomLikely causeWhat to do
Items stuck pendingScan/ingest backlog or failed moderationOpen item detail; fix or remove; use rescan where offered
Job failed immediatelyDataset below minimum or checklist incompleteRe-read readiness panel
Grids look identical epoch to epochDataset too homogeneousAdd angles/lighting; fix captions
Bound LoRA weak in appWrong epoch or weightRevisit epoch pick and strength
Import “works” but graph silentLibrary-only Flux/SDXLTrain krea2 or wait for mount (compatibility)

Because you cannot shell into a pod, logs are productized: phase names, percentages, and structured job errors. Escalate with job id and org id—not raw stack traces you will never see.

Security and org boundaries

Datasets and assets are org-scoped. Cast packs, Library imports, and training outputs stay inside the org that paid for the job unless you publish to Hub under moderation. Do not train on leaked private datasets “just to test”—moderation exists to reduce platform risk, not to nag legitimate studios.

Voice and likeness paths add consent records; image character paths add rights checkboxes. Treat those as part of the training interface, not legal boilerplate to bypass.

Where to go next

Frequently asked questions

Can I train a LoRA online without owning a GPU?
Yes. Wavemaker Training Studio runs image LoRAs on hosted krea2/ltx paths, video LoRAs on wan/hunyuan backends, and voice clones on the ElevenLabs path—all from the browser at /assets. You pay training credits (image from ~60, video from ~200, voice ~30) plus normal generation when you test outputs.
Which LoRA base models actually run on Wavemaker today?
Runnable training and inference paths today are krea2, ltx, wan, hunyuan, and elevenlabs (voice). Flux and SDXL weights you import from Civitai are library-only until an engine mount ships—they catalog and attestation, but do not execute on platform GPUs yet.
Does Wavemaker automatically use the last training epoch?
No. Every epoch saves a checkpoint with a comparable sample grid (fixed prompts, locked seeds). You review grids and pick the winner; unpicked checkpoints expire after 14 days. The final epoch is often overcooked, so auto-last would hide quality problems.
Do I need a paid plan to train?
Training jobs require a paid plan. Failed jobs auto-refund their training hold; successful runs settle to the quoted training price shown before you start.