返回
HChuggingface.co
24
·15小时前·官方发布 · RSS

Fine-tuning a 350M Model for Better Structured Outputs in 100 GRPO Steps

查看原文
官方公告Hugging FaceGitHub模型发布限时活动开源代码

热度趋势

趋势数据积累中

百分比基于当前可用热度信号,而非评论数或独立用户人数。

推荐理由

官方发布涉及Hugging Face 模型访问、订阅权益规则,适合跟踪产品开放节奏和用户影响。

AI 摘要

一份公开指南详细介绍了如何使用组相对策略优化(GRPO)和TRL库对LFM2.5-350M模型进行微调。这个经济实惠的方法仅需100个训练步骤和500个样本,显著提高了结构化输出的合规性。在IFStruct基准测试中,模型的性能从22.6%提升至29.7%。该过程可在GitHub上获取,并可在免费层级的GPU上运行。

This guide is a fully public, inexpensive recipe for making a small model substantially better at structured-output compliance. We fine-tune LFM2.5-350M with Group Relative Policy Optimization (GRPO) using the TRL library and evaluate it on the IFStruct benchmark . The full run takes around 500 samples and 100 training steps, small enough for a free-tier Colab or Kaggle GPU, and is available on GitHub . The results show that even a light fine-tuning procedure improves performance from 22.6% to 29.7% on the IFStruct benchmark.

Structured output is one of the most common real-world tasks for LLMs, yet most benchmarks fold it into broader reasoning or extraction scores rather than measuring it on its own. Whether a model reliably returns valid, parseable output in the requested format and shape — schema compliance — is often what decides whether it can be wired into a downstream system at all.

Note that the training pipeline described here is not the one used to train the RL model described in the IFStruct blog . This notebook doesn't aim to recreate the IFStruct benchmark score, but to show how task-specific fine-tuning of smaller models can improve performance and match that of far larger models.

Prerequisites

This guide has two halves that run in different places:

- Fine-tuning runs on a GPU. The accompanying notebook is sized for a free-tier Colab or Kaggle GPU.

- Evaluation can run locally on a MacBook (here, a MacBook Pro with an Apple M5 Max and 36 GB of unified memory) through llama.cpp, which exposes an OpenAI-compatible server that the IFStruct evaluator talks to.

We will need uv for the Python tooling and llama.cpp for serving. Following the Liquid AI llama.cpp deployment docs , install llama.cpp with Homebrew and verify that llama-server is available:

brew install llama.cpp llama-server --version

IFStruct Evaluation on LFM2.5-350M (Base model)

Before we begin, let's evaluate LFM2.5-350M on the IFStruct benchmark and see whether we can reproduce the reported score of 21.1%.

IFStruct is a benchmark for testing the validity of LLM outputs and schema adherence. The benchmark is open-source in Liquid4All/ifstruct , with the public benchmark dataset available on Hugging Face at LiquidAI/ifstruct-v1.0 .

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

For the eval comparison, we serve the model locally on the MacBook with llama.cpp. We will use the BF16 GGUF ( LiquidAI/LFM2.5-350M-GGUF ).

Then we start the base-model server with the following command:

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: model name IFStruct sends to the OpenAI-compatible endpoint

- -ngl 99: asks llama.cpp to offload all layers to the GPU when available

- -np 4: serves four requests in parallel

- -c 32768: size of the prompt context

Once the server is running, we can run the full benchmark with 2000 samples:

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

============================================================ Model: LiquidAI/LFM2.5-350M ============================================================ Overall: 452/2000 passed (22.6%) Average latency: 1453ms

By format: JSON: 180/1000 passed (18.0%) YAML: 272/1000 passed (27.2%)

Fine-tuning a 350M Model for Better Structured Outputs in 100 GRPO Steps · BuzzRadr