Działa, ale wynik jest złyWindowsLinuxmacOSiPhone & iPadOstatnia aktualizacja 6 listopada 2026

Lokalny LLM powtarza się albo utknął w pętli — jak to naprawić

Powtarza to samo zdanie w kółko, dopóki go nie zatrzymam

Autor Jakub Rusinowski

Błąd

The same sentence again. The same sentence again. The same sentence again. The same sentence ag
Który to przypadek?
Jeśli widziszPrzyczyną jestPrzejdź do
Pętla zaczyna się dopiero po długiej rozmowieOkno kontekstu się przepełniło i wczesne wiadomości zostały odrzuconeRozwiązanie 1: zwiększ num_ctx
Zapętla się od pierwszej odpowiedzi, powtarzając frazyKara za powtórzenia jest wyłączona albo za słabaRozwiązanie 2: repeat_penalty 1,1–1,2
Każde ponowne wygenerowanie daje słowo w słowo ten sam tekstTemperatura jest równa 0 albo bliska zeraRozwiązanie 3: podnieś temperaturę i top_p
Kończy odpowiedź, po czym dopisuje fałszywą turę użytkownika i ciągnie dalejToken stop nie jest wychwytywanyRozwiązanie 4: sprawdź tokeny stop
Zapętla się w Q2 albo Q3, a w Q4_K_M nieNiska kwantyzacja pogorszyła modelRozwiązanie 5: użyj lepszego pliku

Kiedy się pojawia

Model odpowiada normalnie przez jakiś czas, po czym zaczyna powielać tę samą frazę, zdanie albo cały akapit — czasem wpadając w coraz krótszy cykl, aż w końcu wypluwa jedno słowo bez końca. Dzieje się to w trakcie generowania, bez żadnego komunikatu o błędzie, na dowolnym sprzęcie. Dotyczy Ollamy, LM Studio i llama.cpp, bo przyczyna siedzi w ustawieniach generowania, a nie w środowisku uruchomieniowym.

  • Długa rozmowa w małym oknie kontekstu, daleko poza punktem, w którym odrzucane są najstarsze wiadomości.
  • Surowe polecenie llama.cpp albo preset LM Studio z karą za powtórzenia ustawioną na 1,0.
  • Temperatura ustawiona na 0 w zadaniu konwersacyjnym, żeby odpowiedzi były bardziej rzeczowe.
  • Mały model w Q2 albo Q3 albo nieoficjalna kwantyzacja nieznanego pochodzenia.
  • Aplikacja na telefon z krótkim kontekstem, w której rozmowy szybciej niż na komputerze dochodzą do limitu.

Co się właściwie dzieje

LLM-y wybierają każdy token z rozkładu prawdopodobieństwa, a powtórzenia same się napędzają: gdy fraza pojawi się dwa razy, jej tokeny wydają się jeszcze bardziej prawdopodobne za trzecim. W normalnie skonfigurowanym zestawie cykl przerywają trzy rzeczy — kara za powtórzenia, zdrowa doza losowości w samplingu i poprawnie ustawione tokeny zatrzymania. Kiedy widzisz pętlę, jedna z nich zawodzi: repeat_penalty jest wyłączona albo za słaba, temperature i top_p zjechały tak nisko, że model stał się deterministyczny, rozmowa po cichu przelała okno kontekstu (model dosłownie zgubił wątek) albo zepsuta kwantyzacja czy szablon sprawiają, że model nigdy nie wysyła swojego tokenu zatrzymania. Prawie nigdy nie chodzi o VRAM ani o GPU.

