Toolformer (CS)

From Systems analysis Wiki
Jump to navigation Jump to search

Toolformer — jde o přístup k vytváření velkých jazykových modelů (LLM), který jim umožňuje samostatně využívat externí nástroje prostřednictvím volání API[1]. Tato metoda byla navržena v roce 2023 skupinou výzkumníků z Meta AI Research ve spolupráci s Univerzitou Pompeu Fabra (Španělsko). Ve svém článku „Toolformer: Language Models Can Teach Themselves to Use Tools" (Timo Schick et al., 2023) autoři poukazují na paradox: moderní LLM vykazují působivé schopnosti řešit složité nové úlohy na základě textových příkladů, přesto jsou mnohdy neschopny spolehlivě provádět základní operace – například počítání nebo vyhledávání faktů[1]. Aby tato omezení překonali, vyvinul tým model Toolformer, který se sám učí vybírat a volat externí nástroje (jako jsou vyhledávače, kalkulačky nebo překladatelské služby) za účelem zvýšení kvality plnění různorodých úloh[1]. V únoru 2023 byl tento model představen jako preprint na arXiv a později byl přijat a uznán na konferenci NeurIPS 2023[2].

Základní myšlenka a schopnosti modelu

Toolformer je doladěný (fine-tuned) jazykový model schopný rozhodovat, který nástroj volat, kdy přesně jej volat, jaké předávat parametry a jak začlenit získaný výsledek do generovaného textu[3]. Trénink je organizován v samodohlížecím režimu (self-supervised) — model sám generuje a vyhodnocuje příklady použití API, přičemž vyžaduje pouze malou sadu ukázek (doslova několik příkladů) pro každý nástroj[3]. Na rozdíl od předchozích přístupů nejsou potřeba rozsáhlé anotace ani ručně navrhované šablony pro integraci nástrojů; model se sám učí, kdy a jak použít konkrétní API, přičemž si zachovává obecné jazykové schopnosti a není omezen na úzce vymezené úlohy[1].

Autoři do Toolformeru integrovali široké spektrum nástrojů dostupných prostřednictvím jednoduchých API volání. V experimentální verzi byly použity následující nástroje[3]:

  • Kalkulačka – pro provádění aritmetických výpočtů.
  • Systém „otázka-odpověď" (Q&A) – pro vyhledávání odpovědí na faktografické otázky v znalostní bázi.
  • Vyhledávače (2 různé) – pro vyhledávání aktuálních informací na internetu.
  • Systém strojového překladu – pro překlad textů mezi jazyky.
  • Kalendář – pro získávání informací o datech a čase.

Každý nástroj je reprezentován ve formátu textového fragmentu (speciálního textového označení), což umožňuje modelu vkládat volání API přímo do jím generovaného textu[4]. Model například může vložit konstrukci ve tvaru `[Calculator(...)]` nebo `[Search(\"dotaz\")]` do aktuálního kontextu, čímž signalizuje potřebu externího volání. Při generování odpovědi Toolformer vygeneruje speciální symbol (šipku →), na základě kterého systém pozastaví generování a provede příslušné API volání; získaný výsledek je vložen do textu, načež pokračuje generování dalšího fragmentu[4]. Tento mechanismus umožňuje modelu dynamicky využívat možnosti externích služeb, přičemž zůstává jedním jazykovým modulem bez změny architektury.

Trénink modelu (metodologie)

