lora.exe

LoRA

Low-Rank Adaptation, och hur jag tränar en på mitt eget arbeteLow-Rank Adaptation, and how I train one on my own work

Nadeschda Barenje

vetroal.se / EXTERN_AI / 2026


Ett tunt lager av mig, som rider på en modell tränad av alla andra.
Vem skapar när kontrollen är utspridd?
A small layer of my own, riding on a model trained by everyone else.
Who creates when control is distributed?

what_is_a_lora.txt

Vad en LoRA ärWhat a LoRA is

En stor bildmodell som Stable Diffusion bär sin kunskap i hundratals miljoner tal, dess vikter. Att träna om alla dem för att lära modellen något nytt är långsamt och kräver tung hårdvara. En LoRA, förkortning för Low-Rank Adaptation, tar en annan väg. Originalvikterna fryses och lämnas orörda. Istället läggs ett tunt set nya, träningsbara tal bredvid dem, och bara det tunna setet lär sig.A large image model like Stable Diffusion holds its knowledge in hundreds of millions of numbers, its weights. Retraining all of them to teach the model something new is slow and needs heavy hardware. A LoRA, short for Low-Rank Adaptation, takes another route. The original weights are frozen and left untouched. Instead, a thin set of new, trainable numbers is added beside them, and only that thin set learns.

Knepet ligger i ordet low-rank. Istället för att lära sig ett fullständigt rutnät av justeringar lär sig en LoRA två små matriser vars produkt approximerar den förändring man vill ha. En handfull miljoner tal ersätter en redigering som annars skulle behöva hundratals miljoner. Basmodellen gör fortfarande det tunga arbetet med att rendera en sammanhängande bild; LoRAn lutar sig bara mot den och nuddar den mot ett visst motiv eller en viss yta.The trick is in the word low-rank. Rather than learning a full grid of adjustments, a LoRA learns two small matrices whose product approximates the change you want. A handful of million numbers stands in for an edit that would otherwise need hundreds of millions. The base model still does the heavy lifting of rendering a coherent image; the LoRA only leans on it, nudging it toward a particular subject or surface.

Fryst basmodell + ett litet tränat lager = basmodellens kompetens, styrd mot något specifikt. Metoden kommer från Hu et al., "LoRA: Low-Rank Adaptation of Large Language Models" (2021).Frozen base model + a small trained layer = the base model's competence, steered toward something specific. The method comes from Hu et al., "LoRA: Low-Rank Adaptation of Large Language Models" (2021).

Hur jag använder detHow I use it

För EXTERN_AI tränar jag en LoRA på fotografier av mina egna glas- och keramikskulpturer. Basen är runwayml/stable-diffusion-v1-5, fryst. Ovanpå den tränar jag ett lager med ungefär 12,7 miljoner parametrar vid rank 64, så att modellen lär sig formerna, ytorna och ljuset i mitt arbete utan att glömma hur man gör en bild överhuvudtaget.For EXTERN_AI I train a LoRA on photographs of my own glass and ceramic sculptures. The base is runwayml/stable-diffusion-v1-5, frozen. On top of it I train a layer of about 12.7 million parameters at rank 64, so the model learns the forms, surfaces and light of my work without forgetting how to make an image at all.

Varje träningsbild har en bildtext med ett triggerord, nadja_art. När det väl är tränat är det det ordet i en prompt som väcker det inlärda lagret; utan det driver modellen tillbaka mot generiska scener. Jag genererar i 384 px för att hålla mig inom 6 GB på min GTX 1660 Super, och jag varierar prompt, guidance och sampler kraftigt mellan bilder så att utdatan håller sig åtskild snarare än tio versioner av samma bild.Each training image is captioned with a trigger word, nadja_art. Once trained, writing that word into a prompt is what wakes the learned layer; without it the model drifts back to generic scenes. I generate at 384 px to stay inside the 6 GB of my GTX 1660 Super, and I vary prompt, guidance and sampler heavily between images so the outputs stay different from one another rather than ten versions of the same picture.

Min konfigurationMy configuration