Jak to naprawić

  1. 1

    Najpierw wyklucz przepełnienie kontekstu — cichą przyczynę w długich rozmowachNajczęstsze rozwiązanie

    Jeśli pętla zaczyna się dopiero po dłuższej rozmowie, najpewniej przepełniłeś okno kontekstu: najstarsze wiadomości zostają obcięte, a model — zgubiwszy wątek — wraca do powielania świeżych tokenów. Domyślny kontekst Ollamy zależy od wersji: starsze wydania używały 2048 albo 4096 tokenów, a obecne wybierają 4K, 32K albo 256K na podstawie twojego VRAM-u — więc na mniejszej karcie długa rozmowa wciąż przekracza go błyskawicznie. Podnieś tę wartość (kosztem VRAM-u), a objaw „model zgłupiał i zaczął się powtarzać po dwudziestu minutach” znika. Zanim ustawisz ją bardzo wysoko, sprawdź, na ile kontekstu naprawdę stać twój VRAM.

    bash
    # Ollama: raise the context window for the session
    ollama run llama3.1
    >>> /set parameter num_ctx 8192
    
    # or permanently in a Modelfile
    PARAMETER num_ctx 8192
    Czy zadziałało?Kolumna CONTEXT w ollama ps pokazuje większą wartość, a rozmowa tej samej długości już się nie degraduje.
    Sprawdź, co pasuje do Twojego sprzętusprawdź, na ile kontekstu pozwala twój VRAM przy tym modeluOtwórz kalkulator VRAM →
  2. 2

    Ustaw repeat_penalty na 1.1–1.2 (a repeat_last_n na 256)

    Kara za powtórzenia obniża prawdopodobieństwo tokenów, które już wystąpiły. Wartość 1.0 oznacza wyłączenie — jeśli twój zestaw startuje z 1.0 (tak bywa w części presetów LM Studio i w surowych domyślnych ustawieniach llama.cpp), zapętlą się nawet dobre modele. 1.1 to rozsądny domyślny wybór, 1.15–1.2 dla małych modeli skłonnych do pętli. Powyżej mniej więcej 1.3 dostajesz nową chorobę: model zaczyna omijać zwykłe słowa, których już użył, i pisze jak ze słownika synonimów. repeat_last_n decyduje, jak daleko wstecz sięga kara — 64 (częsta wartość domyślna) obejmuje jakieś 50 słów, a 256 wyłapuje cykle na poziomie akapitu.

    bash
    # Ollama (REPL or Modelfile)
    >>> /set parameter repeat_penalty 1.15
    >>> /set parameter repeat_last_n 256
    
    # llama.cpp
    ./llama-cli -m model.gguf --repeat-penalty 1.15 --repeat-last-n 256
    Czy zadziałało?Wygeneruj ten sam prompt kilka razy: pętla na poziomie fraz nie powinna wrócić. Jeśli ustawiłeś wartości w Modelfile, ollama show <model> --parameters je wypisze.
  3. 3

    Podnieś temperature i top_p ponad strefę determinizmu

    Temperatura bliska zeru w parze z ciasnym top_p sprawia, że model na każdym kroku wybiera jeden najbardziej prawdopodobny token — a „najbardziej prawdopodobnym kolejnym tokenem” po powtórzonej frazie jest dalszy ciąg tej samej frazy. Jeśli obniżyłeś temperaturę, żeby odpowiedzi były rzeczowe, przy swobodnej rozmowie nie schodź poniżej mniej więcej 0.5 — temperatura 0 nadaje się do jednorazowej ekstrakcji czy klasyfikacji, nie do konwersacji. Rozsądny punkt wyjścia dla czatu: temperature 0.7–0.8, top_p 0.9.

    bash
    >>> /set parameter temperature 0.7
    >>> /set parameter top_p 0.9
    Czy zadziałało?Ponowne generowanie tego samego promptu daje teraz za każdym razem inne sformułowania, nie odbiegając od tematu.
  4. 4

    Sprawdź tokeny zatrzymania, jeśli model gada dalej po skończonej odpowiedzi

    Model, który kończy odpowiedź i mimo to brnie dalej — dopisuje zmyślone tury użytkownika, odpowiada po raz drugi, osuwa się w pętle — nie tyle się powtarza, ile nie potrafi przestać. To znaczy, że środowisko uruchomieniowe nie wyłapuje tokenu końca tury: klasyka przy ręcznie pisanych plikach Modelfile, społecznościowych GGUF-ach z nietypowymi szablonami i przy fine-tunach. Upewnij się, że szablon i parametr stop pasują do rodziny modelu; przy fine-tunie, który sam konwertowałeś, zajrzyj do sekcji o pliku Modelfile w poradniku o konwersji do GGUF.

    bash
    # See what a correctly configured model uses:
    ollama show llama3.1 --template
    ollama show llama3.1 --parameters
    
    # Modelfile for Llama-3-family models needs:
    PARAMETER stop <|eot_id|>
    Czy zadziałało?Odpowiedzi kończą się wraz z końcem tury asystenta, bez wymyślonych wiadomości użytkownika po nich.
  5. 5

    Podejrzewaj sam plik: bardzo niskie kwantyzacje i wadliwe GGUF-y zapętlają się częściej

    Q2_K i nieoficjalne „frankenkwanty” małych modeli wpadają w pętle mierzalnie częściej — zdegradowane wagi spłaszczają rozkład, na którym pracuje sampler. Jeśli ten sam prompt zapętla się przy Q2 czy Q3, a przy Q4_K_M z oficjalnego źródła już nie, winna jest kwantyzacja. Pobierz plik ponownie z oficjalnej biblioteki Ollamy albo z porządnego repozytorium na Hugging Face, a kwantyzacje poniżej Q4 dla modeli mniejszych niż 7B traktuj jako eksperymentalne.

