{"record":{"id":"44362e1230dd670e","repo":"unslothai/unsloth","slug":"gguf-conversion-produced-no-files-no-gguf-output","errorCode":null,"errorMessage":"GGUF conversion produced no files: no .gguf outputs for {abs_save_dir}","messagePattern":"GGUF conversion produced no files: no \\.gguf outputs for (.+?)","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"studio/backend/core/export/export.py","lineNumber":1186,"sourceCode":"                    produced.update(Path(f) for f in _reported_gguf_files(result) or [])\n                    produced = {p for p in produced if not _is_imatrix(p, imatrix_path)}\n                    modelfiles = {p for p in model_tmp_path.rglob(\"Modelfile\") if p.is_file()}\n                    reported_modelfile = reported.get(\"modelfile_location\")\n                    if reported_modelfile and Path(reported_modelfile).is_file():\n                        modelfiles.add(Path(os.path.abspath(os.fspath(reported_modelfile))))\n\n                    relocated_ggufs = []\n                    for src in sorted(produced):\n                        if src.is_symlink():\n                            raise RuntimeError(\n                                f\"GGUF conversion produced a symlink, refusing to relocate it: {src}\"\n                            )\n                        dest = os.path.join(abs_save_dir, src.name)\n                        shutil.move(str(src), dest)\n                        relocated_ggufs.append(dest)\n                        logger.info(f\"Relocated GGUF: {src.name} → {abs_save_dir}/\")\n                    if not relocated_ggufs:\n                        raise RuntimeError(\n                            \"GGUF conversion produced no files: no .gguf outputs for \"\n                            f\"{abs_save_dir}\"\n                        )\n\n                    if modelfiles:\n                        modelfile = sorted(modelfiles)[0]\n                        if modelfile.is_symlink():\n                            raise RuntimeError(\n                                \"GGUF conversion produced a symlinked Modelfile, \"\n                                f\"refusing to relocate it: {modelfile}\"\n                            )\n                        # Optional artifact: unsloth generates it best-effort, so a locked or\n                        # read-only destination must not fail an export whose GGUFs all landed.\n                        try:\n                            shutil.move(str(modelfile), os.path.join(abs_save_dir, \"Modelfile\"))\n                            logger.info(f\"Relocated Modelfile → {abs_save_dir}/\")\n                        except OSError as exception:\n                            logger.warning(f\"Could not relocate the Modelfile: {exception}\")","sourceCodeStart":1168,"sourceCodeEnd":1204,"githubUrl":"https://github.com/unslothai/unsloth/blob/203007d19051dcd2ae33876786d117c99f6b0368/studio/backend/core/export/export.py#L1168-L1204","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"ggufs = [p for p in Path(model_tmp).rglob('*.gguf') if p.is_file() and not is_imatrix(p)]\nassert ggufs, 'conversion produced no GGUF outputs; check converter logs'","typeGuard":null,"tryCatchPattern":"try:\n    export()\nexcept RuntimeError as e:\n    if 'produced no files' in str(e):\n        capture_converter_logs(); check_disk_space(); report_actionable_error()","preventionTips":["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."],"tags":["export","gguf","conversion","studio"],"backgroundTag":null,"analyzedSha":"203007d19051dcd2ae33876786d117c99f6b0368","analyzedAt":"2026-08-15T02:48:39.846Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}