ByteDance ha rilasciato Ouro-2.6B-Thinking, un modello Universal Transformer ricorrente, che ha presentato difficoltà nell'esecuzione dell'inference.

Architettura e Sfide

L'architettura di Ouro è inusuale: esegue tutti i 48 layer quattro volte per token, per un totale di 192 passaggi effettivi. Le implementazioni GGUF esistenti producevano risultati errati a causa di questa particolarità.

Correzioni Implementate

Sono stati corretti due bug nel file modeling_ouro.py che causavano incompatibilità con Transformers 4.55:

  • Ereditarietà errata della cache, che generava un AttributeError.
  • Assenza del metodo get_mask_sizes() richiesto da create_causal_mask().

Performance

Dopo le correzioni, il modello è stato testato con successo. Su una NVIDIA L4, si sono ottenute prestazioni di circa 3.8 token/s con un utilizzo di 5.3 GB di VRAM (float16).

È importante notare che il modello utilizza use_cache=False, il che implica un ricalcolo completo del contesto. Il passaggio della cache KV non funziona correttamente con l'architettura UT a 4 loop.