{"record":{"id":"1ce5da5bb5b4c1cb","repo":"unslothai/unsloth","slug":"failed-to-export-merged-model","errorCode":null,"errorMessage":"Failed to export merged model","messagePattern":"Failed to export merged model","errorType":"http","errorClass":"HTTPException","httpStatus":500,"severity":"error","filePath":"studio/backend/routes/export.py","lineNumber":344,"sourceCode":"\n        if not success:\n            raise HTTPException(status_code = 400, detail = message)\n\n        return ExportOperationResponse(\n            success = True,\n            message = message,\n            details = await asyncio.to_thread(_export_details, output_path, refresh_index = True),\n        )\n    except HTTPException:\n        raise\n    except Exception as e:\n        from utils.transformers_version import SidecarSwapInProgress\n\n        if isinstance(e, SidecarSwapInProgress):\n            # Expected loss of the race against a sidecar install: retryable 409.\n            raise HTTPException(status_code = 409, detail = str(e))\n        logger.error(f\"Error exporting merged model: {e}\", exc_info = True)\n        raise HTTPException(\n            status_code = 500,\n            detail = \"Failed to export merged model\",\n        )\n\n\n@router.post(\"/export/base\", response_model = ExportOperationResponse)\nasync def export_base_model(\n    request: ExportBaseModelRequest, current_subject: str = Depends(get_current_subject)\n):\n    \"\"\"Export a non-PEFT base model, optionally pushing to Hub.\n\n    Wraps ExportBackend.export_base_model.\n    \"\"\"\n    try:\n        await _ensure_export_supported()\n        backend = get_export_backend()\n        success, message, output_path = await asyncio.to_thread(\n            backend.export_base_model,","sourceCodeStart":326,"sourceCodeEnd":362,"githubUrl":"https://github.com/unslothai/unsloth/blob/203007d19051dcd2ae33876786d117c99f6b0368/studio/backend/routes/export.py#L326-L362","documentation":"Catch-all HTTP 500 for export_merged_model: a non-HTTPException, non-SidecarSwapInProgress exception was raised during the merge (typically inside the export worker). The traceback is logged as 'Error exporting merged model'; the client sees only the generic message.","triggerScenarios":"OOM during merge, disk-full while writing the output directory, safetensors save errors, or unexpected transformers exceptions during merge_and_unload.","commonSituations":"Merging large adapters on memory-constrained hosts; output directory on a full disk; transformers version incompatibility with the adapter.","solutions":["Read the server log traceback for 'Error exporting merged model'.","Free memory (cleanup, close other processes) and retry, or export in a smaller dtype/4-bit.","Ensure the save directory exists on a volume with sufficient free space."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"await assertDiskSpace(saveDirectory, estimatedMergeSize);","typeGuard":null,"tryCatchPattern":"try {\n  await api.post('/export/merged', body);\n} catch (e) {\n  if (e.status === 500) captureServerLogContext('Error exporting merged model');\n  throw e;\n}","preventionTips":["Free memory and verify disk space before large merges.","Check server logs for the real traceback on any export 500."],"tags":["export","http-500","merge","logging"],"backgroundTag":null,"analyzedSha":"203007d19051dcd2ae33876786d117c99f6b0368","analyzedAt":"2026-08-15T02:48:39.846Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}