Po tygodniach szukania rozwiązań i testów, praktykanci Fingoweb wdrożyli pierwszą wersję systemu opartego o model językowy. Wayfinder AI działa już w testowym środowisku i sprawdzany jest przez naszych pracowników. Co o praktykach mają do powiedzenia studenci?

W tym artykule:

  • Testy i wdrożenie modelu LLM.
  • Działanie modelu i ograniczenia.
  • Prompt engineering.
  • Co mówią praktykanci?

W pierwszej części publikacji na temat praktyk realizowanych w Fingoweb przybliżyliśmy założenia projektu AI, który od podstaw tworzą studenci z krakowskich uczelni. Na pierwszym etapie budowania modelu, którego zadaniem jest odpowiadanie na pytania klientów galerii handlowej, największe wyzwania pojawiły się z:

  1. dostarczeniem odpowiedniej ilości danych do trenowania modelu (stażyści skorzystali z syntetycznych danych generowanych przez GPT),
  2. ograniczeniami sprzętowymi, które zostały rozwiązane przez zastosowanie lekkiego modelu językowego opensource i dedykowanym komputerom z mocnymi GPU.

Testy i wdrożenie

Po skutecznym przygotowaniu danych i szkoleniu modelu, w końcu przyszedł czas, w którym nasi praktykanci mogli pochwalić się wynikami swojej pracy – na początek wewnętrznie, wśród pracowników Fingoweb. Celem było sprawdzenie, jak model poradzi sobie z nietypowymi, nieprzewidzianymi przez deweloperów pytaniami (dokładnie w taki sam sposób szkolone było popularne GPT).

Oczywiście, nawet niewielki rozmiarów model flan-t5 potrzebuje odpowiedniej infrastruktury. Zespół praktykantów, wsparty naszymi specjalistami postanowił postawić serwer i zbudować wygodne UI do przeprowadzenia testów. W taki sposób powstał Wayfinder AI:

Działanie modelu, ograniczenia

Pierwsza wersja rozwiązania jest w stanie odpowiedzieć na pytania, na przykład:

– Gdzie mogę kupić czapkę z daszkiem?
– [Adidas, Cropp, Reserved]

Where can I find shoes?
['House', ' New Yorker', ' Diverse', ' Bershka', ' Big Star', ' 4'] 
Where can I buy hat?
['Lee Wrangler', ' New Yorker', ' Diverse', ' Bershka', ' Big']
Hi, my name is Kuba. I am looking for something to eat
['KFC']

Dobrze radzi sobie z klasyfikowaniem produktów i przypisywaniem ich do danych sklepów, co było celem pierwszej iteracji Wayfinder AIa. Jest w stanie także odczytać informację na temat produktu z pytań sformułowanych w różny sposób. Obecnie system może pracować z trzema typami pytań, które sklasyfikowaliśmy jako:

  • zwykłe – pytanie zwracające listę sklepów,
  • IDK – pytanie niezwiązane z zadaniem modelu,
  • brak – brakujące przedmioty.

Największe ograniczenie i cel na przyszłość

Docelowo system ma za zadanie wyszukiwać także konkretne przedmioty, czego w obecnej wersji nie robi. Przykład:

– Gdzie kupię ostatnią część Harry Pottera?

Takie pytanie nie byłoby sklasyfikowane. Nie było to ważne na tym etapie projektu, ale praktykanci już testują rozwiązania, które pozwalałby klasyfikować specyficzne produkty oraz dawać wskazówki, jak dotrzeć do sklepu.

Prompt engineering

W ramach ciekawostki: budowa systemu to nie tylko wybór modelu, dostarczenie danych, tuning i infrastruktura. To także przygotowanie odpowiednich promptów. Przykład promptu wykorzystywanego w przygotowanym przez studentów systemie:

'<s>[INST] <<SYS>>\nYou will be asked questions about Galeria Krakowska. If you are asked where you can buy something. return a list of stores where you are sure the product can be purchased. If there are no shops selling given product, return "The shopping mall does not have shop with such products". If question is not related to Galeria Krakowska, return \'I do not know the answer to this question\'\nYou can return only shops from this list: Ania Kruk, Cropp. Medicine, Bershka, New Yorker, House, Pull&Bear, Stradivarius, Reserved, Marc O'Polo, Greenpoint, Tatuum, Taranko. SWISS. Empik, Rossmann, Douglas, HEBE, Hugo Boss. Apart. Big Star, C&A, SEPHORA, Bytom, Vistula, Lavard, Ochnik, TOUS\n<</SYS>>\n\nGive me the correct answer to the question about the shopping mall, Galeria Krakowska. Q: Where can I buy gimbal? If there are no shops with this products, say that there are no shops with this item. Return it as comma separated list. [/INST]"

Co mówią o praktykach studenci?

O przebieg prac zapytaliśmy Kubę Mieszczaka, jednego z praktykantów w zespole tworzącym Wayfinder AI.

Jakie są według Ciebie największe plusy i minusy obecnego rozwiązania?

