Witam 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 odnieśnieu do procesu co 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 werjś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).

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 100000 tokenów, co przekłada się na obsługę 75 000 słów w jednym prompcie
– Large Language Model Meta AI – LlaMAma okno kontekstowe na 100000 tokenów
– Nous-Capybara, który jest nowym modelem open source, jest ma okno wielkości 200 000 tokenów – https://huggingface.co/NousResearch/Nous-Capybara-34B

Gdy liczba generowanych tokenów przekracza wielkość okna kontekstu to model nie jest w stanie w 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 i model 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 wielu dużych danych można doprowadzić do przekroczenie 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 ChatGTP, 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:
– Tokenizer – https://platform.openai.com/tokenizer
https://tiktokenizer.vercel.app/