{
  "schema_version": 1,
  "title": "Nodus vs. Modal L4 training pilot",
  "observed_at": "2026-10-11T22:22:20.388265+00:00",
  "measurement_owner": "Nodus Compute",
  "independent_audit": false,
  "currency": "USD",
  "scope": "One seed; Qwen2.5-0.5B; L4; native Nodus Jobs versus independent TRL on Modal.",
  "cost_scope": "Nodus final Job compute charges include boot, execution, output upload and teardown. Modal gross usage includes resource billing and reported export egress. Credits do not make this usage free. Residual storage/control-plane charges, if billed later, are not asserted to be finalized; the $1 preparation/other-cost reserve remains available.",
  "all_in_invoice_finalized": false,
  "claims": {
    "observed_successful_attempt_cost_advantage": true,
    "identical_model_weights_per_stage": true,
    "general_platform_superiority_established": false,
    "algorithmic_speedup_established": false,
    "run_variance_estimated": false
  },
  "stages": [
    {
      "stage": "sft",
      "label": "Fine-tuning",
      "accepted_runs_per_platform": 1,
      "seed": 11,
      "nodus": {
        "recorded_successful_attempt_usd": "0.048696",
        "trainer_runtime_seconds": 112.7904,
        "submit_to_local_export_seconds": 289.9069790840149,
        "charge_segments": {
          "bootSeconds": 9,
          "bootUSD": "0.001767",
          "runningSeconds": 191,
          "runningUSD": "0.036626",
          "teardownSeconds": 52,
          "teardownUSD": "0.010303"
        },
        "gpu": "NVIDIA L4",
        "gpu_memory_bytes_reported": 23659151360,
        "baseline": {
          "rows": 872,
          "correct": 767,
          "valid": 872,
          "accuracy": 0.8795871559633027,
          "format_validity": 1.0,
          "seconds": 8.106563973240554
        },
        "final": {
          "rows": 872,
          "correct": 800,
          "valid": 872,
          "accuracy": 0.9174311926605505,
          "format_validity": 1.0,
          "seconds": 6.2124270889908075
        },
        "global_step": 160,
        "training_metrics": {
          "epoch": 1.25,
          "total_flos": 224565317763072.0,
          "train_loss": 0.1797315314412117,
          "train_runtime": 112.7904,
          "train_samples_per_second": 22.697,
          "train_steps_per_second": 1.419
        },
        "export_files": {
          "chat_template.jinja": {
            "sha256": "44d5f08f3f72b837eaad09f13a54c1f9f4eb58d75240334548b7fd52a5437fa5",
            "bytes": 2427
          },
          "config.json": {
            "sha256": "d47d8b55c0c4e67944460670bbdfe93fe6fc8beef94d652badde9b0ffa998eec",
            "bytes": 1307
          },
          "generation_config.json": {
            "sha256": "6cd15aeac563e6e203370fc0cbd3c824a07deb6fd20f21d3cd2f3eb1be7c4a06",
            "bytes": 149
          },
          "model.safetensors": {
            "sha256": "ed8221dce0633258075966bda033cd027af573725dc06744aff8c2faa821e1c0",
            "bytes": 988097824
          },
          "tokenizer.json": {
            "sha256": "3fd169731d2cbde95e10bf356d66d5997fd885dd8dbb6fb4684da3f23b2585d8",
            "bytes": 11421892
          },
          "tokenizer_config.json": {
            "sha256": "cbea7bca9904d56693d2226b00fd564e3be053609d1e50f8f1885510f0f6e790",
            "bytes": 695
          },
          "training_args.bin": {
            "sha256": "44ef5691e080e2007d91bf6ce5db3465a2c5980acb43d76250a91692c88ddd58",
            "bytes": 5713
          }
        },
        "worker_started_utc": "2026-10-11T22:07:13.223625+00:00",
        "worker_finished_utc": "2026-10-11T22:09:39.488466+00:00",
        "worker_sha256": "7f82a34bba0bbbe937e19d1cecc3a01005291ed0ec1bcc7a86491e1037ab78aa"
      },
      "modal": {
        "recorded_successful_attempt_usd": "0.14746756",
        "trainer_runtime_seconds": 174.5328,
        "submit_to_local_export_seconds": 296.6800489425659,
        "gpu": "NVIDIA L4",
        "gpu_memory_bytes_reported": 23689363456,
        "baseline": {
          "rows": 872,
          "correct": 767,
          "valid": 872,
          "accuracy": 0.8795871559633027,
          "format_validity": 1.0,
          "seconds": 12.195245545999999
        },
        "final": {
          "rows": 872,
          "correct": 800,
          "valid": 872,
          "accuracy": 0.9174311926605505,
          "format_validity": 1.0,
          "seconds": 6.888065485999988
        },
        "global_step": 160,
        "training_metrics": {
          "train_runtime": 174.5328,
          "train_samples_per_second": 14.668,
          "train_steps_per_second": 0.917,
          "train_loss": 0.1797315314412117,
          "epoch": 1.25
        },
        "export_files": {
          "chat_template.jinja": {
            "sha256": "44d5f08f3f72b837eaad09f13a54c1f9f4eb58d75240334548b7fd52a5437fa5",
            "bytes": 2427
          },
          "config.json": {
            "sha256": "d47d8b55c0c4e67944460670bbdfe93fe6fc8beef94d652badde9b0ffa998eec",
            "bytes": 1307
          },
          "generation_config.json": {
            "sha256": "6cd15aeac563e6e203370fc0cbd3c824a07deb6fd20f21d3cd2f3eb1be7c4a06",
            "bytes": 149
          },
          "model.safetensors": {
            "sha256": "ed8221dce0633258075966bda033cd027af573725dc06744aff8c2faa821e1c0",
            "bytes": 988097824
          },
          "tokenizer.json": {
            "sha256": "3fd169731d2cbde95e10bf356d66d5997fd885dd8dbb6fb4684da3f23b2585d8",
            "bytes": 11421892
          },
          "tokenizer_config.json": {
            "sha256": "cbea7bca9904d56693d2226b00fd564e3be053609d1e50f8f1885510f0f6e790",
            "bytes": 695
          },
          "training_args.bin": {
            "sha256": "2613bc4b6fbfb9d54345798f6d225973d4081061a812f81656f8a48ef7a49a01",
            "bytes": 5713
          }
        },
        "worker_started_utc": "2026-10-11T22:00:02.533687+00:00",
        "worker_finished_utc": "2026-10-11T22:03:39.744451+00:00",
        "worker_sha256": "984b78e69b0eec63f4d955beed6e81f913fa55edfbe93a61dd8e568b0cb3f444"
      },
      "successful_attempt_charge_reduction_percent": 66.9785002206587,
      "trainer_time_reduction_percent": 35.37581474656912,
      "matching_evidence": {
        "model_revision": true,
        "input_hashes": true,
        "versions": true,
        "training_tokens_sha256": true,
        "model_weights_sha256": true
      },
      "training_tokens_sha256": "e667ee08ad3775297e932a537610492137d00ae489e33be022b770dc8575d39e",
      "model_weights_sha256": "ed8221dce0633258075966bda033cd027af573725dc06744aff8c2faa821e1c0"
    },
    {
      "stage": "pretrain",
      "label": "Continued pretraining",
      "accepted_runs_per_platform": 1,
      "seed": 11,
      "nodus": {
        "recorded_successful_attempt_usd": "0.121164",
        "trainer_runtime_seconds": 119.0141,
        "submit_to_local_export_seconds": 660.4610600471497,
        "charge_segments": {
          "bootSeconds": 215,
          "bootUSD": "0.041332",
          "runningSeconds": 330,
          "runningUSD": "0.063349",
          "teardownSeconds": 85,
          "teardownUSD": "0.016483"
        },
        "gpu": "NVIDIA L4",
        "gpu_memory_bytes_reported": 23659151360,
        "baseline": {
          "rows": 1833,
          "tokens": 286056,
          "nll": 3.0445657956752545,
          "perplexity": 21.000910536727822,
          "seconds": 90.02046262496151
        },
        "final": {
          "rows": 1833,
          "tokens": 286056,
          "nll": 2.7988584030541586,
          "perplexity": 16.425884324181443,
          "seconds": 92.11948666500393
        },
        "global_step": 128,
        "training_metrics": {
          "entropy": 2.631828472018242,
          "epoch": 2.0,
          "mean_token_accuracy": 0.4810893638059497,
          "num_tokens": 327954.0,
          "total_flos": 1011737878035456.0,
          "train_loss": 2.6914219558238983,
          "train_runtime": 119.0141,
          "train_samples_per_second": 17.208,
          "train_steps_per_second": 1.076
        },
        "export_files": {
          "chat_template.jinja": {
            "sha256": "44d5f08f3f72b837eaad09f13a54c1f9f4eb58d75240334548b7fd52a5437fa5",
            "bytes": 2427
          },
          "config.json": {
            "sha256": "d47d8b55c0c4e67944460670bbdfe93fe6fc8beef94d652badde9b0ffa998eec",
            "bytes": 1307
          },
          "generation_config.json": {
            "sha256": "6cd15aeac563e6e203370fc0cbd3c824a07deb6fd20f21d3cd2f3eb1be7c4a06",
            "bytes": 149
          },
          "model.safetensors": {
            "sha256": "066d3ad0d18989b4d0aeb80d744969dfa9cb927508f4db568fea8800fbbfe7f2",
            "bytes": 988097824
          },
          "tokenizer.json": {
            "sha256": "3fd169731d2cbde95e10bf356d66d5997fd885dd8dbb6fb4684da3f23b2585d8",
            "bytes": 11421892
          },
          "tokenizer_config.json": {
            "sha256": "cbea7bca9904d56693d2226b00fd564e3be053609d1e50f8f1885510f0f6e790",
            "bytes": 695
          },
          "training_args.bin": {
            "sha256": "24c6c673f7963d31083f59a3749fd28170e15c4dba1d0696bfb60493a10b8142",
            "bytes": 5713
          }
        },
        "worker_started_utc": "2026-10-11T22:12:10.677856+00:00",
        "worker_finished_utc": "2026-10-11T22:17:31.985942+00:00",
        "worker_sha256": "7f82a34bba0bbbe937e19d1cecc3a01005291ed0ec1bcc7a86491e1037ab78aa"
      },
      "modal": {
        "recorded_successful_attempt_usd": "0.21090282",
        "trainer_runtime_seconds": 140.5328,
        "submit_to_local_export_seconds": 463.96136593818665,
        "gpu": "NVIDIA L4",
        "gpu_memory_bytes_reported": 23659151360,
        "baseline": {
          "rows": 1833,
          "tokens": 286056,
          "nll": 3.0445657956752545,
          "perplexity": 21.000910536727822,
          "seconds": 103.552529276
        },
        "final": {
          "rows": 1833,
          "tokens": 286056,
          "nll": 2.7988584030541586,
          "perplexity": 16.425884324181443,
          "seconds": 98.950409718
        },
        "global_step": 128,
        "training_metrics": {
          "train_runtime": 140.5328,
          "train_samples_per_second": 14.573,
          "train_steps_per_second": 0.911,
          "train_loss": 2.6914219558238983,
          "entropy": 2.631828472018242,
          "num_tokens": 327954.0,
          "mean_token_accuracy": 0.4810893638059497,
          "epoch": 2.0
        },
        "export_files": {
          "chat_template.jinja": {
            "sha256": "44d5f08f3f72b837eaad09f13a54c1f9f4eb58d75240334548b7fd52a5437fa5",
            "bytes": 2427
          },
          "config.json": {
            "sha256": "d47d8b55c0c4e67944460670bbdfe93fe6fc8beef94d652badde9b0ffa998eec",
            "bytes": 1307
          },
          "generation_config.json": {
            "sha256": "6cd15aeac563e6e203370fc0cbd3c824a07deb6fd20f21d3cd2f3eb1be7c4a06",
            "bytes": 149
          },
          "model.safetensors": {
            "sha256": "066d3ad0d18989b4d0aeb80d744969dfa9cb927508f4db568fea8800fbbfe7f2",
            "bytes": 988097824
          },
          "tokenizer.json": {
            "sha256": "3fd169731d2cbde95e10bf356d66d5997fd885dd8dbb6fb4684da3f23b2585d8",
            "bytes": 11421892
          },
          "tokenizer_config.json": {
            "sha256": "cbea7bca9904d56693d2226b00fd564e3be053609d1e50f8f1885510f0f6e790",
            "bytes": 695
          },
          "training_args.bin": {
            "sha256": "3ff65870fe9a3abbaf59e5fc80340289ebd7d4053a580da91a6993a54157120a",
            "bytes": 5713
          }
        },
        "worker_started_utc": "2026-10-10T22:14:25.463562+00:00",
        "worker_finished_utc": "2026-10-10T22:20:26.864276+00:00",
        "worker_sha256": "01d264efe76c4616a0dfe8d6f7144fd9a6686d0612e57b572c36cbe47ea2af2b"
      },
      "successful_attempt_charge_reduction_percent": 42.54984357250415,
      "trainer_time_reduction_percent": 15.312226042603584,
      "matching_evidence": {
        "model_revision": true,
        "input_hashes": true,
        "versions": true,
        "training_tokens_sha256": true,
        "model_weights_sha256": true
      },
      "training_tokens_sha256": "eec2216d55db614c931ad39acb4c561ac78f5f2cebc4dcf76941adc59da8fc43",
      "model_weights_sha256": "066d3ad0d18989b4d0aeb80d744969dfa9cb927508f4db568fea8800fbbfe7f2"
    }
  ],
  "campaign": {
    "attempts": [
      {
        "id": "nodus_sft_wrapper_failure",
        "execution_platform": "Nodus",
        "stage": "sft",
        "role": "failed_before_training",
        "recorded_charge_usd": "0.06230800"
      },
      {
        "id": "nodus_sft_corrected",
        "execution_platform": "Nodus",
        "stage": "sft",
        "role": "headline_successful_attempt",
        "recorded_charge_usd": "0.04869600"
      },
      {
        "id": "nodus_pretrain",
        "execution_platform": "Nodus",
        "stage": "pretrain",
        "role": "headline_successful_attempt",
        "recorded_charge_usd": "0.12116400"
      },
      {
        "id": "modal_sft_original_export",
        "execution_platform": "Modal",
        "stage": "sft",
        "role": "superseded_export_configuration",
        "recorded_charge_usd": "0.24482145"
      },
      {
        "id": "modal_sft_corrected",
        "execution_platform": "Modal",
        "stage": "sft",
        "role": "headline_successful_attempt",
        "recorded_charge_usd": "0.14746756"
      },
      {
        "id": "modal_pretrain",
        "execution_platform": "Modal",
        "stage": "pretrain",
        "role": "headline_successful_attempt",
        "recorded_charge_usd": "0.21090282"
      },
      {
        "id": "nodus_trainer_on_modal_sft",
        "execution_platform": "Modal",
        "stage": "sft",
        "role": "software_diagnostic_not_native_nodus",
        "recorded_charge_usd": "0.15662129"
      },
      {
        "id": "nodus_trainer_on_modal_pretrain",
        "execution_platform": "Modal",
        "stage": "pretrain",
        "role": "software_diagnostic_not_native_nodus",
        "recorded_charge_usd": "0.20472518"
      }
    ],
    "recorded_usage_usd": "1.19670630",
    "authorization_usd": "5.00",
    "per_live_test_cap_usd": "1.00",
    "other_cost_reserve_usd": "1.00",
    "nodus_sft_including_failed_attempt_usd": "0.111004",
    "nodus_sft_including_failed_attempt_vs_corrected_modal_reduction_percent": 24.726495779817608,
    "aggregate_platform_totals_are_not_comparable": true,
    "credits": "Gross charges before promotional-credit offsets; not a statement of cash paid."
  },
  "timing_definitions": {
    "trainer": "training_metrics.train_runtime on both platforms, not outer training_seconds wrappers.",
    "nodus_delivery": "Submission to locally downloaded, verified export; waits for final billing before download.",
    "modal_delivery": "Submission to local export; usage receipt retrieved separately.",
    "boundaries_identical": false,
    "native_charge_segment_seconds": "Recorded integer segment durations; do not infer exact rates from rounded seconds."
  },
  "cleanup": {
    "observed_at": "2026-10-11T22:20:46.763688+00:00",
    "zero_live_allocations": true,
    "zero_budget_holds": true,
    "zero_account_holds": true,
    "all_native_nodes_gone": true,
    "remaining_project_jobs": 0,
    "all_five_modal_apps_stopped": true,
    "native_cost_matches_budget_and_metered_usage": true,
    "allocation_detail_limitation": "Ops allocation detail endpoint returns a decoding error. Teardown is checked using provider live-allocation counts, node states, final Job costs and released holds."
  },
  "provenance": {
    "native_platform_release": "v0.1.27",
    "native_trainer_source_commit": "a102637041bb657bb5a2b1ba1639f7191363ab63",
    "source_report_sha256": {
      "comparison.json": "0b9489948540f9f08a43314ae8e9e0ed4c628d202ddebf682fd4f829fc72d771",
      "native-sft-2-result.json": "be5570112097f26cd63429d86c34f2aa4fba38d70ea190a1da8b5d3505679e2a",
      "native-pretrain-result.json": "125e77a120ba976ade96734c286731ee6fa609cfe7365a15bfc608bba581ac2a",
      "modal-sft-result.json": "d0dcc56c951d33a109b835003ff70de799bc779345aa6e46cfb4d98058e66f6d",
      "modal-pretrain-result.json": "c1fdfb3e6ac475acc3f7388d9dc92a3a87410d0824fcce19c8e8ded78f8007f5"
    },
    "sanitization": "Allowlisted measurements; account identifiers, credentials and backend supply identifiers are omitted. Source digests identify private records, not public download URLs."
  }
}