Wayfinder AI to na pewno mocna alternatywa dla zwykłych wyszukiwarek. Taki asystent jest w stanie nie tylko wyszukać konkretne sklepy i docelowo produkty, ale także podpowie, jak je znaleźć. Mówimy oczywiście o docelowej funkcjonalności systemu.

Największe minusem jest fakt, że modele dają sporą swobodę użytkownikowi. Jeśli moglibyśmy zaufać, że klient będzie używał modelu tylko w taki sposób, w jaki możemy tego oczekiwać, praca byłaby o wiele prostsza. W praktyce wygląda to tak, że użytkownik zadaje jedno lub dwa pytania związane z zadaniem modelu, a następnie przechodzi do „testowania” jego limitów.

Przykładem testowania może być zadawanie skomplikowanych pytań lub zagadek logicznych, wpisywanie losowych słów, wpisywanie losowych znaków czy pytanie o drażliwe tematy. Model musi być gotowy na taką sytuację.

Mimo to bardzo nas cieszy, że miło małych rozmiarów modelu był on w stanie radzić sobie z pytaniami, pomimo sporej ilości produktów w datasecie. Kategorie pytań, na które model miał nie odpowiadać, też działały bardzo przyzwoicie.

Czy mieliście jeszcze inne, nietypowe problemy?

Ciężko to nazwać „nietypowym” problemem, ale w przypadku modeli LLM stosowanych w komercyjnych projektach tego typu, temat nadal jest dość świeży. Artykuły pojawiają się praktycznie z tygodnia na tydzień, a opisy technik jak przygotować własne rozwiązanie oparte o LLM wbrew pozorom nie rozwiązują wszystkich problemów. Czasami sprawdzenie, jak model zachowa się w daje sytuacji, wymaga zadania pytania i metody prób i błędów – więc spędzamy dużo czasu na finetuningu i testowaniu.

Z drugiej strony: dokładnie o to chodziło w praktykach. Dzięki temu bardzo dużo się uczymy, a rozwiązanie już na tym etapie daje pierwsze rezultaty.

OK, a samo wdrożenie – jak przebiegało i co było wyzwaniem podczas wdrożenia?

Model wymaga dość mocnego komputera, o czym mówiliśmy już wcześniej, więc jak długo pracowaliśmy na sprzęcie przygotowanym do testowania, nie mieliśmy problemów. Pojawił się jednak pomysł, żeby wystawić model na aplikacji i sprawdzić, jakie pytania będą zadawać osoby spoza naszego zespołu i jak model sobie z nimi poradzi. Na zwykłych komputerach w biurze modelu nie dało się załadować, więc postawiliśmy serwer z aplikacją Wayfinder AI.

Drugim problemem, na który natrafiliśmy, jest skuteczność systemu. Flan-5 świetnie radzi sobie jako klasyfikator, ale kiedy pytanie dotyczy elementów spoza datasetu, to skuteczność spada. Przykładowo, expensive shoes zostanie dobrze sklasyfikowane, nawet jeśli pojawi się w dłuższym zdaniu, ale może pojawić się problem z premium shoes.

Ryzyko jest takie, że jak bez problemu model informuje, że w galerii nie kupimy np. sportowego samochodu, to może mieć problem z synonimami i rzeczami o bliskim znaczeniu. Repair tools i tools for the garden model może uznać za przedmioty wystarczająco podobne żeby zwracać ten sam zestaw sklepów, nawet jeśli jeden z nich nie występuje w galerii. Ciężko się dziwić skoro modele szukają tego typu podobieństw.

Nie zmienia to faktu, że rozwiązanie nie można wprowadzać w ten sposób klienta w błąd i na kolejnym etapie będziemy rozwiązywać ten problem.

Jak jesteśmy przy temacie kolejnego etapu, to nad czym teraz pracujecie?

Kolejne etapy to szukanie nowych rozwiązań i ulepszanie aktualnych. Możliwe, że ogranicza nas sam model. Dlatego upewniamy się, że jest on w stanie wykonać podstawowe funkcje, a w tym samym czasie testujemy bardziej rozbudowane modele. Czyli teraz: testy, usprawnienia i rozbudowa funkcjonalności.

Czego się nauczyliście i co było najciekawsze?

Dla mnie, jako dla praktykanta, studenta i osoby, która przed rozpoczęciem projektu nie wiedziała za dużo o modelach LLM, praktyczna praca z modelem, na żywym organizmie, to bardzo dużo wiedzy. Pracowaliśmy z modelami typu text2text (flan-t5) oraz textgeneration (LLAMA 2) i myślę, że jako zespół już całkiem dobrze je rozumiemy. Do tego wykorzystywaliśmy modele do tłumaczenia i przetwarzania języka mówionego, pracowaliśmy z LangChain, tworzyliśmy syntetyczny dataset, łączne z zarządzaniem i przerabianiem za pomocą pythonowych bibliotek. Cały projekt daje nam praktyczną wiedzę i jest super ciekawy.

Fingoweb prowadzi praktyki dla studentów IT w Krakowie, podczas których realizujemy ciekawe projekty (zamiast robić kawę)! Jeśli nie chcesz przegapić przyszłorocznego naboru, to koniecznie śledź Fingoweb na LinkedIn lub FB.