import type {CSSProperties} from 'react'; import modelConfig from '../t5config_large.json'; type Modality='text'|'protein'; export function ArchitectureNode({modality,kind,excerpt,active}:{modality:Modality;kind:'encoder'|'decoder';excerpt:string;active:boolean}){ const decoder=kind==='decoder',protein=modality==='protein'; const items=protein?excerpt.slice(0,16).split(''):excerpt.replace(/([.!?])(?=[A-Z])/g,'$1 ').split(/\s+/).slice(0,5); const layers=decoder?modelConfig.num_decoder_layers:modelConfig.num_layers; return
{decoder?'WRITE':'READ'}{protein?'Protein':'Text'} {kind}
×{layers}
{!decoder&&
INPUT EXCERPT
{items.map((s,i)=>{s})}…
}
{decoder?'Masked self-attention':'Self-attention'}Q K V
{decoder&&
Cross-attentionCONTEXT
}
Feed-forwardFFN
{decoder&&
RECORDED OUTPUT EXCERPT
{items.map((s,i)=>{s})}…
}
; } export function Projection({reverse=false}:{reverse?:boolean}){ return
Linear{reverse?'Wₚ→ₜ':'Wₜ→ₚ'}
{modelConfig.d_model} → {modelConfig.d_model}
; }