Skip to main content
Off-the-shelf language models sometimes fail on domain-specific tasks — particularly requirement validation over proprietary terminology or specialized classification schemes not well-represented in general training data. Mellea lets you train a LoRA or aLoRA adapter on your own labeled dataset and use it as a requirement validator in any Mellea program. Prerequisites: pip install "mellea[cli]". Training requires a GPU or Apple Silicon Mac with sufficient VRAM for the chosen base model. Uploading requires a Hugging Face account.
Backend note: Custom-trained adapters can only be loaded into LocalHFBackend. They do not work with Ollama, OpenAI, or other remote backends. Granite Switch models ship with pre-trained intrinsic adapters embedded in the model weights, which can be used via OpenAIBackend with load_embedded_adapters=True. See Intrinsics for details.

LoRA vs aLoRA

Both adapter types fine-tune a base model on your data. The difference is inference cost: For requirement validation in Mellea (short binary checks inside a generation loop), aLoRA is the better choice. Use --adapter lora if you need a more general fine-tune and can absorb the inference cost.

Data format

Training data is a .jsonl file with one JSON object per line. Each object must have:
  • item — the input text to classify
  • label — the string classification label
Labels can be any strings. The adapter learns to predict the label from the item text.

Train an adapter

The trained adapter weights are saved to ./checkpoints/my_adapter/.

Parameters

The default invocation prompt is <|start_of_role|>check_requirement<|end_of_role|>. Provide --promptfile only if your adapter needs a different prompt format. The file must contain {"invocation_prompt": "..."}.

Upload to Hugging Face

This creates the Hugging Face repository if it does not exist and uploads the adapter weights. Requires HF_TOKEN set or a prior huggingface-cli login.
Warning: Before uploading to a public repository, review whether your training data includes proprietary, confidential, or personal information. Language models can memorize details from small domain-specific datasets.
If you intend to use the adapter as a Mellea intrinsic (so that it can be loaded by model ID rather than local path), pass --intrinsic and provide an io.yaml file:

Use the adapter in Mellea

Load the trained adapter into a LocalHFBackend using CustomIntrinsicAdapter:
When backend.add_adapter() is called, Mellea automatically routes requirement validation through the adapter for any req() calls on that session. The adapter runs at the check_requirement prompt position — fast, with minimal context overhead.

Disable adapter validation

To run without adapter validation (for benchmarking or debugging):
Set it back to True to re-enable. This flag is per-backend instance and does not affect other sessions. See also: Intrinsics | The Requirements System | Write Custom Verifiers | CLI Reference