Views
No views yet
ic-lora. Documentação completa em docs/ daquele repo — em especial
ANIMA_FUTURO_TREINO.md e KREA2_MULTIREF_RECEITA.md.| pasta | modelo | tarefa |
|---|---|---|
anima/ | Anima (2B, DiT de vídeo derivado do Cosmos-Predict2) | uma referência, "próxima cena" |
krea2/ | Krea 2 (22B... na prática 12,8B de DiT) | N referências separadas, endereçadas por texto |
krea2/ — multi-referência (o resultado novo)krea2_multiref_grounded. Krea 2 recebendo N referências
separadas (não coladas numa imagem só), endereçadas por texto no caption:
"Generate an image of the woman from image 1 holding the bag from image 2."max_refs = 2.multiref_step500 — 2.200 amostras, 500 stepsmultiref_step250 — mesmo run, checkpoint anteriorwidth_shift do Krea 2 soma uma constante ao deslocar a referência no
RoPE. Um laço sobre N reusando aquilo daria a todos os spans posições
idênticas — e aí a saída do DiT fica exatamente invariante à troca de
duas referências: a atenção é permutation-invariant sobre keys, o tvec e as
máscaras são uniformes, MLP e norm são pointwise.w += (i+1) * W.image 1 / image 2, sem os sinais < >. Treinar com <image 1> fez
o modelo renderizar o marcador como texto dentro da imagem. Os blocos de
visão do Qwen3-VL são rotulados com o mesmo vocabulário (image 1:), então
não há ponte entre dois vocabulários para o modelo aprender.to_layers() do
pipeline, então treino e inferência compartilham o packing exato):1python tools/infer_reference_adapter.py \
2 --config examples/macro_multiref/run2_multiref.toml \
3 --adapter multiref_step500/ \
4 --reference ref1.jpg --reference ref2.jpg \
5 --prompt "Generate an image of the woman from image 1 holding the bag from image 2." \
6 --width 1024 --height 1024 \
7 --turbo-lora krea2_turbo_lora_rank_64_bf16.safetensors--reference é a ordem dos slots. --turbo-lora usa a
LoRA turbo oficial (8 steps, CFG 1.0, mu 1.15).anima/ — bateria de métodos de adapter de referência| adapter | método | veredito |
|---|---|---|
M1_armD_dropout_step2000_VENCEDOR | ic_lora_v3 target-first, llm_adapter congelado, adaln fora, condition_dropout 0.1, 2000 steps | 🏆 vencedor (visual, do usuário) |
M1_arm1_llm_frozen_step500 / step1000 | mesma receita, sem dropout | empata em qualidade, caráter diferente |
M1_armB_dropout_step1000 | mesma receita com dropout, só 1000 steps | perde — não convergiu ainda |
M2_arm3_llm_trainable_step1000 | llm_adapter treinável | ❌ perde ("praticamente não pega a referência") |
M3_armA_adaln_in_step1000 | LoRA também no adaln | ❌ perde (artefato de instabilidade) |
M4_armC_routing_step1000 | routing condition-only | ❌ perde |
condition_dropout não remove a referência — ele a ZERA. O frame
continua concatenado, com o mesmo timestep e as mesmas posições de RoPE; só
fica em branco. Consequência: o modelo ganha um nulo calibrado e passa a
tratar a referência como entrada separável que consulta (atribui), em vez
de fundir referência e alvo (acopla). Para um contrato do tipo "o que não
está escrito é herdado", atribuição é exatamente o que se precisa.1[model]
2type = 'ic_lora_v3'
3llm_adapter_lr = 0 # CONGELADO — bate com a recomendação oficial do Anima
4
5[ic_lora_full]
6ref_first = false # target-first
7condition_dropout = 0.1
8include_adaln = false
9
10[adapter]
11rank = 32
12
13[optimizer]
14type = 'adamw_optimi'
15lr = 1e-4 # batch efetivo 8
16# 2000 steps, não 500--mode ominicontrol_subject --lora_strength 1.0 --ref_cfg 1.0.
⚠️ M4_armC_routing precisa de --mode ic_lora_dual — o modo padrão funde
a LoRA em todos os pesos e destrói o adapter routado, produzindo ruído puro
que parece "o método falhou".arm1, armB e armD sobrevive à estatística
(Welch t=1.74 com 6 seeds, crítico 2.23). O que sobrevive são os efeitos
grandes: llm_adapter congelado vence, adaln fora, routing perde.krea2/multiref é de um treino de 500 steps sobre 2.200 amostras. A
capacidade está demonstrada; não é um modelo de produção.