Notice: file_put_contents(): Write of 9979 bytes failed with errno=28 No space left on device in /var/www/tgoop/post.php on line 50

Warning: file_put_contents(): Only 12288 of 22267 bytes written, possibly out of free disk space in /var/www/tgoop/post.php on line 50
gonzo-обзоры ML статей@gonzo_ML P.1305
GONZO_ML Telegram 1305
[Meta AI] Toolformer: Language Models Can Teach Themselves to Use Tools
Timo Schick, Jane Dwivedi-Yu, Roberto Dessì, Roberta Raileanu, Maria Lomeli, Luke Zettlemoyer, Nicola Cancedda, Thomas Scialom
Статья: https://arxiv.org/abs/2302.04761

Интересная свежая работа про аугментацию моделей тулами. По мне так очень хорошее направление, ибо очевидно, что некоторые вещи гораздо более успешно можно делать специализированными тулами, нежели ждать пока модель сама их выучит.

Как например с вычислениями. Языковые модели демонстрируют такие возможности, но не очень стабильно, и если можно в нужные моменты подключить гарантированно работающий тул, то грех, конечно, так не сделать.

Или со свежими и точными фактами. Можно долго учить модель в надежде, что не будет врать и фантазировать, но всё равно гарантий нет, да и всегда есть отсечка по дате, новые факты, появившиеся после обучения модели, добавить в неё сложно. Поэтому хождение в поиск или во внешнюю knowledge base любого вида потенциально очень полезно.

