{
  "title": "Glasshouse Qwen LoRA same-instance wall-clock sweep with 7B follow-up",
  "date": "2026-05-17",
  "scope": "same-allocation Qwen 0.5B and Qwen 7B LoRA wall-clock overhead on RunPod Secure GPUs",
  "provider": "runpod",
  "sameAllocation": true,
  "methodology": {
    "comparison": "Raw and Glasshouse-protected segments ran sequentially on the same provider allocation.",
    "durationControl": "Each row used an explicit wall-clock target in seconds.",
    "protectedLifecycle": [
      "attestation",
      "gated key release",
      "protected LoRA training",
      "evidence recording",
      "zeroized cleanup"
    ],
    "cleanup": {
      "activeRunPodPodsAfterQwen7bRuns": 0,
      "qwen7bPodsChecked": 5,
      "qwen7bCleanupEvidence": "RunPod GraphQL returned no active pods after the checked Qwen 7B test pods were cleaned up, including the 30-minute A4000 row, failed PRO 6000 attempt, and 30-minute H100 repeat."
    },
    "harnessFix": {
      "issue": "A prior step-count duration label was misleading for long rows.",
      "fix": "The payload now honors IMLADRI_MODEL_WORKLOAD_TARGET_SEC and reports targetSec, stepBudget, elapsedSec, steps, and stopReason.",
      "publishedRowsUseWallClockTarget": true
    },
    "stabilityFix": {
      "issue": "The original 60-minute 0.5B row completed lifecycle proof but emitted null final losses and matching adapter digests.",
      "fix": "The rerun used bfloat16, a 5e-5 learning rate, gradient clipping at 1.0, and fail-on-nonfinite checks.",
      "stabilized60mRowClean": true
    }
  },
  "results": [
    {
      "label": "0.5B 15m",
      "model": "Qwen/Qwen2.5-0.5B-Instruct",
      "gpuModel": "NVIDIA GeForce RTX 4090",
      "order": "raw-first",
      "targetSec": 900,
      "rawElapsedSec": 900.351,
      "protectedElapsedSec": 900.449,
      "rawSteps": 9143,
      "protectedSteps": 9065,
      "overheadPct": 0.86,
      "attestation": "verified",
      "runtimeState": "zeroized",
      "cleanModelArtifact": true,
      "rawFinalLoss": 0.00003965291762142442,
      "protectedFinalLoss": 0.000037203550164122134,
      "rawAdapterSha256": "b4d36a0834745df14cb1795144dbe724e39f053d256edc040df3d79b2be1f003",
      "protectedAdapterSha256": "520660edb6460102da5fea8625c9ff3808e55555365eb047c5438be9dff54bd3"
    },
    {
      "label": "0.5B 30m",
      "model": "Qwen/Qwen2.5-0.5B-Instruct",
      "gpuModel": "NVIDIA GeForce RTX 4090",
      "order": "raw-first",
      "targetSec": 1800,
      "rawElapsedSec": 1800.423,
      "protectedElapsedSec": 1800.405,
      "rawSteps": 18121,
      "protectedSteps": 18202,
      "overheadPct": -0.45,
      "attestation": "verified",
      "runtimeState": "zeroized",
      "cleanModelArtifact": true,
      "rawFinalLoss": 0.0001055617249221541,
      "protectedFinalLoss": 0.00018375928630121052,
      "rawAdapterSha256": "567df32f71298a40c8e423668c7c74e7f581ec9a16a679cc96c163370107fec1",
      "protectedAdapterSha256": "0881acc7e59014485d36130e8923cb88baafea96e264a664c623956d5f7e28cf"
    },
    {
      "label": "0.5B 60m",
      "model": "Qwen/Qwen2.5-0.5B-Instruct",
      "gpuModel": "NVIDIA GeForce RTX 3090",
      "order": "raw-first",
      "targetSec": 3600,
      "rawElapsedSec": 3600.629,
      "protectedElapsedSec": 3600.377,
      "rawSteps": 39661,
      "protectedSteps": 39336,
      "overheadPct": 0.81,
      "attestation": "verified",
      "runtimeState": "zeroized",
      "cleanModelArtifact": true,
      "rawFinalLoss": 0.000000034059794984386826,
      "protectedFinalLoss": 0.000000045413056426468756,
      "rawAdapterSha256": "64c46cc6cd8b0a99b3332bad3849efe544df0b0c92186eea137c6751e8776b0c",
      "protectedAdapterSha256": "279216e323ba3e7ab17f4e08018ff2f99ca032f86f9d2475d6cef426eee8c9b0",
      "stabilitySettings": {
        "dtype": "bfloat16",
        "learningRate": 0.00005,
        "gradClip": 1,
        "failOnNonFinite": true
      }
    },
    {
      "label": "7B smoke",
      "model": "Qwen/Qwen2.5-7B-Instruct",
      "gpuModel": "NVIDIA RTX A4000",
      "order": "raw-first",
      "targetSec": 180,
      "rawElapsedSec": 39.689,
      "protectedElapsedSec": 39.924,
      "rawSteps": 256,
      "protectedSteps": 256,
      "overheadPct": 0.59,
      "attestation": "verified",
      "runtimeState": "zeroized",
      "cleanModelArtifact": true,
      "rawFinalLoss": 3.6913115978240967,
      "protectedFinalLoss": 3.597599744796753,
      "rawAdapterSha256": "eaa486847c69e2530aa989150dbca628631df450854f99ca6fbf300931019e47",
      "protectedAdapterSha256": "a7d0ec4093f47758b9158a0bebf69e68b765f660013c51ea6a73badece449d7e",
      "totalParams": 7616878080,
      "trainableAdapterParams": 1261568
    },
    {
      "label": "7B 15m",
      "model": "Qwen/Qwen2.5-7B-Instruct",
      "gpuModel": "NVIDIA RTX A4000",
      "order": "protected-first",
      "targetSec": 900,
      "rawElapsedSec": 900.373,
      "protectedElapsedSec": 900.387,
      "rawSteps": 8452,
      "protectedSteps": 8358,
      "overheadPct": 1.11,
      "attestation": "verified",
      "runtimeState": "zeroized",
      "cleanModelArtifact": true,
      "rawFinalLoss": 0.0000015735579381725984,
      "protectedFinalLoss": 0.0000012993792779525393,
      "rawAdapterSha256": "12632d35fe001a8ce719c6b5ea417a61429a73b310bd1de4163c92a34d6f6753",
      "protectedAdapterSha256": "3f8fea702cd6c3aeb860b0f158fd3c8d5609f8b27a78029a5382af77467cd1cb",
      "totalParams": 7616878080,
      "trainableAdapterParams": 1261568
    },
    {
      "label": "7B 30m",
      "model": "Qwen/Qwen2.5-7B-Instruct",
      "gpuModel": "NVIDIA RTX A4000",
      "order": "protected-first",
      "targetSec": 1800,
      "rawElapsedSec": 1800.435,
      "protectedElapsedSec": 1800.379,
      "rawSteps": 16851,
      "protectedSteps": 16807,
      "overheadPct": 0.26,
      "attestation": "verified",
      "runtimeState": "zeroized",
      "cleanModelArtifact": true,
      "rawFinalLoss": 0.00000014305112472356996,
      "protectedFinalLoss": 0.00000005960463766996327,
      "rawAdapterSha256": "7bbd583188c858cc4608cb98df05e6f5b18431f750925abf689e15f1126cc18b",
      "protectedAdapterSha256": "6c3a1525aef8cd23c52f9fc274d4c8df1966aaec565505261810d00505d1a709",
      "totalParams": 7616878080,
      "trainableAdapterParams": 1261568
    },
    {
      "label": "7B 30m H100",
      "model": "Qwen/Qwen2.5-7B-Instruct",
      "gpuModel": "NVIDIA H100 80GB HBM3",
      "order": "protected-first",
      "targetSec": 1800,
      "rawElapsedSec": 1800.923,
      "protectedElapsedSec": 1801.216,
      "rawSteps": 15305,
      "protectedSteps": 15190,
      "overheadPct": 0.77,
      "attestation": "verified",
      "runtimeState": "zeroized",
      "cleanModelArtifact": true,
      "rawFinalLoss": 0.00000007152556946721234,
      "protectedFinalLoss": 0.00000007152556946721234,
      "rawAdapterSha256": "d8063f11a54340f81bb204abd1b78e2fa40bfcd47438b0ce3641a47e6e3797f9",
      "protectedAdapterSha256": "47c0cc72e80599bedaa29097b992572dc104a280604a83ca05eb01e230dc56b1",
      "totalParams": 7616878080,
      "trainableAdapterParams": 1261568,
      "sameAllocationProviderInstanceId": "redacted",
      "sourceArtifact": "tmp/qwen-7b-h100-final-20260520-152059/qwen-7b-h100-30m-protected-first.json"
    }
  ],
  "interpretation": {
    "headline": "Qwen 7B LoRA now has clean A4000 rows at 0.59%, 1.11%, and 0.26%, plus an H100 30-minute repeat at 0.77%, after the Qwen 0.5B duration sweep measured 0.86%, -0.45%, and 0.81%.",
    "negativeOverheadFraming": "The -0.45% 0.5B row means measured protected throughput was slightly higher inside same-allocation runtime noise. It is not a claim that protection makes training inherently faster.",
    "caveatResolution": "The original 60-minute 0.5B caveat was fixed by rerunning with stable training settings; the replacement row has finite losses and distinct adapter digests.",
    "qwen7bScope": "The 7B result now includes sustained 15-minute and 30-minute LoRA rows on A4000 plus a 30-minute H100 repeat with finite losses and distinct adapter digests. It is not yet an hour-long 7B distribution or a customer fine-tune benchmark.",
    "nextStep": "Extend the H100 7B row to 60 minutes when stock and budget allow, then gather multiple H100 samples and move to a customer-style fine-tune."
  },
  "sourceArtifacts": [
    "tmp/qwen-05b-wallclock-sweep-runpod-4090-20260516-175923/qwen-05b-same-instance-runpod-4090-wallclock-15m.json",
    "tmp/qwen-05b-wallclock-sweep-runpod-4090-20260516-175923/qwen-05b-same-instance-runpod-4090-wallclock-30m.json",
    "tmp/qwen-05b-stable-60m-runpod-auto-secure-20260517-140829.json",
    "tmp/qwen-7b-lora-smoke-runpod-auto-secure-20260517-161957.json",
    "tmp/qwen-7b-lora-15m-runpod-auto-secure-protected-first-20260517-165414.json",
    "tmp/qwen-7b-lora-30m-runpod-a4000-secure-protected-first-20260517-180045.json",
    "tmp/qwen-7b-h100-final-20260520-152059/qwen-7b-h100-30m-protected-first.json"
  ],
  "redactionPolicy": [
    "No provider API keys",
    "No temporary tunnel URLs",
    "No encrypted payload paths",
    "No local raw logs"
  ]
}
