Conditioning is injected additively only, with no FiLM/AdaLN alternative #34
Notifications
Due Date
No due date set.
Blocks
Reference: lars/giant#34
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ResBlock(giant/model/layers.py:60-76) injects conditioning exactly one way:That's a conditional bias — the weakest of the standard options. FiLM
(per-channel scale and shift) and AdaLN-Zero (the DiT standard: modulate the
normalisation, zero-init the residual branch) are both drop-in replacements at
the same block interface, cost one extra
Linear, and are consistently strongerfor exactly this problem shape — a small MLP whose entire job is to be
conditional.
This is worth flagging beyond its size: GIANT is a conditional generative model
end to end, and every failure mode recorded in the roadmap is a
conditioning-fidelity failure (the router experts not separating by energy;
secondary species collapsing to one class; shower shape diverging while bulk
energy matches). An additive bias may not be the cause of any of those, but it
is the least expressive way the model could be reading its conditioning, and
it's currently not a variable.
Proposal:
BLOCK_REGISTRY+blocks.conditioning = "add" | "film" | "adaln"(and, nearly free once the factory exists,blocks.norm/blocks.activation). Default stays"add"so existing checkpoints arebit-identical.
Migrated from
issues.md(v0.3.0 branch review, 2026-08-13), Issue 9.