Zalety i ograniczenia dużych modeli językowych

Data publikacji: 13 stycznia 2024 r.

To pierwszy z 3 artykułów z serii poświęconej LLM-om i czatbotom. Część 2 dotycząca tworzenia chatbota za pomocą WebLLM oraz część 3 dotycząca korzystania z interfejsu Prompt API są już dostępne.

Duże modele językowe (LLM) stają się ważnym elementem w rozwoju oprogramowania: dobrze nadają się do generowania i przetwarzania tekstu w języku naturalnym, co umożliwia tworzenie takich aplikacji jak wyodrębnianie danych, streszczanie czy prowadzenie dialogów z danymi użytkowników.

W tej serii omawiam zalety i wady LLM na urządzeniu oraz pokazuję, jak dodać funkcje chatbota do istniejącej aplikacji za pomocą dwóch metod lokalnych i offline: opartego na przeglądarce środowiska uruchomieniowego LLM WebLLM oraz eksperymentalnego interfejsu Prompt API w Chrome.

Możliwe przypadki użycia

Aplikacja przed dodaniem chatbota
Nasza aplikacja do zarządzania listą zadań.

Utworzymy chatbota na podstawie klasycznej aplikacji do zarządzania listą zadań. Kod źródłowy każdego kroku jest dostępny na GitHub. Użytkownicy mogą dodawać nowe zadania, oznaczać je jako wykonane i usuwać.

Możesz dodać funkcję, która pozwoli użytkownikom dowiedzieć się więcej o danych z listy zadań lub wykonać dodatkowe funkcje. Dzięki funkcji chatbota użytkownicy mogą:

  • Zapytaj o liczbę otwartych zadań.
  • wykrywać duplikaty lub bardzo podobne zadania,
  • Pogrupuj zadania.
  • otrzymywać rekomendacje dotyczące nowych zadań na podstawie ukończonych;
  • Tłumaczenie zadań na różne języki.
  • Wyeksportuj listę zadań w formacie XML.

To tylko kilka przykładów zadań, które mogą wykonywać LLM.

Czym są duże modele językowe?

LLM to sztuczne sieci neuronowe, które przetwarzają i generują tekst w języku naturalnym. Większość obecnych modeli LLM opiera się na architekturze opartej na Transformerach, opracowanej przez Google. Przykłady to modele Gemini i Gemma od Google, seria modeli GPT od OpenAI oraz modele open source, takie jak LLaMa od Meta AI i Mistral od Mistral AI.

Dzięki trenowaniu na ogromnych ilościach danych modele LLM mają imponujący zakres możliwości. Rozumie wiele języków, zna ciekawostki, potrafi tłumaczyć między językami lub generować kod programowania. Zakres tych możliwości może się znacznie różnić w zależności od rozmiaru modelu, jak opisano w artykule Rozmiar modelu LLM.

Duże modele językowe prowadzą do zmiany paradygmatu w architekturze oprogramowania, ponieważ język naturalny staje się teraz podstawową funkcją w inżynierii oprogramowania. Zamiast wywoływać interfejsy API za pomocą dobrze zdefiniowanych interfejsów, wystarczy wyrazić intencję w języku naturalnym w tzw. promptach.

Ograniczenia dotyczące LLM

LLM mają też pewne ograniczenia:

  • Zachowanie niedeterministyczne: duże modele językowe mogą generować różne, a czasem nawet sprzeczne odpowiedzi na to samo promptowanie, ponieważ ich wyniki zależą od modeli probabilistycznych, a nie od stałych reguł.
  • Halucynacje: te modele mogą czasami generować nieprawidłowe lub bezsensowne informacje, ponieważ polegają na wyuczonych wzorach, a nie na dokładności faktów.
  • Wstrzyknięcie promptów: modele LLM mogą być podatne na ataki polegające na wstrzykiwaniu promptów, w których użytkownicy tworzą prompty wejściowe, które manipulują modelem, powodując odchylanie się od jego zamierzonego działania lub generowanie niepożądanych wyników.

Dlatego przed podjęciem jakichkolwiek działań użytkownicy muszą zweryfikować wyniki wygenerowane przez LLM.

W przypadku LLM na urządzeniu należy wziąć pod uwagę ich rozmiar. Ich rozmiary sięgają kilku gigabajtów i muszą zostać pobrane na urządzenie użytkownika przed pierwszym użyciem. Mniejsze modele zwykle zapewniają odpowiedzi o gorszej jakości, zwłaszcza w porównaniu z modelami opartymi na chmurze.

Wybieranie lokalnych rozwiązań

Aby zintegrować LLM z aplikacją internetową, możesz użyć usług dostawcy usług w chmurze. Wielu dostawców oferuje wysokiej jakości modele LLM, z których niektóre są dostępne tylko u określonych dostawców. LLM w chmurze zapewniają szybkie wnioskowanie przy rozsądnym koszcie, który jest zwykle obliczany na podstawie przetworzonego tokena.

Z kolei rozwiązania lokalne mają wiele zalet. Lokalne modele językowe działają bezpośrednio na urządzeniu użytkownika, dzięki czemu zapewniają większą niezawodność czasów odpowiedzi, są dostępne nawet wtedy, gdy użytkownik jest offline, i nie wymagają od deweloperów uiszczania opłat abonamentowych ani innych bieżących kosztów. Mogą one znacznie zwiększyć bezpieczeństwo użytkowników. Zachowanie wszystkich działań na urządzeniu pozwala uniknąć przesyłania informacji umożliwiających identyfikację do zewnętrznych dostawców lub regionów.

Prezentacje

Zanim dowiesz się, jak stworzyć chatbota samodzielnie, możesz zapoznać się z gotowymi demonstracjami z wykorzystaniem tej funkcji.

Następnie użyjesz WebLLM, aby dodać chatbota do aplikacji do zarządzania zadaniami.