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

  1. Set formatting to one of alpaca | sharegpt | openai in the dataset_info entry, matching your data schema.
  2. Fix typos/whitespace/case in the formatting field.
  3. 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

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


AI-assisted analysis of hiyouga/LlamaFactory@f28afaf635 (2026-08-14). Data as JSON: /api/errors/3c6cc7dcfd8a9502. Report an issue: GitHub.