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

