Модели

100 шагов GRPO подняли соблюдение структуры у модели 350M с 22,6% до 29,7%

Публичный рецепт Hugging Face использует около 500 samples, LoRA и три reward functions; весь fine-tuning рассчитан на бесплатный Colab или Kaggle GPU.

100 шагов GRPO подняли соблюдение структуры у модели 350M с 22,6% до 29,7%

Маленькую модель учили не содержанию, а форме ответа

Hugging Face опубликовала воспроизводимый рецепт для повышения schema compliance у LiquidAI/LFM2.5-350M. Авторы взяли около 500 training samples и провели 100 шагов Group Relative Policy Optimization через библиотеку TRL. В одинаковом local serving setup на IFStruct доля полностью прошедших примеров выросла с 452 из 2000, или 22,6%, до 594 из 2000, или 29,7%. Fine-tuning рассчитан на бесплатный GPU в Colab или Kaggle.

IFStruct проверяет не общую убедительность ответа, а способность вернуть валидный JSON или YAML точной формы: обязательные поля, типы, число элементов, wrapper key или bare list, отсутствие лишних свойств и корректные code fences. Такая задача практична для downstream automation, потому что грамматически красивый ответ бесполезен, если parser не может его прочитать или структура нарушает контракт API. Результат 29,7% всё ещё далёк от production reliability, но улучшение показывает направление.

Training data специально закрывает слабые места benchmark

В качестве основы использован dataset `nvidia/Nemotron-RL-instruction_following-structured_outputs`, где prompt связан с JSON Schema и ожидаемым числом полей. Авторы изменили distribution: к 40% примеров добавили требование вернуть результат внутри fenced code block, а отдельные 20% превратили в задачи с top-level array и обязательным количеством элементов. Цель состояла не в том, чтобы всегда выдавать raw JSON, а в том, чтобы следовать конкретной инструкции о форме.

К LFM2.5-350M подключили LoRA adapter ранга 16 с alpha 32. Из-за hybrid attention/convolution architecture настройка охватывает LFM-specific modules: `q_proj`, `k_proj`, `v_proj`, `out_proj`, `in_proj`, а также `w1`, `w2` и `w3`. Обучается примерно 6 млн параметров, или 1,66% модели. После training adapter объединяется с base weights, а checkpoint сохраняется целиком и может быть конвертирован в GGUF для local inference через `llama.cpp`.

Три reward functions оценивают разные ошибки структуры

`json_format_reward` проверяет, можно ли распарсить ответ и соблюдён ли запрошенный fenced или raw format: правильная форма получает 1,0, неправильная, но parseable — 0,2, сломанная — 0. `field_count_reward` сравнивает число top-level fields и линейно снижает reward при отклонении. `schema_validation_reward` считает нарушения JSON Schema и допускает partial credit только при достаточном покрытии required keys. Веса трёх компонентов заданы как 1,0, 0,5 и 2,0.

GRPOConfig использует восемь generations на prompt group, batch size 4, gradient accumulation 8, completion length 1024, temperature 1,1 и небольшой KL penalty beta 0,01 к reference model. Разнообразие нескольких completions позволяет относительному reward выделять более дисциплинированные ответы без отдельной разметки идеального ответа для каждого prompt. Но reward оптимизирует формальные критерии; он не доказывает фактическую корректность значений, которые модель помещает в валидную структуру.

Прирост сосредоточился в JSON и bare lists

На полном IFStruct JSON pass rate вырос с 18,0% до 31,9%, а YAML почти не изменился: 27,2% против 27,5%. Для bare list результат поднялся с 16,6% до 29,7%, тогда как wrapper key — только с 28,5% до 29,7%. Именно JSON и массивы были явно усилены в training distribution, поэтому pattern улучшения соответствует вмешательству. Средняя latency при локальном запуске изменилась с 1453 до 1518 ms.

Эксперимент полезен как небольшой и открытый baseline, но не как доказательство универсального преимущества GRPO. Сравнение проведено на одном model family, одном benchmark и одной serving stack, а training prompts были специально адаптированы под известные категории IFStruct. Авторы также отмечают, что итоговые 29,7% ниже 33,15% у Qwen3.5-2B. Для реального API нужны дополнительные constrained decoding, retries, validation и тесты на unseen schemas, а не доверие одному benchmark score.

Первоисточники

  1. Hugging Face — Fine-tuning a 350M Model for Better Structured Outputs in 100 GRPO Steps