Instructions to use vybs-ai/vybs-loras with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use vybs-ai/vybs-loras with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("fill-in-base-model", dtype=torch.bfloat16, device_map="cuda") pipe.load_lora_weights("vybs-ai/vybs-loras") prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k" image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Draw Things
- DiffusionBee
VYBS LoRAs
Hosting repo for VYBS LoRAs, published public so they can be loaded by bare
URL from fal.ai workflows. fal fetches loras[].path without
any Hugging Face token, so a private repo would fail with 401 partway through a
generation.
Start here:
illustration/flux/vybs-illustration-turbo-flux_Album_V2.safetensorsis the production LoRA. Triggervybs2d. It supersedes V1, which baked the background colour in unpromptably. The other base models were a bake-off and are kept for reference only.Control complexity with plain language, not tags. V2 was trained with invented
vybslv1β¦vybslv5level tags and they do not work β measured 6.4β7.2 mean pixel distance against a 107.2 colour-word reference, i.e. inert. Describing the scene instead ("a single gold coin alone, nothing else" β "a mountain of coins, flat confetti, a radial burst of hard-edged flat wedges") scores 43.8β65.5 on the same weights. Ignore the tags; write the description.
Naming convention
vybs-<domain>-<base-model>_<Dataset>_V<N>.safetensors
Every field answers a question you would otherwise have to open the file to answer:
| Field | Question it answers | Values in use |
|---|---|---|
vybs |
Whose LoRA is this? | always vybs |
<domain> |
What does it do? | illustration (brand art style), ugc (a person/avatar for UGC ads) |
<base-model> |
What can it be loaded onto? | turbo-flux, dev-flux, flux, qwen-image, krea2, ideogram-v4, z-image-turbo, wan-22-a, wan-22-b |
<Dataset> |
What was it trained on? | Album (collectible-card album illustration set), Kayla (UGC character set) |
V<N> |
Which retrain? | V1, V2, β¦ never overwrite a version |
Hyphens inside a field, underscores between fields. The base model is repeated in the filename on purpose: a file downloaded out of its folder is still self-describing and cannot be loaded onto the wrong base by accident.
Folder layout
Folders are <domain>/<base>/. The base folder is load-bearing, not cosmetic β
a Flux LoRA will not load on WAN, Qwen-Image or Z-Image, and the folder tells you
which base a file is valid against before you open it.
illustration/ brand art style, trained on the Album set
flux/ Flux dev + turbo β transformer.single_transformer_blocks.*
qwen/ Qwen-Image β modelspec.architecture = qi/lora
krea2/ Krea 2 (fal/krea-2)β blocks.*.attn.wk
ideogram/ Ideogram v4 β conditional_transformer.layers.*
z-image/ Z-Image Turbo β transformer.layers.*.adaLN_modulation
wan/ WAN 2.2 β transformer.blocks.*.attn1.*
characters/ a specific person / avatar
flux/
z-image/
products/ reserved β product LoRAs (does not exist yet)
Those right-hand fingerprints are how the base model was actually determined. Filenames lie; safetensors tensor keys do not. To identify an unknown LoRA, read its header rather than trusting whoever named it.
URL pattern
https://huggingface.co/vybs-ai/vybs-loras/resolve/main/<path-in-repo>
Use /resolve/main/. Do not use /blob/main/ β that serves an HTML
preview page with HTTP 200, so fal fails on a content error rather than an
obvious 404.
| β | .../resolve/main/illustration/flux/vybs-illustration-turbo-flux_Album_V1.safetensors |
| β | .../blob/main/illustration/flux/vybs-illustration-turbo-flux_Album_V1.safetensors |
Contents
illustration/ β brand art style, Album dataset
| Path | Base model | Trigger phrase | Steps | Status |
|---|---|---|---|---|
illustration/flux/vybs-illustration-turbo-flux_Album_V2.safetensors |
Flux turbo (rank 16) | vybs2d |
1800 | production β use this one |
illustration/flux/vybs-illustration-turbo-flux_Album_V1.safetensors |
Flux turbo | ohwx-Vybs-turbo-flux-trainer |
1000 | superseded by V2 β background colour unpromptable, trigger leaked as garbled text |
illustration/flux/vybs-illustration-dev-flux_Album_V1.safetensors |
Flux dev | (none recorded) | 1000 | reference |
illustration/qwen/vybs-illustration-qwen-image_Album_V1.safetensors |
Qwen-Image (rank 32, alpha 1) | (none recorded) | 1000 | reference |
illustration/krea2/vybs-illustration-krea2_Album_V1.safetensors |
Krea 2 (fal/krea-2, rank 32, alpha 32, bf16) |
vybs-illustration-Krea2 |
100 | reference |
illustration/ideogram/vybs-illustration-ideogram-v4_Album_V1.safetensors |
Ideogram v4 (ideogram-ai/ideogram-4-fp8, rank 16) |
vybs-ideogram |
1000 | reference |
illustration/z-image/vybs-illustration-z-image-turbo_Album_V1.safetensors |
Z-Image Turbo | Vybs-z-image-turbo-trainer-v2 |
2000 | reference |
illustration/wan/vybs-illustration-wan-22-a_Album_V1.safetensors |
WAN 2.2 | vybs-art-wan-22 |
1000 | reference |
illustration/wan/vybs-illustration-wan-22-b_Album_V1.safetensors |
WAN 2.2 | vybs-art-wan-22 |
1000 | reference |
Trigger phrases live in the fal trainer config JSON emitted next to each adapter, not in the weights β if you lose the config, the trigger phrase is gone. Record it here at upload time.
characters/ β Kayla UGC character
| Path | Base model | Rank | Trainer |
|---|---|---|---|
characters/flux/vybs-ugc-flux_Kayla_V1.safetensors |
Flux | 16 | diffusers-style keys, no metadata block |
characters/z-image/vybs-ugc-z-image-turbo_Kayla_V1.safetensors |
Z-Image Turbo | 32 | ai-toolkit 0.9.13, ss_base_model_version: zimage |
Both were trained on the same image set. The Flux one records no flavour, so it
is named plain flux rather than guessing dev vs turbo. No trigger phrase was
recorded for either.
β οΈ The two WAN 2.2 adapters
WAN 2.2 A14B uses a high-noise / low-noise expert pair, and these two files are almost certainly that pair β identical size and tensor layout, emitted two seconds apart by the same job. Neither file records which expert it is, so they are named neutrally rather than guessed at:
| File | SHA-256 |
|---|---|
illustration/wan/vybs-illustration-wan-22-a_Album_V1.safetensors |
1b7241d315c7256e3792969f6aa5a275c18917e972fd759458d5b2129cdcaa34 |
illustration/wan/vybs-illustration-wan-22-b_Album_V1.safetensors |
5c77561513005fc9d7cc362a3f88ccdb662ede775ba1168eefecea52e7d1316b |
Once confirmed, rename to wan-22-high-noise / wan-22-low-noise.
Using these from fal.ai
fal-ai/flux-lora accepts a bare URL in loras[].path β no auth header, which
is exactly why this repo is public.
These examples apply to the Flux LoRAs only. Qwen-Image, Krea 2, Ideogram v4,
Z-Image and WAN each need their own base-matched fal endpoint; passing them to
fal-ai/flux-lora will fail to load. Check fal's model catalogue for the current
endpoint id per base.
JSON
{
"prompt": "ohwx-Vybs-turbo-flux-trainer a toucan perched on a branch",
"image_size": "square_hd",
"num_inference_steps": 28,
"guidance_scale": 3.5,
"num_images": 1,
"loras": [
{
"path": "https://huggingface.co/vybs-ai/vybs-loras/resolve/main/illustration/flux/vybs-illustration-turbo-flux_Album_V1.safetensors",
"scale": 1.0
}
]
}
JavaScript β @fal-ai/client
import { fal } from "@fal-ai/client";
fal.config({ credentials: process.env.FAL_KEY });
const LORA =
"https://huggingface.co/vybs-ai/vybs-loras/resolve/main/" +
"illustration/flux/vybs-illustration-turbo-flux_Album_V1.safetensors";
const result = await fal.subscribe("fal-ai/flux-lora", {
input: {
prompt: "ohwx-Vybs-turbo-flux-trainer a toucan perched on a branch",
image_size: "square_hd",
num_inference_steps: 28,
guidance_scale: 3.5,
loras: [{ path: LORA, scale: 1.0 }],
},
logs: true,
onQueueUpdate: (u) => {
if (u.status === "IN_PROGRESS") u.logs.map((l) => l.message).forEach(console.log);
},
});
console.log(result.data.images[0].url);
Install with npm install @fal-ai/client.
Python β fal_client
import os
import fal_client
os.environ["FAL_KEY"] = "..." # or export it in your shell
LORA_URL = (
"https://huggingface.co/vybs-ai/vybs-loras/resolve/main/"
"illustration/flux/vybs-illustration-turbo-flux_Album_V1.safetensors"
)
def on_queue_update(update):
if isinstance(update, fal_client.InProgress):
for log in update.logs:
print(log["message"])
result = fal_client.subscribe(
"fal-ai/flux-lora",
arguments={
"prompt": "ohwx-Vybs-turbo-flux-trainer a toucan perched on a branch",
"image_size": "square_hd",
"num_inference_steps": 28,
"guidance_scale": 3.5,
"loras": [{"path": LORA_URL, "scale": 1.0}],
},
with_logs=True,
on_queue_update=on_queue_update,
)
print(result["images"][0]["url"])
Install with pip install fal-client.
Adding a new LoRA
hf upload vybs-ai/vybs-loras \
<local-file> \
<domain>/<base>/vybs-<domain>-<base>_<Dataset>_V<N>.safetensors
Then confirm the URL serves the file rather than an HTML page:
curl -sIL "https://huggingface.co/vybs-ai/vybs-loras/resolve/main/<path>" \
| grep -iE "^HTTP|^content-type|^location"
Expect a final HTTP/2 200 with content-type: application/octet-stream (via a
location: redirect to the CDN). content-type: text/html means the path is
wrong or you used /blob/main/.
Then add a row to the Contents table above with the base model, trigger phrase and step count. The table is the only place that information survives.
Renaming an existing LoRA
Do not download and re-upload β Hugging Face can copy LFS files server-side, so a rename moves no bytes:
from huggingface_hub import HfApi, CommitOperationCopy, CommitOperationDelete
api = HfApi()
api.create_commit(
"vybs-ai/vybs-loras",
[
CommitOperationCopy(src_path_in_repo="old/path.safetensors",
path_in_repo="new/path.safetensors"),
CommitOperationDelete(path_in_repo="old/path.safetensors"),
],
commit_message="Rename β¦",
)
- Downloads last month
- -