InställningSettingVärdeValueVarförWhy
BasmodellBase modelStable Diffusion 1.5Fryst, tränas aldrig omFrozen, never retrained
MetodMethodLoRA, rank 64 / alpha 32Tillräcklig kapacitet för en stil, inte så mycket att bilder går sönderEnough capacity for a style, not so much it breaks images
Träningsbar storlekTrainable size~12.7 million parametersDen del som är minThe part that is mine
TriggerordTrigger wordnadja_artAktiverar det inlärda lagretActivates the learned layer
GenereringsstorlekGeneration size384 pxRyms i 6 GB VRAM utan minnesbristFits 6 GB VRAM without out-of-memory
python generate_wild.py \
  --checkpoint ./checkpoints/epoch_050 \
  --trigger "nadja_art" \
  --size 384 --guidance 4-14 --vary-prompt
the_process.exe

Processen, steg för stegThe process, step by step

STEP 1 Träningssetet: mina egna fotografierThe training set: my own photographs

Jag fotograferar mina färdiga skulpturer och processarbete, sedan ger varje bild en bildtext med triggerordet. Det är det enda materialet lagret någonsin lär sig från. Några hundra fotografier av mitt glas, keramik och gjutna former, inget lånat.I photograph my finished sculptures and process work, then caption each image with the trigger word. This is the only material the layer ever learns from. A few hundred photographs of my glass, ceramics and cast forms, nothing borrowed.

photograph of my own glass work
photograph of my own glass work
photograph of my own glass work
photograph of my own glass work
photograph of my own glass work
photograph of my own glass work
photograph of my own glass work
photograph of my own glass work

Urval ur träningssetet: riktiga fotografier av mitt eget glas- och keramikarbete, varje bild med triggerordet som bildtext.Sample of the training set: real photographs of my own glass and ceramic work, each captioned with the trigger word.

STEP 2 Den frysta basen, mitt tunna lager ovanpåThe frozen base, my thin layer on top

Träningen rör inte Stable Diffusions egna vikter. Den justerar bara de små lågringsmatriser som lagts bredvid dem. Basen behåller allt den lärt sig från miljarder bilder; mitt lager lär sig det smala som den aldrig såg, mitt arbete.Training does not touch Stable Diffusion's own weights. It only adjusts the small low-rank matrices added beside them. The base keeps everything it learned from billions of images; my layer learns the narrow thing it never saw, my work.

FROZEN BASE — 2.3 billion others' images my LoRA + trigger "nadja_art" the image
Det smala bandet är litet, frysta vikter under, bilden ovan, men det är bandet som riktar hela stacken.The narrow band is small, frozen weights below, image above, but it is the band that aims the whole stack.

STEP 3 Vad det genererarWhat it generates

Med triggerordet i prompten producerar modellen nya former som läses som mina. Ytorna är mina, och det är också sättet ljuset sitter i en kropp. Det här är rena utdata, inga retuscherade foton, genererade i 384 px med varierade seeds och promptar. En del blir så övertygande att de ser ut som dokumentation av ett verk jag aldrig gjort.With the trigger word in the prompt, the model produces new forms that read as mine. The surfaces are mine, and so is the way light sits in a body. These are pure outputs, no photo retouched, generated at 384 px and varied across seeds and prompts. Some come out so convincing they look like documentation of a piece I never made.

LoRA generated image
LoRA generated image
LoRA generated image
LoRA generated image
LoRA generated image
LoRA generated image
LoRA generated image
LoRA generated image
LoRA generated image
LoRA generated image
LoRA generated image
LoRA generated image
LoRA generated image
LoRA generated image
LoRA generated image

Genererat med det tränade lagret. De första raderna är nästan fotografiska; de senare håller sig råare och mer abstrakta. Filnamnen bär sina seeds, t.ex. nadja_050_seed3050.Generated with the trained layer. The first rows are nearly photographic; the later ones stay rawer and more abstract. Filenames carry their seeds, e.g. nadja_050_seed3050.

STEP 4 Tillbaka till glasBack into glass

