W dzisiejszym artykule postaram się przybliżyć temat pamięci i wielkości okna danych w dużych modelach językowych, czyli takich jak GPT-3 i GPT-4 od OpenAI, BERT od Google, Llama 3 od Mety.

Ach, przed chwilą zapomniałem, co chciałem powiedzieć, co doskonale wpisuje się w dzisiejszy temat.

Przypomnę, dlaczego modele czasami gubią kontekst i „zapominają” o tym, co było na początku konwersacji. Zaczynajmy.

Dlaczego modele zapominają informację?

Na początku warto zastanowić się, dlaczego modele „zapominają” informacje z początku konwersacji.

Dzieje się tak dlatego, że każdy model ma określone okno kontekstu, czyli ilość tokenów, które dany model jest w stanie przetworzyć. Można to porównać do czasu skupienia, jaki mamy, gdy słuchamy jakiegoś wykładu — jeżeli jest za długi, to zapominamy, co było na początku.

Oczywiście „zapominanie” jest tutaj użyte jako odniesienie do procesu, który zachodzi u ludzi. Nie jest to możliwe w procesie, który jest bezstanowy, ponieważ sam model LLM nie zapamiętuje informacji, a jedynie przetwarza to, co ma na wejściu sieci, generując rezultat. W tym procesie nie biorę pod uwagę pozostałych elementów systemu, a jedynie sam proces zachodzący w wielkim modelu językowym (Large Language Model).

Schemat działania modelu

W zależności od typu modelu mamy różnej wielkości okno kontekstu — niektóre modele LLM mogą obsłużyć kilka tysięcy tokenów, inne kilkaset tysięcy:

  • GPT-3 ma okno kontekstowe zawierające 2000 tokenów
  • GPT-3.5-Turbo ma okno kontekstowe zawierające 4000 tokenów
    • Wersja GPT-3.5-16k może obsłużyć do 16000 tokenów
  • GPT-4 ma do 8000 tokenów w rozmiarze okna kontekstowego
  • GPT-4-32k posiada jeszcze większe okno kontekstowe mieszczące aż 32 000 tokenów
  • Claude firmy Anthropic ma okno na 9000 tokenów
  • Claude 2 ma aż do 100 000 tokenów, co przekłada się na obsługę 75 000 słów w jednym prompcie
  • Large Language Model Meta AI – LLaMA ma okno kontekstowe na 100 000 tokenów
  • Nous-Capybara, który jest nowym modelem open source, ma okno wielkości 200 000 tokenów

Gdy liczba generowanych tokenów przekracza wielkość okna kontekstu, to model nie jest w stanie przetworzyć całego wprowadzonego tekstu. Na ogół, jeżeli tekst przekracza wielkość okna kontekstu, to najwcześniejsze tokeny są usuwane, i model LLM nie ma ich w danych wejściowych — więc nie może ich przetworzyć.

Ponieważ przy każdym wywołaniu modelu trzeba dostarczyć prompt systemowy, dane wejściowe, całą historię rozmowy użytkownika i agenta, to w przypadku bardzo dużej liczby danych można doprowadzić do przekroczenia wielkości kontekstu.

Dlatego w przypadku korzystania z API ważne jest zarządzanie wielkością wprowadzanych danych, aby wszystkie dane mieściły się w obrębie okna kontekstowego modelu.

Z tego powodu również podczas korzystania z aplikacji typu ChatGPT, jeżeli podamy za dużo danych wejściowych (np. książkę do analizy) albo prowadzimy długą konwersację, to model zapomni, co było na początku rozmowy.

Ilość tokenów zużytych przez dany tekst można sprawdzić np.: