]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commit
llama : custom attention mask + parallel decoding + no context swaps (#3228)
authorGeorgi Gerganov <redacted>
Thu, 28 Sep 2023 16:04:36 +0000 (19:04 +0300)
committerGitHub <redacted>
Thu, 28 Sep 2023 16:04:36 +0000 (19:04 +0300)
commitec893798b7a2a803466cc8f063051499ec3d96f7
tree6c0c68de076d3d8493135cf7d958e43eeda04fd8
parent45855b3f1c7bdd0320aa632334d0b3e8965c26c4
llama : custom attention mask + parallel decoding + no context swaps (#3228)

* tests : verify that RoPE is "additive"

* llama : replace ggml_diag_mask_inf with ggml_add (custom -inf mask)

* ggml : ggml_rope now takes a vector with positions instead of n_past

* metal : add rope_f16 kernel + optimize cpy kernels

* llama : unified KV cache + batch inference API

* llama : add new llama_decode() API that works with llama_batch

* llama : add cell_max heuristic for more efficient kv_cache

* llama : extend llama_kv_cache API

* llama : more robust cell_max heuristic + wip shift

* metal : disable concurrency optimization

* llama : add llama_kv_cache_shift_seq + no more context swaps

* llama : apply K-cache roping for Falcon and Baichuan

* speculative : fix KV cache management

* parallel : example for serving multiple users in parallel

* parallel : disable hot-plug to avoid cache fragmentation

* fixes : speculative KV cache + llama worst-case graph

* llama : extend batch API to select which logits to output

* llama : fix worst case graph build

* ggml-cuda : update rope implementation for parallel decoding (#3254)

* ggml-cuda : update rope implementation for parallel decoding

* better solution for p0 computation

* fix rope

* simpler rope implementation

---------

Co-authored-by: Georgi Gerganov <redacted>
* make : add parallel to build + fix static functions in llama.cpp

* simple : fix token counting

* parallel : various improvements

* llama : fix cell_max logic + rename functions

* parallel : try smaller batches when the KV cache is fragmented

* parallel : fix sequence termination criteria

* llama : silence errors KV cache errors

* parallel : remove new line from prompt

* parallel : process system prompt once + configurable paramters + llama API

* parallel : remove question with short answers

* parallel : count cache misses

* parallel : print misses on each request

* parallel : minor

* llama : fix n_kv to never become 0

* parallel : rename hot-plug to continuous-batching

* llama : improve llama_batch API + simplify parallel example

* simple : add parallel decoding support

* simple : improve comments + free batch

* ggml-cuda : add rope f16, restore performance with parallel decoding (#3272)

* ggml-cuda : add rope f16, restore performance

* offload KQ_mask with all models

* fix rope shift

---------

Co-authored-by: Georgi Gerganov <redacted>
* llama : disable MPI for now

ggml-ci

* train : make KQ_pos memory buffer permanent via dummy scale op

* ggml : revert change to ggml_cpy, add ggml_cont_Nd instead (#3275)

ggml-ci

* parallel : fix bug (extra BOS) + smaller token_prev array

* parallel : fix cases where the input prompts can overflow the batch

* parallel : add disabled experimental batch chunking in powers of two

* llama : llama.h formatting + comments

* simple : add README.md

* llama : fix kv cache heuristic when context is less than 32

* parallel : fix crash when `-n -1`

* llama : simplify returns if/else branches

* metal : use mm kernels for batch size > 2

* examples : utilize new llama_get_logits_ith()

* examples : add example for batched decoding

* examples : do not eval prompt 2 times (close #3348)

* server : clear the KV cache beyond n_past before llama_decode

* server : avoid context swaps by shifting the KV cache

---------

Co-authored-by: slaren <redacted>
35 files changed:
.gitignore
Makefile
common/common.cpp
common/common.h
examples/CMakeLists.txt
examples/baby-llama/baby-llama.cpp
examples/batched/CMakeLists.txt [new file with mode: 0644]
examples/batched/README.md [new file with mode: 0644]
examples/batched/batched.cpp [new file with mode: 0644]
examples/beam-search/beam-search.cpp
examples/embd-input/embd-input-lib.cpp
examples/embedding/embedding.cpp
examples/llama-bench/llama-bench.cpp
examples/main/main.cpp
examples/parallel/CMakeLists.txt [new file with mode: 0644]
examples/parallel/README.md [new file with mode: 0644]
examples/parallel/parallel.cpp [new file with mode: 0644]
examples/perplexity/perplexity.cpp
examples/save-load-state/save-load-state.cpp
examples/server/server.cpp
examples/simple/README.md [new file with mode: 0644]
examples/simple/simple.cpp
examples/speculative/speculative.cpp
examples/train-text-from-scratch/train-text-from-scratch.cpp
ggml-cuda.cu
ggml-cuda.h
ggml-metal.m
ggml-metal.metal
ggml.c
ggml.h
llama.cpp
llama.h
tests/CMakeLists.txt
tests/test-grad0.cpp
tests/test-rope.cpp [new file with mode: 0644]