hiyouga/LlamaFactory · error · ValueError
Dataset converter {name} not found.
Error message
Dataset converter {name} not found. What it means
get_dataset_converter raises ValueError when the requested format name is not a key of DATASET_CONVERTERS (only 'alpaca', 'sharegpt', 'openai' ship built in, plus whatever plugins registered). The name comes from dataset_attr.formatting, i.e. the 'formatting' field of a dataset_info.json entry.
Source
Thrown at src/llamafactory/data/converter.py:388
DATASET_CONVERTERS = {
"alpaca": AlpacaDatasetConverter,
"sharegpt": SharegptDatasetConverter,
"openai": OpenAIDatasetConverter,
}
def register_dataset_converter(name: str, dataset_converter: type["DatasetConverter"]) -> None:
r"""Register a new dataset converter."""
if name in DATASET_CONVERTERS:
raise ValueError(f"Dataset converter {name} already exists.")
DATASET_CONVERTERS[name] = dataset_converter
def get_dataset_converter(name: str, dataset_attr: "DatasetAttr", data_args: "DataArguments") -> "DatasetConverter":
r"""Get a dataset converter."""
if name not in DATASET_CONVERTERS:
raise ValueError(f"Dataset converter {name} not found.")
return DATASET_CONVERTERS[name](dataset_attr, data_args)
def align_dataset(
dataset: Union["Dataset", "IterableDataset"],
dataset_attr: "DatasetAttr",
data_args: "DataArguments",
training_args: "Seq2SeqTrainingArguments",
) -> Union["Dataset", "IterableDataset"]:
r"""Align the dataset to a specific format.
Aligned dataset:
_prompt: [{"role": "user", "content": "..."}] * (2T - 1)
_response: [{"role": "assistant", "content": "..."}] * N (N > 1 for ranking dataset)
_system: "..."
_tools: "..."
_images: []View on GitHub (pinned to f28afaf635)
Solutions
- Set formatting to one of alpaca | sharegpt | openai in the dataset_info entry, matching your data schema.
- Fix typos/whitespace/case in the formatting field.
- If you use a custom converter, ensure its registration module is imported before dataset loading (e.g. via your entrypoint).
Example fix
# before (dataset_info.json)
"my_data": {"file_name": "data.json", "formatting": "chatml"}
# after (dataset_info.json)
"my_data": {"file_name": "data.json", "formatting": "sharegpt", "formatting_sharegpt": {"tags": {"role_tag": "role", "content_tag": "content", "user_tag": "user", "assistant_tag": "assistant"}}} Defensive patterns
Strategy: validation
Validate before calling
from llamafactory.data.converter import DATASET_CONVERTERS
fmt = dataset_attr.formatting
if fmt not in DATASET_CONVERTERS:
raise ValueError(f"formatting '{fmt}' invalid; choose from {sorted(DATASET_CONVERTERS)}") Prevention
- Validate dataset_info.json entries against the converter registry before launching training.
- Prefer built-in formatting names unless a plugin is deliberately imported.
When it happens
Trigger: A dataset_info.json entry with formatting: "chatml" (or any unregistered name) passed to align_dataset/get_converter; a typo like 'sharegpt ' or 'OpenAI'; relying on a plugin converter that was never imported in the current process.
Common situations: Hand-written dataset_info.json entries; plugin converters that require an explicit import of the plugin module; upgrading LlamaFactory and assuming a removed/renamed formatting value still exists.
Related errors
- Dataset converter {name} already exists.
- Unsupported model type: {getattr(config, 'model_type')}.
- Unknown mixing strategy: {data_args.mix_strategy}.
- Cannot specify `val_size` if `eval_dataset` is not None.
- Unsupported protocol in path: {path}. Use 's3://' or 'gs://'
AI-assisted analysis of hiyouga/LlamaFactory@f28afaf635 (2026-08-14).
Data as JSON: /api/errors/3c6cc7dcfd8a9502.
Report an issue: GitHub.