PromptPilot

Усовершенствование модели 350M для структурированных выводов за 100 шагов GRPO

7 сентября 2026 г.

Введение

Данная статья представляет собой доступное руководство по улучшению малой модели для достижения более качественных структурированных выводов. Мы проводим дообучение модели LFM2.5-350M с использованием метода Group Relative Policy Optimization (GRPO) и библиотеки TRL, а затем оцениваем ее на бенчмарке IFStruct. Полный процесс требует около 500 образцов и 100 шагов тренировки, что достаточно для бесплатного GPU на Colab или Kaggle. Результаты показывают, что даже легкая доработка значительно повышает производительность с 22.6% до 29.7% на бенчмарке IFStruct.

Зачем нужна структурированная выдача?

Структурированная выдача является одной из самых распространенных задач для больших языковых моделей (LLM). Однако многие бенчмарки объединяют ее с более широкими оценками рассуждений или извлечений, вместо того чтобы оценивать ее в отдельности. Возможность модели возвращать действительный, парсируемый вывод в запрашиваемом формате и структуре — соблюдение схемы — часто определяет, может ли она быть интегрирована в конечную систему.

Предварительные условия

Руководство состоит из двух частей, которые выполняются в разных средах:

  • Дообучение — выполняется на GPU. Сопутствующий ноутбук рассчитан на бесплатный GPU Colab или Kaggle.
  • Оценка — может выполняться локально на MacBook (в нашем случае MacBook Pro с процессором Apple M5 Max и 36 ГБ унифицированной памяти) через llama.cpp, который предоставляет сервер совместимый с OpenAI для взаимодействия с оценщиком IFStruct.

Для этого нам понадобятся uv для инструментов Python и llama.cpp для сервировки. Следуя документации по развертыванию Liquid AI llama.cpp, установите llama.cpp с помощью Homebrew и убедитесь, что llama-server доступен:

brew install llama.cpp
llama-server --version

Оценка LFM2.5-350M на IFStruct

Перед началом давайте оценим модель LFM2.5-350M на бенчмарке IFStruct и посмотрим, можем ли мы воспроизвести заявленный результат 21.1%.

Бенчмарк IFStruct предназначен для проверки действительности выводов LLM и соблюдения схемы. Данные бенчмарка являются открытыми и доступны в Liquid4All/ifstruct, а публичный набор данных можно найти на Hugging Face в LiquidAI/ifstruct-v1.0.

git clone https://github.com/Liquid4All/ifstruct.git

Для сравнения оценки мы развернем модель локально на MacBook с помощью llama.cpp. Мы будем использовать BF16 GGUF (LiquidAI/LFM2.5-350M-GGUF).

После этого мы запускаем сервер базовой модели с помощью следующей команды:

llama-server 
 -hf LiquidAI/LFM2.5-350M-GGUF:BF16 
 -c 32768 
 -np 4 
 -ngl 99 
 --alias LiquidAI/LFM2.5-350M 
 --host 127.0.0.1 
 --port 8080

--alias: имя модели, которое IFStruct отправляет конечной точке, совместимой с OpenAI;

-ngl 99: указывает llama.cpp выгрузить все слои на GPU при наличии;

-np 4: обрабатывает четыре запроса параллельно;

-c 32768: размер контекста запроса.

Как только сервер запустится, мы можем выполнить полный бенчмарк с 2000 образцами:

uv run ifstruct-eval 
 --model LiquidAI/LFM2.5-350M 
 --base-url http://localhost:8080/v1 
 --api-key dummy 
 --dataset data/test.jsonl 
 --results-file results/lfm2.5-350m-llamacpp-base.json 
 --n-threads 4 
 --max-tokens 2048 
 -v

Результаты оценки

============================================================

Модель: LiquidAI/LFM2.5-350M

============================================================

Общие результаты: 452/2000 прошли (22.6%)

Средняя задержка: 1453мс

По формату:

JSON: 180/1000 прошли (18.0%)

YAML: 272/1000 прошли (27.2%)

По верхнему уровню структуры:

Ключ-обертка: 288/1011 прошли (28.5%)

Обычный список: 164/989 прошли (16.6%)

По типу сущности:

  • test__camera_review: 6/83 прошли (7.2%)
  • test__clinical_trial: 20/104 прошли (19.2%)
  • test__conference_schedule: 7/87 прошли (8.0%)
  • test__escaping__bug_report_batch: 24/89 прошли (27.0%)
  • test__escaping__config_snippet_audit: 15/85 прошли (17.6%)
  • test__escaping__customer_email_thread: 5/73 прошли (6.8%)
  • test__escaping__dialogue_sample: 14/95 прошли (14.7%)
  • test__escaping__interview_transcript_segment: 21/80 прошли (26.2%)
  • test__escaping__log_parser_examples: 21/72 прошли (29.2%)
  • test__escaping__pr_discussion: 22/87 прошли (25.3%)
  • test__escaping__repro_steps_batch: 16/73 прошли (21.9%)
  • test__escaping__screenplay_scene: 16/92 прошли (17.4%)
  • test__escaping__short_story_chapter: 15/84 прошли (17.9%)
  • test__escaping__support_ticket_batch: 27/73 прошли (37.0%)
  • test__escaping__terminal_session_notes: 20/70 прошли (28.6%)
  • test__event_ticket_booking: 49/107 прошли (45.8%)
  • test__gpu_review: 6/94 прошли (6.4%)
  • test__invoice: 28/86 прошли (32.6%)
  • test__job_posting: 25/85 прошли (29.4%)
  • test__real_estate_listing: 31/82 прошли (37.8%)
  • test__recipe: 3/70 прошли (4.3%)
  • test__rental_car_booking: 27/79 прошли (34.2%)
  • test__scientific_experiment: 13/69 прошли (18.8%)

Заключение

Легкое дообучение модели LFM2.5-350M с использованием GRPO может значительно улучшить ее способность генерировать структурированные выводы. Это открывает новые возможности для использования меньших моделей в задачах, требующих высокой точности и соответствия схемам.