Persona MCQ Configuration Reference#
Configuration fields, output artifacts, and named errors for sdg/persona_mcq. For the procedure, refer to Generate Persona-Grounded MCQ Data for SFT.
Command#
uv run nemotron steps run sdg/persona_mcq -c {default|tiny} [-d] [--run PROFILE | --batch PROFILE] [KEY=VALUE ...]
Overrides use OmegaConf dotlist syntax. List values are passed in brackets and quoted for the shell, for example 'pipeline.stages=[answers,build_sft,sample]'. Shipped environment profiles are <backend>_sdg_persona_mcq and <backend>_sdg_persona_mcq_tiny for lepton, slurm, and dgxcloud.
Shipped Configuration#
pipeline:
experiment_name: persona-mcq
output_root: ${oc.env:NEMOTRON_RUN_DIR,./outputs}/persona_mcq
stages: [all]
seed: 42
resume: true
overwrite: false
languages:
english:
display_name: English
locale: en_IN
answer_label: Answer
script_pattern: "[A-Za-z]"
question_script_fraction: {min: 0.50, max: 1.0}
answer_script_fraction: {min: 0.85, max: 1.0}
strip_latin_glosses: false
hindi:
display_name: Hindi
locale: hi_Deva_IN
answer_label: उत्तर
answer_label_aliases: [उत्तर है]
script_pattern: "[ऀ-ॿ]"
question_script_fraction: {min: 0.50, max: 1.0}
answer_script_fraction: {min: 0.70, max: 1.0}
strip_latin_glosses: true
malayalam:
display_name: Malayalam
# Data Designer has no managed Malayalam persona locale; use Indian
# personas as grounding while the model authors and answers in Malayalam.
locale: en_IN
answer_label: ഉത്തരം
script_pattern: "[ഀ-ൿ]"
question_script_fraction: {min: 0.50, max: 1.0}
answer_script_fraction: {min: 0.70, max: 1.0}
strip_latin_glosses: true
question_models: [qwen, oss, gemma]
answer_models: [qwen, oss, gemma]
models:
qwen:
model: Qwen/Qwen3.5-122B-A10B
endpoint: ${oc.env:QWEN_API_BASE}
api_key_env: NVIDIA_API_KEY
skip_health_check: true
question:
inference:
temperature: 0.7
top_p: 0.8
max_tokens: 4096
max_parallel_requests: 256
timeout: 300
extra_body:
top_k: 20
presence_penalty: 1.5
chat_template_kwargs: {enable_thinking: false}
answer:
temperature: 1.0
top_p: 0.95
max_tokens: 16384
extra_body:
top_k: 20
presence_penalty: 1.5
chat_template_kwargs: {enable_thinking: true}
oss:
model: openai/gpt-oss-120b
endpoint: ${oc.env:OSS_API_BASE}
api_key_env: NVIDIA_API_KEY
skip_health_check: true
question:
inference:
temperature: 1.0
top_p: 1.0
max_tokens: 4096
max_parallel_requests: 256
timeout: 300
extra_body: {reasoning_effort: low}
answer:
temperature: 1.0
top_p: 1.0
max_tokens: 16384
extra_body: {reasoning_effort: high}
gemma:
model: google/gemma-4-31B-it
endpoint: ${oc.env:GEMMA_API_BASE}
api_key_env: NVIDIA_API_KEY
skip_health_check: true
question:
inference:
temperature: 1.0
top_p: 0.95
max_tokens: 4096
max_parallel_requests: 256
timeout: 300
extra_body:
top_k: 64
chat_template_kwargs: {enable_thinking: false}
answer:
temperature: 1.0
top_p: 0.95
max_tokens: 16384
extra_body:
top_k: 64
chat_template_kwargs: {enable_thinking: true}
question_generation:
num_records: 100000
max_parallel_requests: 256
buffer_size: 500
lexical_dedup:
threshold: 0.80
shingle_size: 4
permutations: 128
bands: 16
seed: 42
semantic_dedup:
model: intfloat/multilingual-e5-large
device: cuda
batch_size: 256
threshold: 0.965
method: greedy
seed: 13
chunk_size: 4096
answer_generation:
max_parallel_requests: 256
timeout: 600
max_retries: 5
sft:
response_teachers: [qwen, oss, gemma]
agreement: unanimous
reasoning:
display_name: English
script_pattern: "[A-Za-z]"
script_fraction: {min: 0.85, max: 1.0}
sampling:
per_language: 50000
seed: 42
reasoning_off_fraction: 0.10
answer_variant: full
Key differences in tiny.yaml include pipeline.experiment_name
(persona-mcq-smoke), question_models ([oss]), reduced record, buffer,
parallelism, token, MinHash, and semantic-dedup sizes,
semantic_dedup.device: cpu, answer_generation.max_retries: 3, and
sampling.per_language: 1. Refer to the complete configuration when exact
smoke-test values matter:
pipeline:
experiment_name: persona-mcq-smoke
output_root: ${oc.env:NEMOTRON_RUN_DIR,./outputs}/persona_mcq
stages: [all]
seed: 42
resume: true
overwrite: false
languages:
english:
display_name: English
locale: en_IN
answer_label: Answer
script_pattern: "[A-Za-z]"
question_script_fraction: {min: 0.50, max: 1.0}
answer_script_fraction: {min: 0.85, max: 1.0}
strip_latin_glosses: false
hindi:
display_name: Hindi
locale: hi_Deva_IN
answer_label: उत्तर
answer_label_aliases: [उत्तर है]
script_pattern: "[ऀ-ॿ]"
question_script_fraction: {min: 0.50, max: 1.0}
answer_script_fraction: {min: 0.70, max: 1.0}
strip_latin_glosses: true
malayalam:
display_name: Malayalam
locale: en_IN
answer_label: ഉത്തരം
script_pattern: "[ഀ-ൿ]"
question_script_fraction: {min: 0.50, max: 1.0}
answer_script_fraction: {min: 0.70, max: 1.0}
strip_latin_glosses: true
question_models: [oss]
answer_models: [qwen, oss, gemma]
models:
qwen:
model: Qwen/Qwen3.5-122B-A10B
endpoint: ${oc.env:QWEN_API_BASE}
api_key_env: NVIDIA_API_KEY
skip_health_check: true
question: {inference: {temperature: 0.7, top_p: 0.8, max_tokens: 2048, max_parallel_requests: 4, timeout: 300}}
answer: {temperature: 1.0, top_p: 0.95, max_tokens: 8192, extra_body: {chat_template_kwargs: {enable_thinking: true}}}
oss:
model: openai/gpt-oss-120b
endpoint: ${oc.env:OSS_API_BASE}
api_key_env: NVIDIA_API_KEY
skip_health_check: true
question: {inference: {temperature: 1.0, top_p: 1.0, max_tokens: 2048, max_parallel_requests: 4, timeout: 300, extra_body: {reasoning_effort: low}}}
answer: {temperature: 1.0, top_p: 1.0, max_tokens: 8192, extra_body: {reasoning_effort: high}}
gemma:
model: google/gemma-4-31B-it
endpoint: ${oc.env:GEMMA_API_BASE}
api_key_env: NVIDIA_API_KEY
skip_health_check: true
question: {inference: {temperature: 1.0, top_p: 0.95, max_tokens: 2048, max_parallel_requests: 4, timeout: 300}}
answer: {temperature: 1.0, top_p: 0.95, max_tokens: 8192, extra_body: {chat_template_kwargs: {enable_thinking: true}}}
question_generation: {num_records: 8, max_parallel_requests: 4, buffer_size: 8}
lexical_dedup: {threshold: 0.80, shingle_size: 4, permutations: 32, bands: 4, seed: 42}
semantic_dedup: {model: intfloat/multilingual-e5-large, device: cpu, batch_size: 8, threshold: 0.965, method: greedy, seed: 13, chunk_size: 64}
answer_generation: {max_parallel_requests: 4, timeout: 600, max_retries: 3}
sft:
response_teachers: [qwen, oss, gemma]
agreement: unanimous
reasoning:
display_name: English
script_pattern: "[A-Za-z]"
script_fraction: {min: 0.85, max: 1.0}
sampling: {per_language: 1, seed: 42, reasoning_off_fraction: 0.10, answer_variant: full}
Fields#
pipeline#
Field |
Default |
Description |
|---|---|---|
|
|
Required. Artifact directory name under |
|
|
Parent directory for experiments. |
|
|
|
|
|
Pipeline seed used by question authoring. Answer option shuffles are content-deterministic from |
|
|
Skip completed question outputs and answered rows; reload the existing |
|
|
Delete the experiment directory before running. Required to reuse an experiment name with a different configuration. |
languages.<key>#
Every entry is independent; the key names carry no language-specific behavior.
Field |
Required |
Description |
|---|---|---|
|
yes |
Language name inserted into authoring and answering prompts. |
|
yes |
Data Designer persona locale, for example |
|
yes |
Localized final-answer marker; the assistant’s last line must be |
|
no |
Additional accepted markers when parsing teacher answers. |
|
yes |
Single-character regular expression for the target script. Must not match the empty string. |
|
yes |
|
|
yes |
The same range applied to the exported assistant answer. |
|
no ( |
Remove parenthetical Latin-script glosses from questions and options before deduplication. |
question_models, answer_models, and models.<alias>#
question_models lists the aliases whose questions are pooled before deduplication. answer_models lists the teacher panel; at least three are required. Every alias must be defined under models.
Field |
Required |
Description |
|---|---|---|
|
yes |
Model identifier sent to the endpoint. |
|
yes |
OpenAI-compatible base URL; the shipped configurations resolve |
|
yes |
Name of the environment variable holding the bearer token. The value is never written to run metadata. |
|
no ( |
Data Designer provider type for question authoring. |
|
no ( |
Skip the Data Designer endpoint health check. |
|
no |
Additional HTTP headers for question authoring. |
|
no |
Data Designer |
|
no |
Answer request parameters: |
question_generation#
Field |
Default |
Description |
|---|---|---|
|
|
Questions requested per question model and language. |
|
|
Data Designer non-inference worker parallelism. |
|
|
Data Designer run buffer size. |
lexical_dedup#
Field |
Default |
Description |
|---|---|---|
|
|
Jaccard similarity of question shingles at or above which a question is a near-duplicate. |
|
|
Shingle length. |
|
|
MinHash permutations. Must be divisible by |
|
|
Locality-sensitive hashing bands. |
|
|
MinHash seed. |
semantic_dedup#
Field |
Default |
Description |
|---|---|---|
|
|
Sentence Transformers embedding model. Questions are embedded with the |
|
|
Embedding device. |
|
|
Embedding batch size. |
|
|
Cosine-similarity threshold for a near-duplicate pair; must be between 0 and 1. |
|
|
|
|
|
Seed for the keep order. |
|
|
Rows per similarity block. |
answer_generation#
Field |
Default |
Description |
|---|---|---|
|
|
Concurrent answer requests per teacher and language. |
|
|
HTTP timeout in seconds. |
|
|
Attempts per row; HTTP 429 and 5xx responses are retried with exponential back-off capped at 30 seconds. |
sft#
Field |
Default |
Description |
|---|---|---|
|
|
Teachers whose answers are exported. Each must also appear in |
|
|
|
|
|
Language requested for the reasoning. |
|
|
Script matcher for the reasoning. |
|
|
Inclusive script-fraction range for the retained reasoning. |
sampling#
Field |
Default |
Description |
|---|---|---|
|
|
Records sampled per language from the questions that every response teacher exported. |
|
|
Sampling and shuffle seed. |
|
|
Fraction of sampled records per language that omit |
|
|
|
Output Artifacts#
All paths are relative to <output_root>/<experiment_name>/.
Path |
Content |
|---|---|
|
Redacted configuration, including resolved endpoint URLs but not API-key values, plus |
|
Per-stage statistics: cached and downloaded locales, question counts, deduplication drop reasons, answer counts, |
|
Authored question records. |
|
Data Designer run artifacts for question authoring. |
|
Pooled, lexically deduplicated questions with |
|
Semantically deduplicated questions. |
|
Shuffled options with |
|
Teacher responses with |
|
Rows that failed after |
|
Quality-gated |
|
Aligned samples across all configured languages and the corresponding SFT-packing blend manifest. |
|
Equal-count English/target views, written when a language named |
Training Record#
{
"messages": [
{"role": "system", "content": ""},
{"role": "user", "content": "<answer instruction>\n\n<question>\n\nA) ...\nB) ...\nC) ...\nD) ..."},
{"role": "assistant", "reasoning_content": "<English reasoning>", "content": "<answer text ending in answer_label: LETTER>"}
],
"metadata": {
"query_id": "...",
"language": "hindi",
"answer_label": "उत्तर",
"reasoning_language": "English",
"response_model": "gemma",
"agreement": "unanimous",
"voted_letter": "B",
"n_valid_votes": 3,
"difficulty": "...",
"topic": "...",
"facet": "...",
"region": "...",
"gen_model": "oss",
"persona_uuid": "...",
"reasoning_mode": "on"
}
}
Records with reasoning_mode: "off" omit reasoning_content.
Persona Asset Cache#
The personas stage looks for each configured languages.<key>.locale at:
<managed-assets>/datasets/<locale>.parquet
DATA_DESIGNER_MANAGED_ASSETS_PATH sets <managed-assets> directly. If it is unset, the path defaults to ${DATA_DESIGNER_HOME:-~/.data-designer}/managed-assets.
To populate the cache without giving the pipeline an NGC key, set the same paths in the downloading shell and download every configured locale before running:
$ export DATA_DESIGNER_HOME="<shared-cache-root>"
$ export DATA_DESIGNER_MANAGED_ASSETS_PATH="$DATA_DESIGNER_HOME/managed-assets"
$ uv run data-designer download personas --locale en_US
Repeat the download for each configured locale, then make the cache visible to the pipeline job at the same path.
The shipped *_sdg_persona_mcq profiles forward both variables.
Errors#
Error |
Cause |
Recovery |
|---|---|---|
|
The experiment directory was created with a different configuration ( |
Choose a new |
|
A configured locale has no cached persona asset and |
Export |
|
Fewer questions survived every response teacher’s gates than |
Inspect the |
Configuration validation also rejects fewer than three answer_models, response teachers absent from answer_models, unknown stage names, invalid script_pattern values, and script-fraction ranges outside 0 <= min <= max <= 1.
The lexical_dedup stage separately rejects permutations values that are not divisible by bands when that stage runs; check the pair before a full run because initial configuration validation does not inspect it.