Toolformer (BG)
Toolformer — това е подход за създаване на големи езикови модели (LLM), позволяващ им самостоятелно да използват външни инструменти чрез извиквания на API[1]. Методът е предложен през 2023 година от група изследователи от Meta AI Research съвместно с Университета Помпеу Фабра (Испания). В своята работа „Toolformer: Language Models Can Teach Themselves to Use Tools" (Timo Schick et al., 2023) авторите отбелязват един парадокс: съвременните LLM демонстрират впечатляващи способности за решаване на сложни нови задачи по текстови примери, но същевременно често са неспособни надеждно да изпълняват базови операции — например смятане или търсене на факти[1]. За да преодолеят тези ограничения, екипът разработи модела Toolformer, който самообучава се да избира и извиква външни инструменти (като търсачки, калкулатори или услуги за превод) с цел повишаване на качеството при изпълнение на разнообразни задачи[1]. През февруари 2023 година моделът е представен като препринт в arXiv, а по-късно е признат и приет на конференцията NeurIPS 2023[2].
Основна идея и възможности на модела
Toolformer представлява дообучен езиков модел, способен да решава кой инструмент да извика, кога точно да го извика, какви параметри да предаде и как да включи получения резултат в генерирания текст[3]. Обучението е организирано в самонаблюдаващ режим (self-supervised) — моделът сам генерира и оценява примери за използване на API, изисквайки само малък набор от демонстрации (буквално няколко примера) за всеки инструмент[3]. За разлика от предишните подходи, не се изискват обширни анотации или ориентирани към човека шаблони за интеграция на инструменти; моделът сам се учи кога и как да прилага съответния API, запазвайки общите езикови способности и без да се ограничава до тясно зададени задачи[1].
Авторите интегрираха в Toolformer широк спектър от инструменти, достъпни чрез прости API извиквания. В експерименталната версия бяха използвани следните помощни средства[3]:
- Калкулатор – за извършване на аритметични изчисления.
- Система „въпрос-отговор" (Q&A) – за търсене на отговори на фактологични въпроси в база от знания.
- Търсачки (2 различни) – за търсене на актуална информация в интернет.
- Система за машинен превод – за превод на текстове между езици.
- Календар – за получаване на данни за дати и часове.
Всеки инструмент е представен като текстов фрагмент (специален текстов маркер), което позволява на модела да вгражда извикването на API директно в генерирания от него текст[4]. Например моделът може да вмъкне конструкция от вида `[Calculator(...)]` или `[Search(\"заявка\")]` в текущия контекст, сигнализирайки за необходимостта от външно обръщение. По време на генерирането на отговора Toolformer генерира специален символ (стрелка →), по който системата спира генерирането и изпълнява съответното API извикване; полученият резултат се вмъква в текста, след което продължава генерирането на следващия фрагмент[4]. Такъв механизъм позволява на модела динамично да привлича възможностите на външни услуги, оставайки при това единен езиков модул без промяна на архитектурата.
Обучение на модела (методология)
Разработчиците описаха процеса на обучение на Toolformer в няколко етапа[4], използвайки техниката обучение в контекст (in-context learning) за генериране на синтетични данни[1]:
- Генериране на кандидати за API извиквания. Първо се вземат текстове от голям корпус (например статии или уеб страници) и в тях изкуствено се вмъкват извиквания на инструменти, които потенциално могат да помогнат за продължаване или допълване на текста. Тези вмъквания моделът генерира сам чрез N-примерен промптинг, опирайки се на няколко ръчно зададени образци за използване на всеки API[1]. Например моделът може да получи фрагмент: „През 2024 година населението на града беше [QA(\"Какво е числото на населението на този град?\") → ...] души", където QA( ) е извикване на системата за въпроси-отговори, което трябва да върне липсващите данни. За всеки инструмент се подбират подходящи контексти; така например за калкулатора моделът избира изречения, съдържащи няколко числа и думи като „равно" или „общо"[4] — там, където аритметичният резултат наистина ще бъде необходим.
- Изпълнение на API извикванията и допълване на данните. След това всички генерирани от модела извиквания реално се изпълняват — например изпращат се заявки до търсачка или се изчисляват изрази на калкулатор. Получените отговори се вмъкват обратно в текстовете, формирайки завършени варианти на изреченията с вмъквания от вида `{отговор}`[4][4]. Едновременно се запазват и „празните" варианти (без подстановка на отговора), а също и оригиналните текстове без никакви извиквания — за последващо сравнение.
- Филтриране и самооценка на полезността. На този етап Toolformer самостоятелно оценява кои от генерираните API вмъквания са наистина полезни за предсказване продължението на текста[4]. Извършва се сравнение на вероятността на езиковия модел да продължи текста в три сценария: (а) без никакво извикване, (б) с извикване на инструмент без подставен резултат, (в) с извикване и подставен резултат[4]. Ако добавянето на конкретен API отговор увеличава моделната вероятност за правилно продължение на фразата (тоест наистина помага на модела да предскаже следващите думи), то такъв пример се счита за полезен. Само вмъкванията, носещи печалба в вероятността, остават в извадката. По този начин се отсяват случаите, когато извикването на инструмента е било излишно или не е внесло нова информация. Накрая моделът се дообучава (fine-tuning) върху получения филтриран dataset, съдържащ реални примери на текст с оптимално вмъкнати API извиквания[1]. Обучението се извършва по стандартната цел на езиковото моделиране — предсказване на следващия token от последователността, включително токените, обозначаващи резултатите от извикванията на инструментите.
Важно е да се подчертае, че за въвеждането на всеки нов инструмент се изискваха само няколко ръчни примера за неговото използване — след това генерирането на обучаващи данни вървеше автоматично[3]. Благодарение на това подходът на Toolformer практически не зависи от наличието на специализирани анотирани корпуси и минимизира разходите на труд за анотиране на данни. Моделът сам усвоява формата и уместността на API извикванията, запазвайки при това своята универсалност: той задействва инструментите само когато това е наистина необходимо за решаване на поставената задача[1].
Експериментални резултати
За експериментална проверка на метода изследователите взеха вече съществуващия езиков модел GPT-J (6,7 милиарда параметъра) — отворен LLM, обучен върху корпуса The Pile[4]. Този модел беше дообучен по описаната процедура, получавайки Toolformer на базата на GPT-J. Производителността на новия подход беше оценена в режим zero-shot (без примери) върху редица стандартни задачи, включително математическо решаване на текстови задачи, търсене на факти и отговаряне на въпроси (QA), а също превод и запълване на пропуски в текст. Като тестови данни бяха използвани например откритите набори от въпроси Natural Questions, TriviaQA (за оценка на фактологични знания) и наборите от задачи ASDiv, MAWPS, SVAMP (математически текстови задачи по аритметика), а също мултиезикови QA benchmark-ове MLQA, LAMA[5].
Резултатите показаха, че Toolformer значително превъзхожда изходния модел от същия размер при много задачи[1]. Нещо повече, благодарение на свързването с инструменти, сравнително малкият модел (6,7 милиарда параметъра) успя по редица показатели да надмине значително по-големия модел GPT-3 (175 милиарда параметъра)[1][6]. Например при математически текстови задачи с изискване за точни изчисления Toolformer демонстрира особено забележим напредък в сравнение с обичайните LLM, решавайки такива задачи точно благодарение на калкулатора, докато дори GPT-3 допускаше грешки[1]. В тестовете по фактологични въпроси (QA) Toolformer на базата на GPT-J също показа качество на отговора сравнимо с или по-добро от GPT-3, тъй като можеше да извърши интернет търсене за актуални сведения[1]. При това е важно, че новият подход не влоши общите способности на езиковия модел, като свързано продължение на текст върху обичайни данни: Toolformer запази нивото на генериране на естествен език без инструменти на нивото на изходния GPT-J[3]. С други думи, добавянето на функционалността за извикване на API не „отне" на модела неговите базови умения, а ги разшири с допълнителни възможности.
Значение на работата и по-нататъшни изследвания
Разработката на Toolformer демонстрира принципната възможност да се обучи модел да използва външни инструменти практически без ръчна анотация, чрез генериране на синтетични данни и самооценка на полезността. Това постижение открива пътя към по-ефективни и надеждни големи езикови модели: вместо натрупване на милиарди параметри за запаметяване на факти или математически правила, сравнително компактен модел може динамично да привлича външни ресурси (бази от знания, калкулатори, услуги), за да запълни собствените си пропуски[1]. Такъв подход позволява да се намали броят на „халюцинациите" (когато моделът измисля несъществуваща информация), да се повиши точността на отговорите и актуалността на знанията без пълна преработка на целия модел. По същество Toolformer постига „най-доброто от двата свята" — комбинирайки езиковите умения на голям модел с точността на тесни инструменти[3].
Работата на Schick и колеги стана една от първите, демонстрирали самостоятелното овладяване от LLM на външни API, и породи голям интерес в общността. Появиха се по-нататъшни изследвания, развиващи тази идея. Например през 2023 година беше предложен моделът Graph-ToolFormer, адаптиращ принципите на Toolformer за работа с графови данни. Опирайки се на подсказки, генерирани от ChatGPT, Graph-ToolFormer учи езиковия модел да извиква външни инструменти за решаване на задачи по графов анализ (например получаване на свойства на граф, работа с мрежи от знания и т.н.)[7]. Друга забележителна разработка е моделът Gorilla (Univ. of California, Berkeley, 2023), който се фокусира върху точното използване на множество сторонни програмни API[8]. Gorilla представлява LLaMA модел, дообучен върху обширен набор от документирани функции; той е способен да генерира коректни API извиквания по описание на задача, и то толкова успешно, че в експерименти надмина дори GPT-4 по точност на формиране на извиквания на библиотеки и услуги[8]. В Gorilla е реализирана интеграция с механизъм за търсене в документацията, което позволява актуализиране на информацията за промените в API и съществено намалява грешките и халюцинациите при използване на инструменти[8]. Тези работи потвърждават значимостта на направлението, открито от Toolformer: съчетаването на LLM с външни инструменти се разглежда като перспективен път към създаването на по-мощни и надеждни AI системи.
Отбелязва се, че идеята за интеграция на инструменти в езиковите модели се развива не само в изследванията, но и в индустрията. Така например през март 2023 година компанията OpenAI представи система от плъгини за ChatGPT — специален интерфейс, позволяващ свързването на модела с външни услуги (уеб браузър, бази от знания, изчислителни машини и др.) за получаване на актуална информация и извършване на изчисления[9]. Потребителите отдавна искаха подобен функционал, и появата на плъгините на практика реализира концепция, сходна с Toolformer: моделът се допълва с „инструменти" за разширяване на своите възможности при решаване на разнообразни потребителски заявки[9]. По този начин Toolformer се вписва в общата тенденция на развитие на ИИ, при която големите езикови модели се превръщат в платформа, способна при поискване да задейства външни знания и изчисления. Изследването, извършено от екипа на Meta AI и UPF, постави важна основа за това направление, показвайки как LLM могат да се учат да работят с инструменти практически без ръчно наставление, и по този начин се доближавайки до по-универсален и безопасен интелектуален помощник[1][3].
Препратки
- Оригинална статия „Toolformer: Language Models Can Teach Themselves to Use Tools" в arXiv
- Преглед на Toolformer в Synced Review
- Страница на Toolformer в OpenReview
- Преглед на Toolformer в Medium
- Статия за модела Gorilla в arXiv
- Страница на плъгините за ChatGPT на сайта на OpenAI
Литература
- 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.
Бележки
- ↑ 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]