1.8Kпросмотров
30 июля 2024 г.
📷 ФотоScore: 2.0K
Fast Constrained Decoding ⚡️ Есть такой юскейс у LLM, когда надо генерить строго в JSON/YAML формате. Это очень удобно, потому что такой ответ легко парсить. Мы его применяем, например, когда надо классифицирровать текст на несколько аттрибутов. У этих форматов есть правила: каждая открытая скобка должна закрыться, ключи обязательно в кавычках и тд И когда LLM, вероятностная по своей природе, пытается решить такую задачу, могут возникнуть проблемы типа генерации невалидного JSON'а. Так вот, в SGLang (про который тут есть хороший пост) реализован быстрый constrained decoding с использованием конечных автоматов. И на JSON'е он работает очень хорошо (см гифку) ✍️ Суть в том, что мы можем пропускать генерацию некоторых токенов, когда только один подходит (для ускорения), и ограничивать возможные токены для генерации через logit bias (для корректности). Подробный блогпост от авторов на эту тему. Очень рекомендую к ознакомлению 👍 И обрартите внимание на то, как это можно использовать в коде (на скрине и тут в примерах). На мой взгляд это прям next level удобства и скорости для агентов и function calling 🦾 @building_singularity