En genererad bild är inte slutet. Jag läser den som ett förslag och tar tillbaka den till materian. För The Glass Child tog jag bilden som LoRAn genererade, byggde en 3D-modell av den, printade och formade den, och gjöt formen i glas. Modellen lämnar tillbaka mitt arbete till mig förändrat, och jag svarar den i ugnen.A generated image is not the end. I read one as a proposal and bring it back into matter. For The Glass Child I took the image the LoRA generated, built a 3D model from it, printed and moulded it, and cast the form in glass. The model returns my work to me changed, and I answer it in the kiln.

The Glass Child, cast glass
The Glass Child (2026). Gjutglas, modellerat och format från en EXTERN_AI-genererad bild.The Glass Child (2026). Cast glass, modelled and moulded from an EXTERN_AI generated image.
EXTERN_AI github.com/jinkieyz SD 1.5 + LoRA
how_much_is_mine.exe

Hur stor del grundas på mitt arbete?How much of it is based on my work?

Det är frågan jag återvänder till. Två ärliga svar finns, och de pekar åt motsatta håll. Sett till ren kvantitet är min andel nästan ingenting. Sett till effekt avgör den allt du ser.This is the question I keep returning to. Two honest answers exist, and they point in opposite directions. By sheer quantity my share is almost nothing. By effect, it decides everything you see.

I parametrarBy parameters

Den del av basmodellen som min LoRA fäster sig vid rymmer ungefär 860 miljoner tal. Mitt tränade lager lägger till cirka 12,7 miljoner ovanpå. Det är nära 1,5% av totalen, omkring en del på sjuttio.The part of the base model my LoRA attaches to holds roughly 860 million numbers. My trained layer adds about 12.7 million on top. That is close to 1.5% of the total, around one part in seventy.

Stable Diffusion 1.5 base — ~860 million (frozen) my LoRA 12.7M ≈ 1.5%
basmodell (alla andras träning)base model (everyone else's training) mitt tränade lagermy trained layer
Den blå remsan längs högerkanten är allt jag tränade.The blue sliver on the right edge is the whole of what I trained.

I träningsbilderBy training images

Basmodellen lärde sig av storleksordningen 2,3 miljarder bilder skrapade från det öppna nätet. Jag tränade på några hundra fotografier av mina egna skulpturer. Ritade i samma skala är mitt bidrag tunnare än ett enda teckenbart streck.The base model learned from on the order of 2.3 billion images scraped from the open web. I trained on a few hundred photographs of my own sculptures. Drawn to the same scale, my contribution is thinner than a single drawable line.

~2,300,000,000 images from the open web
Mina några hundra fotografier är 1-pixelmarkeringen längst till höger.My few hundred photographs are the 1-pixel mark at the far right.

I effektBy effect

Och ändå är det tunna lagret styrningen. Basen levererar den råa förmågan att rendera glas, ljus och form; triggerordet och mina 12,7 miljoner tal avgör att den renderar mitt glas, mina former, de ytor jag gjuter och blåser. Ta bort lagret och samma prompt driver iväg mot lagerbilder och okändas ansikten.And yet that thin layer is the steering. The base supplies the raw ability to render glass, light and form; the trigger word and my 12.7 million numbers decide that it renders my glass, my forms, the surfaces I cast and blow. Remove the layer and the same prompt drifts off into stock landscapes and strangers' faces.

Det ärliga svaret är alltså dubbelt: numeriskt försumbart, och på samma gång den avgörande handen. Modellen är byggd av alla. Siktet är mitt.So the truthful answer is double: numerically negligible, and at the same time the deciding hand. The model is built from everyone. The aim is mine.

EXTERN_AI är en del av Hard Copy. Kisel hela vägen: sand till glas, glas till lins, lins till GPU, GPU till bild, bild tillbaka till glas.EXTERN_AI is part of Hard Copy. Silicon all the way: sand to glass, glass to lens, lens to GPU, GPU to image, image back to glass.

Nadeschda Barenje vetroal.se/lora 2026
« tillbaka till skrivbordetback to desktop