llama.cpp
ggml : add Flash Attention
#5021
Merged

ggml : add Flash Attention #5021

ggerganov merged 145 commits into master from gg/flash-attn
ggerganov
ggerganov ggml : add ggml_flash_attn_ext API
a1c004ef
ggerganov ggerganov added help wanted
ggerganov ggerganov added performance
ggerganov ggerganov closed this 2 years ago
ggerganov ggerganov reopened this 2 years ago
ggerganov ggerganov marked this pull request as draft 2 years ago
slaren
ggerganov
slaren
slaren
slaren
ggerganov
calvintwr
ggerganov
ggerganov ggml : fix GQA support in ggml_flash_attn_ext
fa7ebcca
calvintwr
ggerganov Merge branch 'master' into gg/flash-attn
c3cdfffa
ggerganov ggml : online attention (CPU)
a9681feb
cebtenzzre
JianbangZ
ggerganov metal : initial implementation
1173f49c
ggerganov metal : f16 precision
528da751
ggerganov metal : reduce branches
52ae0857
ggerganov ggerganov force pushed to 52ae0857 2 years ago
ggerganov metal : specialize for head size
b9732580
ggerganov wip : 8 rows per simd group
8cde449b
ggerganov wip : 4 rows per simd group
f31955f5
ggerganov wip : template for rows per warp
a4b6341c
ggerganov metal : parallelize across KV size
77d08f32
ggerganov metal : parallel reduce across heads
17720fad
ggerganov ggerganov force pushed to 17720fad 2 years ago
ggerganov
FSSRepo
JohannesGaessler
ggerganov
JohannesGaessler
ggerganov metal : efficient flash_attn_f16 implementation
1446a12b
ggerganov
YavorGIvanov
ggerganov
ggerganov metal : avoid redundant loads of the attention
d917746d
ggerganov metal : scale and mask in matrix form
432ad04f
ggerganov metal : fix comment
40ea8cd1
ggerganov llama : avoid ggml_cast, use F32 query
f9ca5dcb
ggerganov metal : add parallel reduce version (disabled)
6fea843b
ggerganov ggerganov force pushed to 6fea843b 2 years ago
FSSRepo
ggerganov
ggerganov Merge branch 'master' into gg/flash-attn
b3dd7d97
ggerganov metal : move output into local memory + optimize
77f6976a
ggerganov ggerganov force pushed to 77f6976a 2 years ago
ggerganov metal : add tests, fix scaling, support C > 32
ecc466a4
ggerganov metal : improve precision
3a428a10
ggerganov ggml : fix f16 mad
86128641
ggerganov Merge branch 'master' into gg/flash-attn
0ad44baf
ggerganov metal : minor
134c81c7
ggerganov metal : support Q > 8
1db22d70
ggerganov ggerganov force pushed to 1db22d70 2 years ago
ggerganov tests : add ATTN tests
4794821a
ggerganov metal : disable buffer allocation logs
abeaf0d9
ggerganov tests : more
c6c1132e
ggerganov metal : faster inner loop for C == 32
5fcb9c1c
ggerganov
ggerganov
FSSRepo
cebtenzzre
ggerganov
FSSRepo
ggerganov metal : fix array initialization
d073e4f9
ggerganov tests : ifdef
78df5527
ggerganov Merge branch 'master' into gg/flash-attn
3d03bcb7
ggerganov
FSSRepo
ggerganov
FSSRepo
ggerganov
FSSRepo
ggerganov Merge branch 'master' into gg/flash-attn
2ddc9bbe
ggerganov ggerganov force pushed 2 years ago
ggerganov ggml : switch to padded F16 mask for ggml_soft_max, ggml_flash_attn_ext
8ad92dc1
ggerganov ggerganov force pushed to 8ad92dc1 2 years ago
FSSRepo
slaren
FSSRepo
slaren
x4080
JohannesGaessler
ggerganov ggml : fix ggml_soft_max mask requirement
910b15bb
ggerganov cuda : fix soft_max to use correct mask size
2e460137
ggerganov cuda : add flash_attn kernel (wip)
5a19a9f6
ggerganov Merge branch 'master' into gg/flash-attn
41d136b6
ggerganov metal : optimize softmax for C > 32
56e45a23
ggerganov metal : optimize softmax
cda5a60a
ggerganov ggerganov force pushed to cda5a60a 2 years ago
ggerganov tests : minor fix
c6769b94
ggerganov cuda : avoid zeroing fragments
db1f3c48
ggerganov tests : update dims
12eaa226
ggerganov
ggerganov cuda : fix __hisinf() result check
b68a1122
ggerganov cuda : avoid warp_reduce for smax
b150abe8
ggerganov cuda : use int instead of int64_t
7c34655b
ggerganov cuda : make loops use the same loop values
1f8a5924
ggerganov cuda : unroll some of the loops
92472ea2
ggerganov cuda : avoid __hisinf branches
c51f27c0
ggerganov cuda : use half2 in softmax
b958151e
ggerganov cuda : switch to 1 warp for bs > 16
a7b47156
ggerganov cuda : speed-up reduce part of the kernel
3b1c4e76
ggerganov cuda : unroll Q*K^T loop
5b263dd8
ggerganov cuda : fix -INF block check
e04ff391
ggerganov cuda : simplify softmax
cfd9732b
ggerganov cuda : fix matrix names
ef68fac2
FSSRepo
FSSRepo commented on 2024-02-03
ggerganov
FSSRepo
JohannesGaessler
ggerganov
FSSRepo
JohannesGaessler
ggerganov
FSSRepo
JohannesGaessler
FSSRepo
JohannesGaessler
JohannesGaessler
JohannesGaessler
FSSRepo
ggerganov cuda : minor
1846e92a
ggerganov
FSSRepo
ggerganov
JohannesGaessler
FSSRepo
FSSRepo
FSSRepo
ggerganov Merge branch 'master' into gg/flash-attn
6875997f
ggerganov Merge branch 'master' into gg/flash-attn
31109ca0
ggerganov llama : adapt to F16 KQ_pos
f249c997
FSSRepo
ggerganov
FSSRepo
FSSRepo
ggerganov Merge branch 'master' into gg/flash-attn
02a645e7
ggerganov llama : adapt new models to F16 KQ_mask
6aefd112
ggerganov
FSSRepo
ggerganov Merge branch 'master' into gg/flash-attn
e307882c
ggerganov ggml : fix F16 store (ARM NEON)
58c7f616
ggerganov
FSSRepo
ggerganov Merge branch 'master' into gg/flash-attn
9495d398
ggerganov llama : fix type of KQ_mask and KQ_pos
3a468e6f
ggerganov ggml : fix CPU soft_max
09532120
JohannesGaessler
FSSRepo
JohannesGaessler
ggerganov
ggerganov tests : add hs=256
e425810b
ggerganov Merge branch 'master' into gg/flash-attn
013721df
ggerganov cuda : fix build
6be02b59
ggerganov metal : improve perf via smaller int registers
57c03b78
ggerganov ggerganov force pushed to 57c03b78 2 years ago
ggerganov Merge branch 'master' into gg/flash-attn
3e318e76
ggerganov cuda : adapt soft_max to F16 mask and pos
08e69c50
github-actions
JohannesGaessler
phymbert
JohannesGaessler CUDA: faster FlashAttention, kernel for bs == 1
75aa7b4b
JohannesGaessler 16 cols for Phi-2
d59ac670
JohannesGaessler no vec for hs, no hs==256 ncols==32 for Volta
81da9198
JohannesGaessler adjust kernel selection logic
269374ed
JohannesGaessler 4 warps, 256 stride for all D
cca6d027
JohannesGaessler no ncols == 64
68d793be
JohannesGaessler Multiple parallel blocks for batch size 1
3f777acf
JohannesGaessler fix compile warnings
e1ecd3b1
JohannesGaessler fix excessive KQ_b loads
bb0d51ac
JohannesGaessler fix cmake build
c63dfdf7
ExtReMLapin
JohannesGaessler
JohannesGaessler fix KV cache padding, NaN from INFINITY (#6438)
ee19a4ab
ExtReMLapin
ggerganov Merge branch 'master' into gg/flash-attn
89961dea
github-actions
ggerganov Merge branch 'master' into gg/flash-attn
2c41180e
ggerganov llama : flash_attn cparam + fix defrag
599ce84a
ggerganov
JohannesGaessler
phymbert
JohannesGaessler
phymbert server: support flash_attn param
40538572
ggerganov
phymbert
ggerganov
FSSRepo
phymbert
araleza
JohannesGaessler
phymbert server: bench: enable flash_attn param
5668c79e
araleza
JohannesGaessler
araleza
araleza
araleza
ggerganov
JohannesGaessler CUDA: refactor host code, dyn. par. blocks
34f93bbb
JohannesGaessler fix flash_attn_vec_f16 race condition
6a3b8423
JohannesGaessler flush softmax exp below threshold to 0
ef9e1593
JohannesGaessler store temp KQ in registers
a5b0e2de
JohannesGaessler Calculate KQ as FP32 if KQV has GGML_PREC_F32
0bc67dd1
JohannesGaessler Add __hgt2_mask implementation for CUDA 11
2f538b95
JohannesGaessler fix KQ FP32 precision fpr parallel_blocks > 1
87968de9
ggerganov llama-bench : add -fa,--flash-attn arg
260cdb2d
ggerganov metal : add BS=1 kernel for flash attention (#6508)
105332cc
ggerganov Merge branch 'master' into gg/flash-attn
fa9e8c66
phymbert
JohannesGaessler
araleza
JohannesGaessler
ggerganov metal : use F32 attention accumulators
c16a7c26
ggerganov batched-bench : add fattn arg
9ca86987
ggerganov ggerganov removed help wanted
ggerganov ggerganov added need feedback
ggerganov
ggerganov llama : simplify llama_build_kv_store
74d57f95
ggerganov Merge branch 'master' into gg/flash-attn
1db66c1d
ggerganov llama : adapt build_olmo to changes
e32b2817
ggerganov ggml : fix arm fp16 store on windows
703c6e65
ggerganov metal : clean-up
97eaece7
ggerganov metal : clean-up kernel code
1a88565b
ggerganov metal : minor
bc346166
ggerganov Merge branch 'master' into gg/flash-attn
29f6ad8d
ggerganov tests : remove benchmarks
52945429
ggerganov ggml : fix avx512 const correctness
3badef1f
sorasoras
ggerganov ggml : fix soft_max with bias on CPU
871fcb6e
ggerganov
ggerganov ggerganov marked this pull request as ready for review 2 years ago
ggerganov ggerganov requested a review from slaren slaren 2 years ago
JohannesGaessler
jdecourval
ggerganov
JohannesGaessler
JohannesGaessler
ggerganov
JohannesGaessler
jdecourval
slaren
slaren commented on 2024-04-21
slaren
slaren commented on 2024-04-21
slaren
YavorGIvanov
ggerganov
ggerganov common : print --flash-attn in help
a39217d4
ggerganov ggml : fix num dimensions in ggml_flash_attn_ext
cb76d747
ggerganov llama : force disable flash attention for incompatible models
c11d05fe
ggerganov ggerganov force pushed 2 years ago
ggerganov ggerganov force pushed 2 years ago
ggerganov ggerganov force pushed 2 years ago
ggerganov ggml : ggml_soft_max support F16/F32 mask/pos
f725ca90
ggerganov ggerganov force pushed to f725ca90 2 years ago
ggerganov cuda : uint -> uint32_t
5408d555
ggerganov cuda : "constexpr dim3" -> "const dim3"
c70bfd7b
YavorGIvanov
ggerganov cuda : try to fix __hgt2_mask
c1293697
ggerganov ggerganov force pushed from 78451ce4 to c1293697 2 years ago
ggerganov ggml : add TODO's for F16/F32 mask/pos support in other backends
3864eea4
ggerganov ggerganov force pushed to 3864eea4 2 years ago
ggerganov
slaren
slaren commented on 2024-04-23
ggerganov llama : replace bool need_kq_pos with use_alibi
78d363b0
ggerganov llama : prep ALiBi support for BERT models
19e8982f
ggerganov llama : fix n_batch requirements
56657e52
ggerganov cont
d228bf85
ggerganov
ggerganov
ggerganov commented on 2024-04-23
ggerganov server : add help for --flash-attn arg
751591d5
ggerganov Merge branch 'master' into gg/flash-attn
8937ec53
ggerganov
JohannesGaessler
JohannesGaessler
ggerganov ggerganov force pushed from 1409defc 2 years ago
JohannesGaessler
ggerganov llama : disable FA for AMD
ce281b90
ggerganov ggerganov force pushed to ce281b90 2 years ago
JohannesGaessler
ggerganov Merge branch 'master' into gg/flash-attn
1f77f497
ggerganov tests : remove TMP_ATTN_BENCH
ff2c64a9
ggerganov Merge branch 'master' into gg/flash-attn
cb3547ac
ggerganov ggerganov requested a review from slaren slaren 2 years ago
slaren
ggerganov llama : support save/load state with FA enabled
1fd5bc3d
slaren
ggerganov
slaren
slaren commented on 2024-04-25
ggerganov Merge branch 'master' into gg/flash-attn
09d0381c
ggerganov ci : add CUDA save-load-state tests
ac1c6d91
ggerganov llama : llama_kv_cache_clear zeroes data + fix save-load seq
c225609f
ggerganov
ggerganov llama : fix copy-paste errors, add TODO
bab346ba
ggerganov llama : disallow incompatible states
0fc5c5eb
slaren
slaren commented on 2024-04-25
ggerganov llama : update llama_state_get_size after v_trans field
1e590ac3
ggerganov metal : remove tmp log
4f4c0249
ggerganov llama : add static reminder for llama_state_get_size
9e387606
slaren
slaren approved these changes on 2024-04-26
FSSRepo
FSSRepo approved these changes on 2024-04-28
JamshedQurbonboev
ggerganov Merge branch 'master' into gg/flash-attn
a1616e9f
ggerganov Merge branch 'master' into gg/flash-attn
ca0275ce
ochafik
ggerganov
ochafik
ggerganov metal : fix max nsg
e180fcd3
ggerganov ci : fix arg order
c240ae23
ggerganov ggerganov merged 9c67c277 into master 2 years ago
ochafik
ggerganov
segmond
ExtReMLapin
ExtReMLapin
slaren
sorasoras
ochafik
slaren
ochafik
jdecourval
Dampfinchen
strawberrymelonpanda
ddh0
x4080
LostRuins
JohannesGaessler
Dampfinchen
dagbdagb
JohannesGaessler
LukeLIN-web
ddh0
Autumnlight02

Login to write a write a comment.

Login via GitHub

Reviewers
Assignees
No one assigned
Labels
Milestone