Jeśli nic z tego nie pomogło

Jeśli żadne ustawienie nie pomaga, a w wynikach pojawiają się znaczniki szablonu, problemem jest szablon czatu, a nie próbkowanie. Jeśli zapętlanie pojawiło się razem z crashami albo błędami braku pamięci, potraktuj je najpierw jako problem z pamięcią.

Dołącz to, zgłaszając problem
  • Wynik ollama show <model> --parameters albo wartości z presetu LM Studio
  • Tag modelu albo nazwa pliku razem z kwantyzacją
  • Długość kontekstu i mniej więcej długość rozmowy w chwili, gdy zaczęła się pętla
  • Krótki fragment pokazujący, gdzie zaczyna się powtarzanie
Dotyczy także: Linux · Apple

Powiązane

Najczęściej zadawane pytania

Dlaczego mój lokalny LLM powtarza to samo zdanie w kółko?

Prawdopodobieństwa tokenów napędzają się nawzajem, a nic tego cyklu nie przerywa: repeat_penalty wyłączona albo ustawiona na 1.0, za niska temperatura, przepełnione okno kontekstu albo niedopasowany szablon i token zatrzymania. Ustaw repeat_penalty na 1.1–1.15, temperaturę około 0.7 i num_ctx na tyle duże, by pomieściło rozmowę, a pętle znikają w niemal każdym przypadku.

Czy powtarzanie oznacza, że moje GPU albo VRAM się psuje?

Nie — zapętlanie to problem ustawień generowania, nie sprzętu. Wyjątek potwierdzający regułę: naprawdę uszkodzony VRAM daje bełkot i awarie, a nie czyste powtórzenia. Jeśli widzisz spójny tekst, który się powiela, ze sprzętem wszystko jest w porządku.

Jaka wartość repeat_penalty jest najlepsza?

1.1 jako domyślna, 1.15–1.2 dla modeli małych (poniżej 7B) albo mocno skwantyzowanych, które łatwiej wpadają w pętlę. Unikaj 1.3 i wyżej: model zaczyna omijać uzasadnione powtórzenia — nazwy własne, terminy techniczne — i jakość spada w inny sposób.

Dlaczego model zapętla się dopiero późno, w długich rozmowach?

Bo przepełnia się okno kontekstu. Gdy rozmowa przekroczy num_ctx, środowisko uruchomieniowe po cichu odrzuca najstarsze wiadomości; model traci spójność i podpiera się powtarzaniem świeżego tekstu. Zwiększ num_ctx (kosztem VRAM-u) albo częściej zaczynaj nowe rozmowy.

Czy te ustawienia działają tak samo w LM Studio?

Tak — LM Studio udostępnia dokładnie te same pokrętła (Repeat Penalty, Temperature, Top P, Context Length) w panelu ustawień czatu, bo oba narzędzia mają pod spodem llama.cpp. Sprawdź presety: część z nich startuje z karą za powtórzenia równą 1.0, czyli „wyłączone”.