{"record":{"id":"d69d848fefc1a6d5","repo":"hiyouga/LlamaFactory","slug":"the-dataset-is-not-applicable-in-the-current-train","errorCode":null,"errorMessage":"The dataset is not applicable in the current training stage.","messagePattern":"The dataset is not applicable in the current training stage\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/llamafactory/data/loader.py","lineNumber":179,"sourceCode":"    return align_dataset(dataset, dataset_attr, data_args, training_args)\n\n\ndef _get_merged_dataset(\n    dataset_names: list[str] | None,\n    model_args: \"ModelArguments\",\n    data_args: \"DataArguments\",\n    training_args: \"Seq2SeqTrainingArguments\",\n    stage: Literal[\"pt\", \"sft\", \"rm\", \"ppo\", \"kto\"],\n    return_dict: bool = False,\n) -> Union[\"Dataset\", \"IterableDataset\", dict[str, \"Dataset\"]] | None:\n    r\"\"\"Return the merged datasets in the standard format.\"\"\"\n    if dataset_names is None:\n        return None\n\n    datasets = {}\n    for dataset_name, dataset_attr in zip(dataset_names, get_dataset_list(dataset_names, data_args.dataset_dir)):\n        if (stage == \"rm\" and dataset_attr.ranking is False) or (stage != \"rm\" and dataset_attr.ranking is True):\n            raise ValueError(\"The dataset is not applicable in the current training stage.\")\n\n        datasets[dataset_name] = _load_single_dataset(dataset_attr, model_args, data_args, training_args)\n\n    if return_dict:\n        return datasets\n    else:\n        return merge_dataset(list(datasets.values()), data_args, seed=training_args.seed)\n\n\ndef _get_dataset_processor(\n    data_args: \"DataArguments\",\n    stage: Literal[\"pt\", \"sft\", \"rm\", \"ppo\", \"kto\"],\n    template: \"Template\",\n    tokenizer: \"PreTrainedTokenizer\",\n    processor: Optional[\"ProcessorMixin\"],\n    do_generate: bool = False,\n) -> \"DatasetProcessor\":\n    r\"\"\"Return the corresponding dataset processor.\"\"\"","sourceCodeStart":161,"sourceCodeEnd":197,"githubUrl":"https://github.com/hiyouga/LlamaFactory/blob/f28afaf6355af515454dfb16c97d728307c93897/src/llamafactory/data/loader.py#L161-L197","documentation":"ValueError from _get_merged_dataset enforcing ranking-format compatibility: RM training requires preference datasets (ranking=True, i.e. chosen/rejected pairs), while pt/sft/ppo/kto stages require non-ranking datasets (ranking=False). A mismatch between the stage in your training YAML and the dataset's format raises this before loading.","triggerScenarios":"Setting stage: rm with a plain sharegpt/alpaca conversation dataset (no chosen/rejected columns); or stage: sft/kto/ppo with a dataset registered with \"ranking\": true; occurs per dataset while merging the dataset list.","commonSituations":"Reusing a YAML from an SFT run and only changing stage to rm; feeding a preference dataset (e.g. a DPO-style pairs file) to the sft stage; misunderstanding that KTO uses non-ranking data with a label field while DPO/RM use ranking data.","solutions":["For stage rm (and pairwise DPO), use a dataset with chosen/rejected responses, e.g. {\"file_name\": \"pairs.json\", \"ranking\": true, \"columns\": {\"chosen\": \"chosen\", \"rejected\": \"rejected\", ...}}.","For stage sft/ppo/kto/pt, remove \"ranking\": true from the dataset entry or pick a non-ranking dataset.","If you meant preference optimization without pairs, use stage kto with a label/kto_tag column instead of rm.","Double-check the stage: value in the training YAML matches the data you prepared."],"exampleFix":"# before: stage: rm with alpaca-format data\n\n# after: prepare preference data and register\ndataset_info.json:\n\"my_pref\": {\n  \"file_name\": \"prefs.json\",\n  \"ranking\": true,\n  \"columns\": {\"prompt\": \"question\", \"chosen\": \"chosen\", \"rejected\": \"rejected\"}\n}\n# train.yaml: stage: rm, dataset: my_pref","handlingStrategy":"validation","validationCode":"def stage_matches_ranking(stage: str, ranking: bool) -> bool:\n    return ranking if stage == \"rm\" else not ranking","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pair stage rm (and pairwise DPO) with ranking:true preference datasets; everything else with ranking:false.","When changing stage in a YAML, re-check the dataset entry's ranking flag in the same edit.","For label-based preference data use KTO, not RM."],"tags":["dataset","training-stage","ranking","config"],"backgroundTag":null,"analyzedSha":"f28afaf6355af515454dfb16c97d728307c93897","analyzedAt":"2026-08-14T21:57:28.298Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}