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
- Inspect the conversion step's own logs/stderr for the real failure (out of space, OOM kill, unsupported config).
- Confirm disk space in the temp/model directory is sufficient for the quantized output.
- Verify the model/quant combination is supported by the converter version in use; upgrade if the reporting layout changed.
- 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
- Fail loudly on converter stderr rather than continuing to relocation.
- Pre-check free disk space for quantized outputs.
- Verify model/quant support for the converter version in use.
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
- GGUF conversion produced a symlink, refusing to relocate it:
- GGUF conversion produced a symlinked Modelfile, refusing to
- A transformers installation is replacing the latest sidecar;
- Subprocess error: {error_msg}
- Timeout waiting for '{expected_type}' response after {timeou
AI-assisted analysis of unslothai/unsloth@203007d190 (2026-08-15).
Data as JSON: /api/errors/44362e1230dd670e.
Report an issue: GitHub.