Toolformer (PL)

From Systems analysis Wiki
Jump to navigation Jump to search

Toolformer — to podejście do tworzenia dużych modeli językowych (LLM), umożliwiające im samodzielne korzystanie z zewnętrznych narzędzi poprzez wywołania API[1]. Metoda ta została zaproponowana w 2023 roku przez grupę badaczy z Meta AI Research we współpracy z Uniwersytetem Pompeu Fabra (Hiszpania). W swojej pracy „Toolformer: Language Models Can Teach Themselves to Use Tools" (Timo Schick et al., 2023) autorzy zwracają uwagę na pewien paradoks: współczesne LLM wykazują imponującą zdolność rozwiązywania złożonych nowych zadań na podstawie przykładów tekstowych, lecz jednocześnie często nie potrafią niezawodnie wykonywać podstawowych operacji – takich jak liczenie czy wyszukiwanie faktów[1]. Aby przezwyciężyć te ograniczenia, zespół opracował model Toolformer, który samodzielnie uczy się wybierać i wywoływać zewnętrzne narzędzia (takie jak wyszukiwarki, kalkulatory czy serwisy tłumaczeniowe) w celu poprawy jakości wykonywania różnorodnych zadań[1]. W lutym 2023 roku model ten został opublikowany w formie preprintu na arXiv, a następnie został przyjęty na konferencję NeurIPS 2023[2].

Główna idea i możliwości modelu

Toolformer to dostrojony model językowy zdolny do decydowania, które narzędzie wywołać, kiedy dokładnie je wywołać, jakie przekazać parametry i jak włączyć uzyskany wynik do generowanego tekstu[3]. Proces uczenia zorganizowany jest w trybie self-supervised — model sam generuje i ocenia przykłady użycia API, wymagając jedynie niewielkiego zestawu demonstracji (dosłownie kilku przykładów) dla każdego narzędzia[3]. W odróżnieniu od wcześniejszych podejść, nie są wymagane obszerne adnotacje ani szablony zorientowane na człowieka do integracji narzędzi; model sam uczy się kiedy i jak stosować dane API, zachowując ogólne zdolności językowe i nie ograniczając się do wąsko zdefiniowanych zadań[1].

Autorzy zintegrowali w Toolformerze szeroki wachlarz narzędzi dostępnych poprzez proste wywołania API. W wersji eksperymentalnej wykorzystano następujące narzędzia[3]:

  • Kalkulator – do wykonywania obliczeń arytmetycznych.
  • System pytań i odpowiedzi (Q&A) – do wyszukiwania odpowiedzi na pytania faktograficzne z bazy wiedzy.
  • Wyszukiwarki internetowe (2 różne) – do wyszukiwania aktualnych informacji w internecie.
  • System tłumaczenia maszynowego – do tłumaczenia tekstów między językami.
  • Kalendarz – do uzyskiwania informacji o datach i czasie.

Każde narzędzie reprezentowane jest w formacie fragmentu tekstowego (specjalnego znacznika tekstowego), co pozwala modelowi osadzać wywołanie API bezpośrednio w generowanym przez niego tekście[4]. Na przykład model może wstawić konstrukcję w rodzaju `[Calculator(...)]` lub `[Search(\"zapytanie\")]` do bieżącego kontekstu, sygnalizując potrzebę odwołania do zasobu zewnętrznego. Podczas generowania odpowiedzi Toolformer wytwarza specjalny symbol (strzałka →), na podstawie którego system wstrzymuje generowanie i wykonuje odpowiednie wywołanie API; uzyskany wynik jest wstawiany do tekstu, po czym generowanie kolejnego fragmentu jest kontynuowane[4]. Taki mechanizm pozwala modelowi dynamicznie korzystać z możliwości zewnętrznych serwisów, pozostając przy tym jednolitym modułem językowym bez zmiany architektury.

Uczenie modelu (metodologia)

