Sobes.tech
Senior

Как се борят с квадратичната сложност на механизма за внимание (Linformer, Performer, FlashAttention, плъзгащо се прозорец, разпръснато внимание)?

sobes.tech AI

Отговор от AI

Механизмът на внимание (attention) в класическите трансформери има квадратична сложност спрямо дължината на последователността, тъй като изчислява матрица на вниманието с размер L×L (където L е дължината на входа). За борба с това се използват няколко подхода:

  1. Linformer — приближава матрицата на вниманието чрез нискорангово разлагане, намалявайки размерността на ключовете и стойностите, което намалява сложността до линейна.

  2. Performer — използва случайни проекции и kernel-trick за приближаване на softmax вниманието, позволявайки изчисляване с линейна сложност.

  3. FlashAttention — оптимизира изчисленията на вниманието на ниво GPU, ефективно използвайки паметта и изчисленията, ускорявайки процеса без загуба на точност.

  4. Плъзгащо се прозоречно внимание — ограничава вниманието до локално прозорче с фиксиран размер, т.е. всеки токен взаимодейства само с съседните, което намалява сложността до линейна.

  5. Разредено внимание — използва разредени маски за внимание, където всеки токен гледа само към ограничен набор от релевантни токени, намалявайки изчисленията.

Всички тези методи са насочени към намаляване на изчислителната и паметната натовареност, като същевременно запазват качеството на модела за дълги последователности.