Por que o dobro de contexto custa quatro vezes mais.

SRC·14 Source
O dobro do texto, o quádruplo do trabalho.

O dobro do texto, o quádruplo do trabalho.

O dom da atenção é que cada palavra pode pesar todas as outras — é assim que ela lê o contexto tão bem. É também a armadilha. Dê o dobro e ela não trabalha o dobro; trabalha quatro vezes mais. O olhar que vê tudo é cobrado ao quadrado — e esse preço é o muro invisível por trás de toda 'janela de contexto'.
Queremos que ele leia tudo. A conta diz que não.

Queremos que ele leia tudo. A conta diz que não.

O sonho é simples: jogar um livro inteiro, um código inteiro, e deixá-lo segurar tudo na cabeça de uma vez. Guardar o texto é fácil: cresce com calma, linha a linha. O problema é o custo de relacionar tudo, que dispara muito mais rápido que o próprio texto. O comprimento cresce em linha reta. A conta cresce em curva.
Por que ao quadrado? Cada palavra pesa todas as outras.

Por que ao quadrado? Cada palavra pesa todas as outras.

comparisons=n×n=n2\text{comparisons} = n \times n = n^2
Atenção não é uma olhada rápida. Para situar uma palavra, o modelo a compara com todas as outras — e faz isso para cada palavra. Com n palavras, isso é uma grade de n por n: n² comparaçõezinhas, sem atalho. Como a arte com linhas: estique um fio entre cada par de pregos da borda e os fios se acumulam como o quadrado dos pregos. Uns pregos a mais, muito mais fio.
O dobro do comprimento, o quádruplo do custo.

O dobro do comprimento, o quádruplo do custo.

cost(2n)cost(n)=(2n)2n2=4\dfrac{\text{cost}(2n)}{\text{cost}(n)} = \dfrac{(2n)^2}{n^2} = 4
Como o trabalho depende de n², um pouco mais de texto dói muito. O dobro de palavras não é o dobro de esforço — é quatro vezes. Dez vezes as palavras? Cem vezes o esforço. Como assentar um piso: dobre a largura da sala e você não dobrou os ladrilhos — quadruplicou. A borda cresce de dois em dois; o piso por dentro cresce de quatro em quatro.
Não é só a matemática. É a memória.

Não é só a matemática. É a memória.

ARn×n    memory=O(n2)A \in \mathbb{R}^{n \times n} \;\Rightarrow\; \text{memory} = O(n^2)
Esses n² escores não são feitos e esquecidos — a grade inteira tem de ser mantida de uma vez antes de virar atenção. Então a memória também incha como n², e costuma ser o primeiro muro em que você bate: não 'lento demais', mas 'sem espaço'. Como um reservatório atrás de uma represa: quanto mais longo o rio que você tenta segurar, mais a água sobe — até lamber a beirada.
Só um passo explode. O resto fica calmo.

Só um passo explode. O resto fica calmo.

O(nd2)the rest+O(n2d)all-pairs,n2dnd2    nd\underbrace{O(n\,d^2)}_{\text{the rest}} + \underbrace{O(n^2 d)}_{\text{all-pairs}}, \qquad n^2 d \gg n\,d^2 \iff n \gg d
Aqui está a salvação, e a cilada. Quase todo o modelo cresce devagar — passar as palavras pelas suas camadas custa cerca de n·d². Só o passo de todos-contra-todos custa n²·d. Como duas trepadeiras: elas partem lado a lado, mas uma vai dobrando seu alcance e dispara na frente. Assim que o texto fica mais longo do que o modelo é largo — assim que n passa de d —, aquela trepadeira, o quadrado, ultrapassa tudo.
A fórmula famosa — agora leia a etiqueta de preço.

A fórmula famosa — agora leia a etiqueta de preço.

Attention(Q,K,V)=softmax ⁣(QKd)V    O(n2d)\mathrm{Attention}(Q,K,V) = \mathrm{softmax}\!\left(\dfrac{QK^{\top}}{\sqrt{d}}\right)V \;\Rightarrow\; O(n^2 d)
Aqui está, toda a atenção em uma linha. Aquele QKᵀ lá dentro é a grade de todos-contra-todos; é onde o n² nasce. O poder e o preço são o mesmo fato: um olhar que toca tudo precisa tocar tudo. Como um lustre: para iluminar o salão inteiro de uma vez, cada cristal tem de arder. O esplendor é o custo.
🌱 Você não pesa cada palavra contra todas. Por que ele pesa?

🌱 Você não pesa cada palavra contra todas. Por que ele pesa?

Quando você lê esta frase, não confronta cada palavra com todas as outras — você se apoia na proximidade, no hábito, na ideia geral, e pula quase tudo sem pensar. Aquele muro quadrático é o preço de recusar pular. Então a pergunta em aberto é toda a fronteira: o que um modelo poderia ignorar com segurança e ainda assim entender cada palavra?
toque →deslize ↑ para maisdeslize ↓ para sair