- Flash Attention์ GPU ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํ์ฉํ IO-aware ์ ํ ์ดํ ์ ์๊ณ ๋ฆฌ์ฆ (by Tri Dao, NeurIPS 2022)
- NรN ์ดํ ์ ํ๋ ฌ์ HBM์ ์ค์ฒดํํ์ง ์๊ณ , ํ์ผ๋ง(tiling)์ผ๋ก SRAM์์ ๋ธ๋ก ๋จ์ ๊ณ์ฐ์ ์ํ
- ๊ทผ์ฌ๊ฐ ์๋ ์ ํํ(exact) ์ดํ ์ ์ด๋ฉด์ ์ต๋ 7.6๋ฐฐ ๋น ๋ฅด๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ O(N)์ผ๋ก ๊ฐ์
ํด๋น ๊ฐ๋ ์ด ํ์ํ ์ด์
- ํ์ค ์ดํ ์ ์ ์ํ์ค ๊ธธ์ด์ ๋ํด O(Nยฒ) ์๊ฐ/๋ฉ๋ชจ๋ฆฌ ๋ณต์ก๋
- ๊ทผ์ฌ ์ดํ ์ (Reformer, Performer ๋ฑ)์ FLOP๋ ์ค์ด์ง๋ง ์ค์ wall-clock ์๋ ํฅ์ ๋ฏธ๋ฏธ
- ํต์ฌ ๋ณ๋ชฉ์ ์ฐ์ฐ๋์ด ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ(IO) โ GPU HBM โ SRAM ๊ฐ ๋ฐ์ดํฐ ์ด๋
AS-IS: ํ์ค ์ดํ ์
sequenceDiagram autonumber participant HBM as GPU HBM participant SRAM as GPU SRAM HBM->>SRAM: Q, K ์ ์ฒด ๋ก๋ SRAM->>SRAM: S = Q ร K^T (NรN ํ๋ ฌ ๊ณ์ฐ) SRAM->>HBM: S๋ฅผ HBM์ ์ ์ฅ (NรN) HBM->>SRAM: S ๋ค์ ๋ก๋ SRAM->>SRAM: P = softmax(S) SRAM->>HBM: P๋ฅผ HBM์ ์ ์ฅ (NรN) HBM->>SRAM: P, V ๋ก๋ SRAM->>SRAM: O = P ร V SRAM->>HBM: O ์ ์ฅ Note over HBM,SRAM: NรN ์ค๊ฐ ํ๋ ฌ์ด HBM์ ์๋ณต โ IO ๋ณ๋ชฉ
TO-BE: Flash Attention
sequenceDiagram autonumber participant HBM as GPU HBM (๋๋ฆผ, ๋์ฉ๋) participant SRAM as GPU SRAM (๋น ๋ฆ, ์์ฉ๋) participant Compute as ์ฐ์ฐ ์ ๋ HBM->>SRAM: K, V ๋ธ๋ก ๋ก๋ loop Q ๋ธ๋ก ์ํ HBM->>SRAM: Q ๋ธ๋ก ๋ก๋ SRAM->>Compute: ๋ธ๋ก ๋จ์ ์ดํ ์ ๊ณ์ฐ Compute->>SRAM: ๋ถ๋ถ ๊ฒฐ๊ณผ + ์ ๊ทํ ํฉํฐ end SRAM->>HBM: ์ต์ข ๊ฒฐ๊ณผ ๊ธฐ๋ก Note over HBM,Compute: NรN ํ๋ ฌ์ด HBM์ ์ค์ฒดํ๋์ง ์์
ํ์ผ๋ง(Tiling) ํต์ฌ ๋ฉ์ปค๋์ฆ
์ ๋ ฅ Q, K, V๋ฅผ ๋ธ๋ก์ผ๋ก ๋ถํ ํ ๋ค, ๋๋ฆฐ HBM์์ ๋น ๋ฅธ SRAM์ผ๋ก ๋ธ๋ก ๋จ์๋ก ๋ก๋ํ๋ค. ๊ฐ ๋ธ๋ก์์ ์ดํ ์ ์ถ๋ ฅ์ ๊ณ์ฐํ๊ณ , ์ ์ ํ ์ ๊ทํ ํฉํฐ๋ก ์ค์ผ์ผ๋งํ์ฌ ํฉ์ฐํ๋ฉด ์ ํํ ๊ฒฐ๊ณผ๋ฅผ ์ป๋๋ค.
ํ์ผ๋ง ๋๋ถ์ recomputation์ผ๋ก ์ธํด FLOP๊ฐ ์ฆ๊ฐํ๋๋ผ๋, HBM ์ ๊ทผ์ด ๋ํญ ์ค์ด๋ค์ด ์ค์ ์๋๋ ๋ ๋น ๋ฅด๋ค.
IO ๋ณต์ก๋ ๋น๊ต
| ๋ฐฉ์ | HBM ์ ๊ทผ ํ์ |
|---|---|
| ํ์ค ์ดํ ์ | ฮ(Nd + Nยฒ) |
| Flash Attention | O(NยฒdยฒMโปยน) |
d: head ์ฐจ์ (64-128), M: SRAM ํฌ๊ธฐ (100KB). ์ผ๋ฐ์ ์ผ๋ก dยฒ โช M์ด๋ฏ๋ก ์9๋ฐฐ ์ ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ.
ํต์ฌ ์ธ์ฌ์ดํธ: FLOP โ ์๋
๊ทผ์ฌ ์ดํ ์ ์ FLOP ์ ๊ฐ์ ์ง์คํ์ง๋ง, FLOP ์ ๊ฐ์ด ๋ฐ๋์ wall-clock ์๋ ํฅ์์ผ๋ก ์ด์ด์ง์ง ์๋๋ค. Flash Attention์ ์คํ๋ ค recomputation์ผ๋ก FLOP๋ฅผ ์ฆ๊ฐ์ํค๋ฉด์๋, IO๋ฅผ ์ค์ฌ ์ค์ ์๋๋ฅผ ํฅ์์์ผฐ๋ค. ์ด๋ ํ๋์จ์ด ์ธ์ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ์ ์ค์์ฑ์ ๋ณด์ฌ์ฃผ๋ ๋ํ ์ฌ๋ก๋ค.