Vývojáři popsali proces tréninku Toolformeru v několika krocích[4] s využitím techniky učení v kontextu (in-context learning) pro generování syntetických dat[1]:

  1. Generování kandidátů volání API. Nejprve jsou vzaty texty z velkého korpusu (například články nebo webové stránky) a do nich jsou uměle vkládána volání nástrojů, která by potenciálně mohla pomoci text pokračovat nebo doplnit. Tato vložení model sám generuje pomocí N-výstřelového promptování (N-shot prompting), opírajíce se o několik ručně zadaných vzorů použití každého API[1]. Model může například obdržet fragment: „V roce 2024 mělo město [QA(\"Jaký je počet obyvatel tohoto města?\") → ...] obyvatel", kde QA( ) je volání systému otázek a odpovědí, které má vrátit chybějící údaj. Pro každý nástroj jsou vybírány vhodné kontexty; tak například pro kalkulačku model vybírá věty obsahující více čísel a slova jako „rovná se" nebo „celkem"[4] — tam, kde bude aritmetický výsledek skutečně potřeba.
  2. Provádění API volání a doplnění dat. Dále jsou všechna vygenerovaná volání modelem skutečně provedena — například jsou odesílány dotazy do vyhledávače nebo počítány výrazy na kalkulačce. Získané odpovědi jsou zpětně vloženy do textů, čímž vznikají dokončené varianty vět s vložením ve tvaru `{odpověď}`[4][4]. Současně jsou uchovávány i „prázdné" varianty (bez dosazení odpovědi) a také původní texty bez jakýchkoli volání – pro následné srovnání.
  3. Filtrování a samovyhodnocení užitečnosti. V tomto kroku Toolformer samostatně vyhodnocuje, která z vygenerovaných API vložení jsou skutečně užitečná pro predikci pokračování textu[4]. Provádí se porovnání pravděpodobnosti jazykového modelu pokračovat v textu ve třech scénářích: (a) bez jakéhokoli volání, (b) s voláním nástroje bez dosazeného výsledku, (c) s voláním a dosazeným výsledkem[4]. Pokud přidání konkrétní API odpovědi zvyšuje modelovou pravděpodobnost správného pokračování fráze (tedy skutečně pomáhá modelu predikovat následující slova), je takový příklad považován za užitečný. V souboru dat zůstávají pouze vložení, která přinášejí zisk v pravděpodobnosti. Tímto způsobem jsou odfiltrovány případy, kdy bylo volání nástroje nadbytečné nebo nepřineslo novou informaci. Nakonec je model doladěn (fine-tuning) na takto získaném filtrovaném datasetu, obsahujícím reálné příklady textu s optimálně vloženými voláními API[1]. Trénink probíhá podle standardního cíle jazykového modelování – predikovat následující token sekvence, včetně tokenů označujících výsledky volání nástrojů.

Je důležité zdůraznit, že pro zavedení každého nového nástroje bylo potřeba pouze několik ručních příkladů jeho použití — dále probíhala generace trénovacích dat automaticky[3]. Díky tomu přístup Toolformer prakticky nezávisí na existenci specializovaných anotovaných korpusů a minimalizuje pracovní náklady na anotaci dat. Model si sám osvojuje formát a vhodnost API volání a přitom si zachovává svou universálnost: nástroje využívá pouze tehdy, kdy je to skutečně potřebné pro splnění zadané úlohy[1].

Experimentální výsledky

Pro experimentální ověření metody výzkumníci vzali již existující jazykový model GPT-J (6,7 miliard parametrů) — otevřený LLM trénovaný na korpusu The Pile[4]. Tento model byl doladěn dle popsané procedury, čímž vznikl Toolformer na bázi GPT-J. Výkonnost nového přístupu byla hodnocena v režimu zero-shot (bez příkladů) na řadě standardních úloh, včetně matematického řešení textových úloh, vyhledávání faktů a odpovídání na znalostní otázky (QA), překladu a doplňování chybějících míst v textu. Jako testovací data byly použity například otevřené soubory otázek Natural Questions, TriviaQA (pro hodnocení faktografických znalostí) a soubory úloh ASDiv, MAWPS, SVAMP (matematické textové úlohy na aritmetiku), jakož i vícejazyčné QA benchmarky MLQA, LAMA[5].

Výsledky ukázaly, že Toolformer výrazně překonává výchozí model stejné velikosti v mnoha úlohách[1]. Díky připojení nástrojů navíc relativně malý model (6,7 miliard parametrů) dokázal v řadě ukazatelů předčit mnohem větší model GPT-3 (175 miliard parametrů)[1][6]. Například v matematických textových úlohách vyžadujících přesné výpočty Toolformer prokázal obzvláště výrazný pokrok oproti běžným LLM, řeše tyto úlohy přesně díky kalkulačce, zatímco i GPT-3 se dopouštěl chyb[1]. V testech faktografických otázek (QA) Toolformer na bázi GPT-J také vykazoval kvalitu odpovědí srovnatelnou nebo lepší než GPT-3, neboť mohl provést internetové vyhledávání pro aktuální informace[1]. Přitom je důležité, že nový přístup nezhoršil obecné schopnosti jazykového modelu, jako je plynulé pokračování textu na běžných datech: Toolformer si zachoval úroveň generování přirozeného jazyka bez nástrojů na úrovni původního GPT-J[3]. Jinými slovy, přidání funkcionality volání API modelu jeho základní dovednosti „neodebralo", nýbrž je rozšířilo o další možnosti.

Význam práce a další výzkum

Vývoj Toolformeru demonstroval zásadní možnost naučit model používat externí nástroje prakticky bez ručního anotování, a to prostřednictvím generování syntetických dat a samovyhodnocení užitečnosti. Tento úspěch otevírá cestu k efektivnějším a spolehlivějším velkým jazykovým modelům: místo navyšování miliard parametrů pro zapamatování faktů nebo matematických pravidel může relativně kompaktní model dynamicky využívat externí zdroje (znalostní databáze, kalkulačky, služby) k doplnění vlastních mezer[1]. Tento přístup umožňuje snížit počet „halucinací" (kdy model vymýšlí neexistující informace), zvýšit přesnost odpovědí a aktuálnost znalostí bez celkového přepracování modelu. Toolformer v podstatě dosahuje „to nejlepší z obou světů" — kombinuje jazykové schopnosti velkého modelu s přesností specializovaných nástrojů[3].

Práce Schicka a kolegů byla jednou z prvních, která demonstrovala samostatné osvojení externích API ze strany LLM, a vzbudila velký zájem komunity. Vznikly další výzkumy rozvíjející tuto myšlenku. Například v roce 2023 byl navržen model Graph-ToolFormer, přizpůsobující principy Toolformeru pro práci s grafovými daty. S oporou o podněty vygenerované ChatGPT učí Graph-ToolFormer jazykový model volat externí nástroje pro řešení úloh grafové analýzy (například získávání vlastností grafu, práci se znalostními sítěmi apod.)[7]. Dalším pozoruhodným vývojem je model Gorilla (Univ. of California, Berkeley, 2023), který se zaměřuje na přesné využívání množství externích programových API[8]. Gorilla je LLaMA model doladěný na rozsáhlém souboru dokumentovaných funkcí; je schopen generovat správná volání API na základě popisu úlohy, přičemž v experimentech překonal dokonce i GPT-4 v přesnosti formování volání knihoven a služeb[8]. V Gorille je implementována integrace s mechanismem vyhledávání v dokumentaci, což umožňuje aktualizovat informace o změnách API a výrazně snižuje chyby a halucinace při používání nástrojů[8]. Tyto práce potvrzují význam směru, který otevřel Toolformer: kombinace LLM s externími nástroji je považována za perspektivní cestu k vytváření výkonnějších a spolehlivějších AI systémů.

Je třeba poznamenat, že myšlenka integrace nástrojů do jazykových modelů se rozvíjí nejen ve výzkumu, ale i v průmyslu. Tak například v březnu 2023 společnost OpenAI představila systém pluginů pro ChatGPT – speciální rozhraní umožňující připojit model k externím službám (webový prohlížeč, znalostní báze, výpočetní enginy apod.) pro získávání aktuálních informací a provádění výpočtů[9]. Uživatelé podobnou funkcionalitu již dlouho požadovali a zavedení pluginů fakticky realizuje v praxi koncept podobný Toolformeru: model je doplněn „nástroji" pro rozšíření svých možností při zpracování různorodých uživatelských požadavků[9]. Toolformer tak zapadá do obecného trendu vývoje AI, kde se velké jazykové modely stávají platformou schopnou na vyžádání využívat externí znalosti a výpočty. Výzkum provedený týmem Meta AI a UPF položil důležitý základ tohoto směru, ukázav, jak se LLM mohou naučit pracovat s nástroji prakticky bez ručního vedení, a tím se přibližovat k univerzálnějšímu a bezpečnějšímu inteligentnímu asistentovi[1][3].

Odkazy

  • Původní článek „Toolformer: Language Models Can Teach Themselves to Use Tools" na arXiv
  • Přehled Toolformeru na Synced Review
  • Stránka Toolformeru na OpenReview
  • Přehled Toolformeru na Medium
  • Článek o modelu Gorilla na arXiv
  • Stránka pluginů ChatGPT na webu 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.

Poznámky

  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]