In my testing https://github.com/lhl/strix-halo-testing/tree/main/llm-bench I've found that pp (especially with FA) can be enormously faster when built with rocWMMA -DGGML_HIP_ROCWMMA_FATTN=ON than without.
To build for ROCm 7 I apply some janky patches: https://github.com/lhl/strix-halo-testing/blob/main/llm-bench/apply-rocwmma-fix.sh
BTW, here's an example with just the plainest Llama2 model but this isn't unrepresentative of the gains from some other models as well:
❯ llama.cpp-hip/build/bin/llama-bench --mmap 0 -fa 1 -m /models/gguf/llama-2-7b.Q4_K_M.gguf
ggml_cuda_init: GGML_CUDA_FORCE_MMQ: no
ggml_cuda_init: GGML_CUDA_FORCE_CUBLAS: no
ggml_cuda_init: found 1 ROCm devices:
Device 0: AMD Radeon Graphics, gfx1151 (0x1151), VMM: no, Wave Size: 32
| model | size | params | backend | ngl | fa | mmap | test | t/s |
| ------------------------------ | ---------: | ---------: | ---------- | --: | -: | ---: | --------------: | -------------------: |
| llama 7B Q4_K - Medium | 3.80 GiB | 6.74 B | ROCm | 99 | 1 | 0 | pp512 | 592.28 ± 1.63 |
| llama 7B Q4_K - Medium | 3.80 GiB | 6.74 B | ROCm | 99 | 1 | 0 | tg128 | 40.40 ± 0.01 |
build: 7ad67ba9 (6111)
❯ ROCBLAS_USE_HIPBLASLT=1 llama.cpp-hip/build/bin/llama-bench --mmap 0 -fa 1 -m /models/gguf/llama-2-7b.Q4_K_M.gguf ggml_cuda_init: GGML_CUDA_FORCE_MMQ: no
ggml_cuda_init: GGML_CUDA_FORCE_CUBLAS: no
ggml_cuda_init: found 1 ROCm devices:
Device 0: AMD Radeon Graphics, gfx1151 (0x1151), VMM: no, Wave Size: 32
| model | size | params | backend | ngl | fa | mmap | test | t/s |
| ------------------------------ | ---------: | ---------: | ---------- | --: | -: | ---: | --------------: | -------------------: |
| llama 7B Q4_K - Medium | 3.80 GiB | 6.74 B | ROCm | 99 | 1 | 0 | pp512 | 548.72 ± 1.99 |
| llama 7B Q4_K - Medium | 3.80 GiB | 6.74 B | ROCm | 99 | 1 | 0 | tg128 | 40.43 ± 0.01 |
build: 7ad67ba9 (6111)
❯ ROCBLAS_USE_HIPBLASLT=1 llama.cpp-rocwmma/build/bin/llama-bench --mmap 0 -fa 1 -m /models/gguf/llama-2-7b.Q4_K_M.gguf
ggml_cuda_init: GGML_CUDA_FORCE_MMQ: no
ggml_cuda_init: GGML_CUDA_FORCE_CUBLAS: no
ggml_cuda_init: found 1 ROCm devices:
Device 0: AMD Radeon Graphics, gfx1151 (0x1151), VMM: no, Wave Size: 32
| model | size | params | backend | ngl | fa | mmap | test | t/s |
| ------------------------------ | ---------: | ---------: | ---------- | --: | -: | ---: | --------------: | -------------------: |
| llama 7B Q4_K - Medium | 3.80 GiB | 6.74 B | ROCm | 99 | 1 | 0 | pp512 | 1006.80 ± 3.80 |
| llama 7B Q4_K - Medium | 3.80 GiB | 6.74 B | ROCm | 99 | 1 | 0 | tg128 | 39.46 ± 0.01 |
build: 7ad67ba9 (6111)
❯ llama.cpp-rocwmma/build/bin/llama-bench --mmap 0 -fa 1 -m /models/gguf/llama-2-7b.Q4_K_M.gguf
ggml_cuda_init: GGML_CUDA_FORCE_MMQ: no
ggml_cuda_init: GGML_CUDA_FORCE_CUBLAS: no
ggml_cuda_init: found 1 ROCm devices:
Device 0: AMD Radeon Graphics, gfx1151 (0x1151), VMM: no, Wave Size: 32
| model | size | params | backend | ngl | fa | mmap | test | t/s |
| ------------------------------ | ---------: | ---------: | ---------- | --: | -: | ---: | --------------: | -------------------: |
| llama 7B Q4_K - Medium | 3.80 GiB | 6.74 B | ROCm | 99 | 1 | 0 | pp512 | 899.73 ± 2.58 |
| llama 7B Q4_K - Medium | 3.80 GiB | 6.74 B | ROCm | 99 | 1 | 0 | tg128 | 39.45 ± 0.01 |
build: 7ad67ba9 (6111)
In my testing https://github.com/lhl/strix-halo-testing/tree/main/llm-bench I've found that
pp(especially with FA) can be enormously faster when built with rocWMMA-DGGML_HIP_ROCWMMA_FATTN=ONthan without.To build for ROCm 7 I apply some janky patches: https://github.com/lhl/strix-halo-testing/blob/main/llm-bench/apply-rocwmma-fix.sh
BTW, here's an example with just the plainest Llama2 model but this isn't unrepresentative of the gains from some other models as well: