Easiness and Hallucination Filtering#
Decide which generated multiple-choice question (MCQ) rows look too trivial or unreliable before you export benchmark.parquet, using only configuration and prompts.
The HALLUCINATION_EASINESS_DETECTION stage runs two prompt families in parallel, each backed by one or more models listed in YAML.
Every row receives numeric scores and boolean flags.
Optional removal rules decide what survives into the final export.
Artifacts and filenames are listed in Output Files. Field-level YAML is documented in Generation Configuration Reference.
What You Control#
Control |
Purpose |
|---|---|
|
Which models answer the easiness and hallucination judge prompts. |
|
When the easiness vote fraction is above this value, the row is marked |
|
When the hallucination vote fraction is below this value, the row is marked |
|
If true, rows with |
|
If true, rows with |
|
|
|
Batch size for the Data Designer calls that run this stage. |
Even when removals are false, stage_cache/filtered_questions.parquet keeps correct_ratio_easiness, correct_ratio_hallucination, is_easy, and is_hallucination so you can audit scores before tightening thresholds.
How the Scores Work#
For each filter family, every configured model returns a parsed letter answer.
The pipeline compares those letters to answer_generated on the row.
Easiness builds
correct_ratio_easinessas the fraction of easiness models whose answer matchesanswer_generated. When that fraction is greater thaneasiness_threshold,is_easyis set to true to indicate the item was too easy for the swarm to disagree with.Hallucination builds
correct_ratio_hallucinationthe same way for the hallucination model list. When that fraction is less thanhallucination_threshold,is_hallucinationis set to true to indicate that too few models agreed with the generated label. Typically, these need human-in-the-loop review.
Adding more models under a list increases the denominator of the ratio, so revisit thresholds whenever you add or remove swarm members.
Each model alias produces its own response column before ratios are computed. This approach helps to compare votes row by row.
Sample Configuration#
The following pattern matches the sample tiny configuration: one model per family with aliases that differ from other stages and from each other.
easiness_threshold: 0.8
hallucination_threshold: 0.5
remove_hallucinated: false
remove_easy: false
filtering_model_configs:
hallucination:
- alias: hal_gpt-oss-120b
model: openai/gpt-oss-120b
provider: nvidia
inference_parameters:
max_tokens: 1024
max_parallel_requests: 1
temperature: 0.0
top_p: 1.0
easiness:
- alias: eas_gpt-oss-120b
model: openai/gpt-oss-120b
provider: nvidia
inference_parameters:
max_tokens: 1024
max_parallel_requests: 1
temperature: 0.0
top_p: 1.0
Optional Second Opinion#
Add another list entry when you want independent votes without changing code:
filtering_model_configs:
hallucination:
- alias: hal_primary
model: openai/gpt-oss-120b
provider: nvidia
inference_parameters:
max_tokens: 1024
temperature: 0.0
top_p: 1.0
- alias: hal_backup
model: nvidia/nemotron-3-nano-omni-30b-a3b-reasoning
provider: nvidia
inference_parameters:
max_tokens: 65536
temperature: 0.2
top_p: 0.95
easiness:
- alias: eas_primary
model: openai/gpt-oss-120b
provider: nvidia
inference_parameters:
max_tokens: 1024
temperature: 0.0
top_p: 1.0
Use a model from a different model family when the generator model is also the primary filter model. Set each entry to the production models you want in the vote.
Removal Defaults#
The remove_hallucinated field defaults to true when omitted from YAML, while remove_easy defaults to false.
Set both explicitly when you want reproducible behavior across environments.
remove_hallucinated: true
remove_easy: true
Turn removals off while you tune thresholds, inspect filtered_questions.parquet, then re-enable them for production runs.
Prompts#
If you specify a custom prompt_config file, include the easiness_filter and hallucination_filter sections expected by validation.
The default configuration files wire those prompts when prompt_config is null.