unslothai/unsloth · error · RuntimeError

GGUF conversion produced no files: no .gguf outputs for {abs

Error message

GGUF conversion produced no files: no .gguf outputs for {abs_save_dir}

What it means

RuntimeError raised after the relocation loop when no .gguf files were produced (or none remained after filtering imatrix files): relocated_ggufs is empty, so the export cannot deliver the requested GGUF artifact set to abs_save_dir. The message names the destination directory to make logs actionable.

Source

Thrown at studio/backend/core/export/export.py:1186

                    produced.update(Path(f) for f in _reported_gguf_files(result) or [])
                    produced = {p for p in produced if not _is_imatrix(p, imatrix_path)}
                    modelfiles = {p for p in model_tmp_path.rglob("Modelfile") if p.is_file()}
                    reported_modelfile = reported.get("modelfile_location")
                    if reported_modelfile and Path(reported_modelfile).is_file():
                        modelfiles.add(Path(os.path.abspath(os.fspath(reported_modelfile))))

                    relocated_ggufs = []
                    for src in sorted(produced):
                        if src.is_symlink():
                            raise RuntimeError(
                                f"GGUF conversion produced a symlink, refusing to relocate it: {src}"
                            )
                        dest = os.path.join(abs_save_dir, src.name)
                        shutil.move(str(src), dest)
                        relocated_ggufs.append(dest)
                        logger.info(f"Relocated GGUF: {src.name} → {abs_save_dir}/")
                    if not relocated_ggufs:
                        raise RuntimeError(
                            "GGUF conversion produced no files: no .gguf outputs for "
                            f"{abs_save_dir}"
                        )

                    if modelfiles:
                        modelfile = sorted(modelfiles)[0]
                        if modelfile.is_symlink():
                            raise RuntimeError(
                                "GGUF conversion produced a symlinked Modelfile, "
                                f"refusing to relocate it: {modelfile}"
                            )
                        # Optional artifact: unsloth generates it best-effort, so a locked or
                        # read-only destination must not fail an export whose GGUFs all landed.
                        try:
                            shutil.move(str(modelfile), os.path.join(abs_save_dir, "Modelfile"))
                            logger.info(f"Relocated Modelfile → {abs_save_dir}/")
                        except OSError as exception:
                            logger.warning(f"Could not relocate the Modelfile: {exception}")

View on GitHub (pinned to 203007d190)

Solutions

  1. Inspect the conversion step's own logs/stderr for the real failure (out of space, OOM kill, unsupported config).
  2. Confirm disk space in the temp/model directory is sufficient for the quantized output.
  3. Verify the model/quant combination is supported by the converter version in use; upgrade if the reporting layout changed.
  4. Check that the temp model path you expect outputs under is the one the converter actually wrote to.
Defensive patterns

Strategy: validation

Validate before calling

ggufs = [p for p in Path(model_tmp).rglob('*.gguf') if p.is_file() and not is_imatrix(p)]
assert ggufs, 'conversion produced no GGUF outputs; check converter logs'

Try / catch

try:
    export()
except RuntimeError as e:
    if 'produced no files' in str(e):
        capture_converter_logs(); check_disk_space(); report_actionable_error()

Prevention

When it happens

Trigger: The conversion step exited without writing any *.gguf into the temp model dir and reported no gguf file locations; all produced files were imatrix artifacts, which are filtered out; the converter wrote outputs somewhere outside the scanned temp tree; conversion crashed silently but the pipeline continued.

Common situations: Unsupported model architecture or quantization combination causing the converter to skip output; disk-full in the temp dir during conversion; version mismatch between converter and expected output layout; path/reporting changes in the converter so rglob('*.gguf') misses outputs.

Related errors


AI-assisted analysis of unslothai/unsloth@203007d190 (2026-08-15). Data as JSON: /api/errors/44362e1230dd670e. Report an issue: GitHub.