Twórcy opisali proces uczenia Toolformera w kilku etapach[4], stosując technikę uczenia w kontekście (in-context learning) do generowania danych syntetycznych[1]:

  1. Generowanie kandydatów wywołań API. Na początku pobierane są teksty z dużego korpusu (np. artykuły lub strony internetowe) i sztucznie wstawiane są do nich wywołania narzędzi, które potencjalnie mogą pomóc w kontynuowaniu lub uzupełnieniu tekstu. Te wstawki model generuje sam przy użyciu promptingu z N przykładami, opierając się na kilku ręcznie przygotowanych wzorcach użycia każdego API[1]. Na przykład model może otrzymać fragment: „W 2024 roku liczba mieszkańców miasta wynosiła [QA(\"Jaka jest liczba mieszkańców tego miasta?\") → ...] osób", gdzie QA( ) to wywołanie systemu pytań i odpowiedzi, które powinno zwrócić brakujące dane. Dla każdego narzędzia wybierane są odpowiednie konteksty; tak więc dla kalkulatora model wybiera zdania zawierające kilka liczb i słowa takie jak „równa się" lub „razem"[4] — tam, gdzie wynik arytmetyczny rzeczywiście będzie potrzebny.
  2. Wykonanie wywołań API i uzupełnienie danych. Następnie wszystkie wywołania wygenerowane przez model są rzeczywiście wykonywane — na przykład wysyłane są zapytania do wyszukiwarki lub obliczane są wyrażenia na kalkulatorze. Uzyskane odpowiedzi są podstawiane z powrotem do tekstów, tworząc kompletne warianty zdań z wstawkami w postaci `{odpowiedź}`[4][4]. Jednocześnie zachowywane są również warianty „puste" (bez podstawiania odpowiedzi), a także oryginalne teksty bez żadnych wywołań – do późniejszego porównania.
  3. Filtrowanie i samoocena użyteczności. Na tym etapie Toolformer samodzielnie ocenia, które z wygenerowanych wstawek API są rzeczywiście użyteczne do przewidywania kontynuacji tekstu[4]. Porównywane jest prawdopodobieństwo modelu językowego kontynuowania tekstu w trzech scenariuszach: (a) bez żadnego wywołania, (b) z wywołaniem narzędzia bez podstawionego wyniku, (c) z wywołaniem i podstawionym wynikiem[4]. Jeśli dodanie konkretnej odpowiedzi API zwiększa prawdopodobieństwo modelu co do właściwej kontynuacji frazy (tzn. rzeczywiście pomaga modelowi przewidzieć kolejne słowa), taki przykład uznawany jest za użyteczny. W próbce pozostają tylko wstawki przynoszące zysk w prawdopodobieństwie. W ten sposób odrzucane są przypadki, gdy wywołanie narzędzia było zbędne lub nie wniosło nowych informacji. Wreszcie model jest dostrajany (fine-tuning) na uzyskanym odfiltrowanym datasecie, zawierającym rzeczywiste przykłady tekstów z optymalnie wstawionymi wywołaniami API[1]. Uczenie odbywa się zgodnie ze standardowym celem modelowania językowego – przewidywania kolejnego tokenu w sekwencji, łącznie z tokenami oznaczającymi wyniki wywołań narzędzi.

Ważne jest podkreślenie, że do wprowadzenia każdego nowego narzędzia wymagane było jedynie kilka ręcznych przykładów jego użycia — dalej generowanie danych treningowych przebiegało automatycznie[3]. Dzięki temu podejście Toolformera praktycznie nie zależy od dostępności specjalistycznych anotowanych korpusów i minimalizuje nakład pracy związany z adnotowaniem danych. Model sam uczy się formatu i stosowności wywołań API, zachowując przy tym swoją uniwersalność: korzysta z narzędzi tylko wtedy, gdy jest to rzeczywiście potrzebne do rozwiązania postawionego zadania[1].

Wyniki eksperymentalne

Do eksperymentalnej weryfikacji metody badacze wzięli istniejący model językowy GPT-J (6,7 mld parametrów) — otwarty LLM wytrenowany na korpusie The Pile[4]. Model ten dostrojono zgodnie z opisaną procedurą, uzyskując Toolformer oparty na GPT-J. Wydajność nowego podejścia oceniana była w trybie zero-shot (bez przykładów) na szeregu standardowych zadań, obejmujących matematyczne rozwiązywanie zadań tekstowych, wyszukiwanie faktów i odpowiadanie na pytania z zakresu wiedzy (QA), a także tłumaczenie i uzupełnianie luk w tekście. Jako dane testowe wykorzystano m.in. otwarte zestawy pytań Natural Questions, TriviaQA (do oceny wiedzy faktograficznej) oraz zestawy zadań ASDiv, MAWPS, SVAMP (matematyczne zadania tekstowe dotyczące arytmetyki), a także wielojęzyczne benchmarki QA: MLQA, LAMA[5].

Wyniki pokazały, że Toolformer znacząco przewyższa bazowy model tego samego rozmiaru w wielu zadaniach[1]. Co więcej, dzięki podłączeniu narzędzi stosunkowo mały model (6,7 mld parametrów) był w stanie pod względem niektórych wskaźników prześcignąć znacznie większy model GPT-3 (175 mld parametrów)[1][6]. Na przykład w matematycznych zadaniach tekstowych wymagających precyzyjnych obliczeń Toolformer wykazał szczególnie wyraźny postęp w porównaniu ze zwykłymi LLM, rozwiązując takie zadania dokładnie dzięki kalkulatorowi, podczas gdy nawet GPT-3 popełniał błędy[1]. W testach z pytaniami faktograficznymi (QA) Toolformer oparty na GPT-J również osiągnął jakość odpowiedzi porównywalną lub lepszą niż GPT-3, ponieważ mógł wykonać wyszukiwanie internetowe w celu uzyskania aktualnych informacji[1]. Co istotne, nowe podejście nie pogorszyło ogólnych zdolności modelu językowego, takich jak spójne kontynuowanie tekstu na zwykłych danych: Toolformer zachował poziom generowania języka naturalnego bez narzędzi na poziomie wyjściowego GPT-J[3]. Innymi słowy, dodanie funkcjonalności wywołań API nie „odebrało" modelowi jego podstawowych umiejętności, lecz wzbogaciło je o dodatkowe możliwości.

Znaczenie pracy i dalsze badania

Opracowanie Toolformera wykazało zasadniczą możliwość nauczenia modelu korzystania z zewnętrznych narzędzi praktycznie bez ręcznego adnotowania, dzięki generowaniu danych syntetycznych i samoocenie użyteczności. Osiągnięcie to otwiera drogę do bardziej efektywnych i niezawodnych dużych modeli językowych: zamiast rozbudowywać miliardy parametrów w celu zapamiętywania faktów czy reguł matematycznych, stosunkowo kompaktowy model może dynamicznie korzystać z zewnętrznych zasobów (baz wiedzy, kalkulatorów, serwisów), aby uzupełniać własne braki[1]. Takie podejście pozwala zmniejszyć liczbę „halucynacji" (gdy model wymyśla nieistniejące informacje), zwiększyć dokładność odpowiedzi i aktualność wiedzy bez całkowitego przebudowywania modelu. Zasadniczo Toolformer osiąga „to, co najlepsze z obu światów" — łącząc umiejętności językowe dużego modelu z precyzją wąskich narzędzi[3].

Praca Schicka i współpracowników była jedną z pierwszych, które wykazały samodzielne opanowanie przez LLM zewnętrznych API, i wzbudziła duże zainteresowanie w środowisku badaczy. Pojawiły się dalsze badania rozwijające tę ideę. Na przykład w 2023 roku zaproponowano model Graph-ToolFormer, adaptujący zasady Toolformera do pracy z danymi grafowymi. Opierając się na podpowiedziach wygenerowanych przez ChatGPT, Graph-ToolFormer uczy model językowy wywoływać zewnętrzne narzędzia do rozwiązywania zadań analizy grafów (np. uzyskiwania właściwości grafu, pracy z sieciami wiedzy itp.)[7]. Innym godnym uwagi osiągnięciem jest model Gorilla (Univ. of California, Berkeley, 2023), który skupia się na precyzyjnym korzystaniu z wielu zewnętrznych API programistycznych[8]. Gorilla to model oparty na LLaMA, dostrojony na obszernym zestawie udokumentowanych funkcji; jest zdolny do generowania poprawnych wywołań API na podstawie opisu zadania, a w eksperymentach okazał się tak skuteczny, że przewyższył nawet GPT-4 pod względem dokładności formowania wywołań bibliotek i serwisów[8]. W Gorilla zaimplementowana jest integracja z mechanizmem wyszukiwania w dokumentacji, co pozwala aktualizować informacje o zmianach API i istotnie redukuje błędy oraz halucynacje przy korzystaniu z narzędzi[8]. Prace te potwierdzają znaczenie kierunku zapoczątkowanego przez Toolformer: łączenie LLM z zewnętrznymi narzędziami postrzegane jest jako obiecująca droga do tworzenia potężniejszych i bardziej niezawodnych systemów AI.

Należy zauważyć, że idea integracji narzędzi z modelami językowymi rozwija się nie tylko w badaniach, ale i w przemyśle. W marcu 2023 roku firma OpenAI przedstawiła system wtyczek dla ChatGPT – specjalny interfejs umożliwiający podłączenie modelu do zewnętrznych serwisów (przeglądarka internetowa, bazy wiedzy, silniki obliczeniowe itp.) w celu uzyskiwania aktualnych informacji i wykonywania obliczeń[9]. Użytkownicy od dawna oczekiwali podobnej funkcjonalności, a pojawienie się wtyczek w praktyce realizuje koncepcję zbliżoną do Toolformera: model zostaje uzupełniony o „narzędzia" rozszerzające jego możliwości przy realizacji różnorodnych zapytań użytkowników[9]. W ten sposób Toolformer wpisuje się w ogólny trend rozwoju AI, w którym duże modele językowe stają się platformą zdolną do korzystania na żądanie z zewnętrznej wiedzy i obliczeń. Badanie przeprowadzone przez zespół Meta AI i UPF położyło ważny fundament pod ten kierunek, pokazując, jak LLM mogą uczyć się pracy z narzędziami praktycznie bez ręcznego nadzoru, zbliżając się tym samym do bardziej uniwersalnego i bezpiecznego asystenta intelektualnego[1][3].

Odnośniki

  • Oryginalna praca „Toolformer: Language Models Can Teach Themselves to Use Tools" na arXiv
  • Przegląd Toolformera na Synced Review
  • Strona Toolformera na OpenReview
  • Przegląd Toolformera na Medium
  • Artykuł o modelu Gorilla na arXiv
  • Strona wtyczek ChatGPT na stronie OpenAI

Literatura

  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. NeurIPS 2023. OpenReview.
  • Li, M. et al. (2023). API-Bank: A Comprehensive Benchmark for Tool-Augmented LLMs. arXiv:2304.08244.
  • Zhang, T. et al. (2023). Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT. arXiv:2304.11116.
  • Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
  • Qin, Y. et al. (2023). ToolLLM: Facilitating Large Language Models to Master 16 000+ Real-World APIs. arXiv:2307.16789.
  • Li, Y. et al. (2024). Tool Learning with Large Language Models: A Survey. arXiv:2405.17935.
  • OpenAI (2023). ChatGPT Plugins. OpenAI Blog.
  • Brown, T. B. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
  • Schick, T. et al. (2023). Meta AI & UPF's Toolformer: Enabling Language Models to Teach Themselves to Use External Tools. Synced Review.

Przypisy

  1. 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 Schick, T. et al. «Meta AI & UPF's Toolformer: Enabling Language Models to Teach Themselves to Use External Tools». Synced. [1]
  2. Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». OpenReview. [2]
  3. 3.0 3.1 3.2 3.3 3.4 3.5 3.6 Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv. [3]
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 OXEN AI. «Arxiv Dives Toolformer: Language models can teach themselves to use tools». Medium. [4]
  5. «Toolformer: Language Models Can Teach Themselves to Use Tools». Papers With Code. [5]
  6. Brown, Tom B. et al. «Language Models are Few-Shot Learners». arXiv. [6]
  7. Zhang, Tingkai et al. «Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT». arXiv. [7]
  8. 8.0 8.1 8.2 Patil, Shishir G. et al. «Gorilla: Large Language Model Connected with Massive APIs». arXiv. [8]
  9. 9.0 9.1 «ChatGPT plugins». OpenAI. [9]