Короче, берём лучшее из двух миров. Плохо формализуемые вещи обучаем, простые алгоритмические даём в виде готовых средств. Тема уже не новая, та же LaMDA (https://www.tgoop.com/gonzo_ML/1229) внутри себя использовала тулсет с калькулятором, поиском и переводчиком. Или ещё был TALM (Tool Augmented Language Models, https://arxiv.org/abs/2205.12255).

В данной работе специальная модель, Toolformer, обучается дёргать внешние API, решая когда это делать, что именно дёргать, с какими параметрами и как встраивать результат. Причём учится она в self-supervised режиме без большого количества человеческих аннотаций. И потерять других своих полезный свойств от этого модель не должна.

Входы и выходы API представляются текстом и описываются кортежом (ac, ic), где ac это имя апишки, а ic входные данные. Результат вызова апишки r. Для оформления таких вызовов используются словарные токены [”, “]” и “->”, так что строка с вызовом выглядит как “[ac(ic)]”, а строка с результатом как “[ac(ic)->r]”.

Процедура обучения построена следующим образом. В качестве базовой модели используется GPT-J с 6.7B параметров (https://github.com/kingoflolz/mesh-transformer-jax#zero-shot-evaluations). На входе есть некий датасет текстов (подмножество CCNet). Он конвертится в датасет, аугментированный вызовами апишек. Это делается в три шага:

1. Модель сэмплит вызовы потенциальных апишек через примеры, заданные в in-context learning (внутри промпта).

Есть набор заранее заданных через промпты потенциальных апишек: Question Answering (файнтюненный на Natural Questions retrieval-augmented Atlas, https://arxiv.org/abs/2208.03299), Calculator (просто четыре базовые операции), Wikipedia Search (специальный поисковик, выдающий сниппеты по википедии через BM25 retriever), Machine Translation (NLLB 600M, https://arxiv.org/abs/2207.04672), Calendar (просто возвращает текущую дату для контексту). То есть не проблема добавить по своим примерам другие апишки.

Далее для каждой позиции текста на входе вычисляется вероятность генерации токена “[“, задающего начало API вызова. Оставляются все позиции, для которых такая вероятность выше заданного порога (в работе τs = 0.05) и только топовые k=5 из них.

Далее для каждой позиции сэмплятся возможные имена апишек (m = 5).

Кое-где применялись эвристики, чтобы быстрее понимать, нужно ли дёргать какую-то апишку. Например, калькулятор не рассматривается, если в тексте было меньше трёх цифр.

2. Выполняются вызовы апишек.

Тут ничего особенного, специальный внешний код на питоне делает что надо и возвращает результат.

3. Результат вызова фильтруется по критерию помощи в предсказании следующего токена (стандартная задача обучения языковой модели).
👍6👏42🔥1



tgoop.com/gonzo_ML/1305
Create:
Last Update:

[Meta AI] Toolformer: Language Models Can Teach Themselves to Use Tools
Timo Schick, Jane Dwivedi-Yu, Roberto Dessì, Roberta Raileanu, Maria Lomeli, Luke Zettlemoyer, Nicola Cancedda, Thomas Scialom
Статья: https://arxiv.org/abs/2302.04761

Интересная свежая работа про аугментацию моделей тулами. По мне так очень хорошее направление, ибо очевидно, что некоторые вещи гораздо более успешно можно делать специализированными тулами, нежели ждать пока модель сама их выучит.

Как например с вычислениями. Языковые модели демонстрируют такие возможности, но не очень стабильно, и если можно в нужные моменты подключить гарантированно работающий тул, то грех, конечно, так не сделать.

Или со свежими и точными фактами. Можно долго учить модель в надежде, что не будет врать и фантазировать, но всё равно гарантий нет, да и всегда есть отсечка по дате, новые факты, появившиеся после обучения модели, добавить в неё сложно. Поэтому хождение в поиск или во внешнюю knowledge base любого вида потенциально очень полезно.

Короче, берём лучшее из двух миров. Плохо формализуемые вещи обучаем, простые алгоритмические даём в виде готовых средств. Тема уже не новая, та же LaMDA (https://www.tgoop.com/gonzo_ML/1229) внутри себя использовала тулсет с калькулятором, поиском и переводчиком. Или ещё был TALM (Tool Augmented Language Models, https://arxiv.org/abs/2205.12255).

В данной работе специальная модель, Toolformer, обучается дёргать внешние API, решая когда это делать, что именно дёргать, с какими параметрами и как встраивать результат. Причём учится она в self-supervised режиме без большого количества человеческих аннотаций. И потерять других своих полезный свойств от этого модель не должна.

Входы и выходы API представляются текстом и описываются кортежом (ac, ic), где ac это имя апишки, а ic входные данные. Результат вызова апишки r. Для оформления таких вызовов используются словарные токены [”, “]” и “->”, так что строка с вызовом выглядит как “[ac(ic)]”, а строка с результатом как “[ac(ic)->r]”.

Процедура обучения построена следующим образом. В качестве базовой модели используется GPT-J с 6.7B параметров (https://github.com/kingoflolz/mesh-transformer-jax#zero-shot-evaluations). На входе есть некий датасет текстов (подмножество CCNet). Он конвертится в датасет, аугментированный вызовами апишек. Это делается в три шага:

1. Модель сэмплит вызовы потенциальных апишек через примеры, заданные в in-context learning (внутри промпта).

Есть набор заранее заданных через промпты потенциальных апишек: Question Answering (файнтюненный на Natural Questions retrieval-augmented Atlas, https://arxiv.org/abs/2208.03299), Calculator (просто четыре базовые операции), Wikipedia Search (специальный поисковик, выдающий сниппеты по википедии через BM25 retriever), Machine Translation (NLLB 600M, https://arxiv.org/abs/2207.04672), Calendar (просто возвращает текущую дату для контексту). То есть не проблема добавить по своим примерам другие апишки.

Далее для каждой позиции текста на входе вычисляется вероятность генерации токена “[“, задающего начало API вызова. Оставляются все позиции, для которых такая вероятность выше заданного порога (в работе τs = 0.05) и только топовые k=5 из них.

Далее для каждой позиции сэмплятся возможные имена апишек (m = 5).

Кое-где применялись эвристики, чтобы быстрее понимать, нужно ли дёргать какую-то апишку. Например, калькулятор не рассматривается, если в тексте было меньше трёх цифр.

2. Выполняются вызовы апишек.

Тут ничего особенного, специальный внешний код на питоне делает что надо и возвращает результат.

3. Результат вызова фильтруется по критерию помощи в предсказании следующего токена (стандартная задача обучения языковой модели).

BY gonzo-обзоры ML статей


Share with your friend now:
tgoop.com/gonzo_ML/1305

View MORE
Open in Telegram


Telegram News

Date: |

Telegram Channels requirements & features To upload a logo, click the Menu icon and select “Manage Channel.” In a new window, hit the Camera icon. With the “Bear Market Screaming Therapy Group,” we’ve now transcended language. Users are more open to new information on workdays rather than weekends. Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value.
from us


Telegram gonzo-обзоры ML статей
FROM American