Toolformer (CS)
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]:
- 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.
- 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í.
- 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.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]
- ↑ Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». OpenReview. [2]
- ↑ 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.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]
- ↑ «Toolformer: Language Models Can Teach Themselves to Use Tools». Papers With Code. [5]
- ↑ Brown, Tom B. et al. «Language Models are Few-Shot Learners». arXiv. [6]
- ↑ Zhang, Tingkai et al. «Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT». arXiv. [7]
- ↑ 8.0 8.1 8.2 Patil, Shishir G. et al. «Gorilla: Large Language Model Connected with Massive APIs». arXiv. [8]
- ↑ 9.0 9.1 «ChatGPT plugins». OpenAI. [9]