Prefill
Wysyłasz do czatu długie pytanie i czekasz na pierwsze słowo. Zanim model dopisze odpowiedź, musi przetworzyć treść, którą już otrzymał. Ten początkowy etap może wymagać dużo pracy, zwłaszcza przy długim dokumencie.
Prefill to przetwarzanie znanego wejścia, zwanego promptem, przed dalszym generowaniem. Model tworzy liczbowe opisy tokenów — kawałków tekstu — i może zachować część wyników w KV Cache do ponownego użycia.
Ponieważ całe wejście już istnieje, wiele jego pozycji można obliczać równolegle w obrębie warstwy. Nadal obowiązują reguły dostępu do kontekstu: równoległa praca nie pozwala wcześniejszej pozycji podejrzeć zakazanej przyszłości.
Wynik końcowej pozycji pozwala obliczyć szanse pierwszego nowego tokena. Jego wybór jest osobnym krokiem. Prefill nie obejmuje całego czasu od wysłania pytania: dochodzą sieć, kolejka i inne etapy. Dalsze rozwijanie odpowiedzi opisuje Decode.
Źródło mechanizmu: NVIDIA, Mastering LLM Techniques: Inference Optimization, część „Understanding LLM inference”.
Mechanizm i szczegóły

Znany prompt można przetwarzać równolegle
Wszystkie tokeny wejścia są już dostępne, więc w obrębie warstwy można liczyć wiele pozycji jednocześnie. Nadal obowiązuje Causal Masking: pozycja druga nie korzysta z trzeciej. Równoległe obliczenia nie znoszą tej zależności ani kolejności przechodzenia przez warstwy. Podstawę opisują Vaswani et al., §3.1–3.2.
Prefill może też przetwarzać prompt porcjami, zachowując cache wcześniejszych pozycji. Dokumentacja vLLM, „Chunked Prefill” opisuje użycie tego podziału do przeplatania pracy nad promptami z generowaniem odpowiedzi innych żądań.
Cztery pozycje, ten sam wynik
Własny przykład izoluje jedną głowicę attention o wymiarze 1: wszystkie query i key wynoszą 1, a values to . Dozwolone wyniki porównań są równe, więc każda pozycja zwraca średnią widocznych values: . Porównaj przetwarzanie całej czwórki z porcjami po dwa. W drugim wariancie pozycja trzecia musi nadal widzieć pierwsze dwie.
To rachunek pojedynczej operacji, bez wag wyuczonego modelu i bez pomiaru GPU. W pełnym modelu cache jest utrzymywany osobno dla warstw. Zmiana podziału może wprowadzać drobne różnice numeryczne implementacji; nie zmienia matematycznej maski.
Po promptcie zaczyna się Decode, gdzie kolejne wejścia zależą od dopiero wybranych tokenów. Sam czas Prefill nie obejmuje całego oczekiwania użytkownika: znaczenie mają też kolejka, przygotowanie wejścia i dostarczenie wyniku. Zobacz także: Time to First Token obejmuje klientowe oczekiwanie na pierwszy token, a Continuous Batching pozwala zmieniać skład obsługiwanej grupy między iteracjami.
Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.