Medtech Model Evidence Export to MLflow
Purpose
Mirror an existing medical-inference result or evidence pack into MLflow after
the run and emit the export_result JSON contract. Keep the original evidence
pack as the source of truth. Training skills should add MLflow inside their
training loops instead.
Instructions
- Run
scripts/export_evidence_pack.py in the default dry-run mode.
- Inspect
params, metrics, artifact_plan, and mlflow.note.content.
- Choose
--mode local or --mode databricks only after checking the target.
- Keep
--artifact-policy metadata unless the target is approved for images.
- For
preview or all in a live mode, also pass
--confirm-medical-artifact-upload.
- Keep
--source-ref, --note, config filenames, and artifact filenames free
of patient or secret identifiers; always review the dry-run output first.
Hosts with a script helper can use
run_script("scripts/export_evidence_pack.py", args=["PACK_OR_RESULT", "--mode", "dry-run"]).
Available Scripts
| Script |
Purpose |
Arguments |
scripts/export_evidence_pack.py |
Export post-hoc inference evidence through MLflow. |
PACK_OR_RESULT --mode dry-run --artifact-policy metadata |
Prerequisites
- Python 3.10+.
mlflow>=2.10,<4 for local or databricks mode.
numpy>=1.24,<3 and nibabel>=4,<6 for NIfTI quality metrics and previews.
MLFLOW_TRACKING_URI may select a caller-managed tracking server.
- Databricks mode uses the caller's
DATABRICKS_HOST, DATABRICKS_TOKEN, or
configured Databricks profile. The declared network endpoint is
https://<caller-provided-mlflow-or-databricks-workspace>; Docker and GPU
are not required.
- Local mode may write the MLflow store under
<current-working-directory>/mlruns.
Examples
Preview the export without contacting MLflow:
python skills/medtech-model-evidence-export/scripts/export_evidence_pack.py \
runs/inference_pack --mode dry-run --artifact-policy metadata
Export a direct NV-Generate result with reproducibility metadata:
python skills/medtech-model-evidence-export/scripts/export_evidence_pack.py \
runs/nv-generate/result.json \
--mode local \
--experiment-name medical-ai-inference \
--config configs/chest_lung_tumor.json \
--seed 0 \
--source-ref git:61c4ec709b84cad468852243c48e250bec732074
Log downsampled slice previews, but not raw NIfTI files:
python skills/medtech-model-evidence-export/scripts/export_evidence_pack.py \
runs/nv-generate/result.json \
--mode databricks \
--experiment-name /Shared/medical-ai-inference \
--artifact-policy preview \
--confirm-medical-artifact-upload
--artifact-policy all additionally uploads discovered or explicitly supplied
NIfTI images and masks, subject to --max-artifact-mb. Use --image and
--mask when paths are not present in the result JSON.
The exporter logs:
- scalar run and quality metrics, including sampled HU mean/std/min/max for CT
(generic intensity statistics otherwise), a documented intensity-SNR
heuristic, mask foreground percentage, and mapped tumor volume percentage
when a tumor label mapping is available;
- generation parameters, model/checkpoint identity, RNG seed, and recipe hash;
- source config digest or
--source-ref, plus a prompt digest when present;
mlflow.note.content with a short human-readable run summary;
- a sanitized metadata bundle by default, optional PNG slice previews, and
raw image/mask artifacts only under the explicit
all policy.
Limitations
- This is post-hoc inference export, not live training-curve tracking.
- Global intensity SNR and downsampled volume statistics are engineering
checks, not image-quality or clinical-performance claims.
- Preview and raw artifacts may contain sensitive medical information. The
caller must approve the destination and data policy before upload.
- The exporter does not evaluate model quality, register models, or alter the
source evidence pack.
Troubleshooting
| Error |
Cause |
Fix |
| Evidence source not recognized |
No direct result JSON or pack manifest.json. |
Pass the result file, evidence-pack directory, or trusted-run root. |
| MLflow import fails |
Live mode lacks the declared package. |
Install mlflow>=2.10,<4 or use --mode dry-run. |
| Preview/all confirmation error |
A live image upload was not acknowledged. |
Review the destination, then pass --confirm-medical-artifact-upload. |
| Referenced image not found |
Result paths moved after inference. |
Pass current paths with --image and --mask. |
1---2name: medtech-model-evidence-export3description: Exports sanitized metadata, parameters, reproducibility details, quality metrics, and optional review artifacts from Medical AI inference runs or evidence packs to MLflow. Use after inference, including NV-Generate runs; not for live training tracking, model registration, or clinical use.4license: Apache-2.05---67# Medtech Model Evidence Export to MLflow89## Purpose1011Mirror an existing medical-inference result or evidence pack into MLflow after12the run and emit the `export_result` JSON contract. Keep the original evidence13pack as the source of truth. Training skills should add MLflow inside their14training loops instead.1516## Instructions17181. Run `scripts/export_evidence_pack.py` in the default `dry-run` mode.192. Inspect `params`, `metrics`, `artifact_plan`, and `mlflow.note.content`.203. Choose `--mode local` or `--mode databricks` only after checking the target.214. Keep `--artifact-policy metadata` unless the target is approved for images.225. For `preview` or `all` in a live mode, also pass23 `--confirm-medical-artifact-upload`.246. Keep `--source-ref`, `--note`, config filenames, and artifact filenames free25 of patient or secret identifiers; always review the dry-run output first.2627Hosts with a script helper can use28`run_script("scripts/export_evidence_pack.py", args=["PACK_OR_RESULT", "--mode", "dry-run"])`.2930## Available Scripts3132| Script | Purpose | Arguments |33|---|---|---|34| `scripts/export_evidence_pack.py` | Export post-hoc inference evidence through MLflow. | `PACK_OR_RESULT --mode dry-run --artifact-policy metadata` |3536## Prerequisites3738- Python 3.10+.39- `mlflow>=2.10,<4` for `local` or `databricks` mode.40- `numpy>=1.24,<3` and `nibabel>=4,<6` for NIfTI quality metrics and previews.41- `MLFLOW_TRACKING_URI` may select a caller-managed tracking server.42- Databricks mode uses the caller's `DATABRICKS_HOST`, `DATABRICKS_TOKEN`, or43 configured Databricks profile. The declared network endpoint is44 `https://<caller-provided-mlflow-or-databricks-workspace>`; Docker and GPU45 are not required.46- Local mode may write the MLflow store under47 `<current-working-directory>/mlruns`.4849## Examples5051Preview the export without contacting MLflow:5253```bash54python skills/medtech-model-evidence-export/scripts/export_evidence_pack.py \55 runs/inference_pack --mode dry-run --artifact-policy metadata56```5758Export a direct NV-Generate result with reproducibility metadata:5960```bash61python skills/medtech-model-evidence-export/scripts/export_evidence_pack.py \62 runs/nv-generate/result.json \63 --mode local \64 --experiment-name medical-ai-inference \65 --config configs/chest_lung_tumor.json \66 --seed 0 \67 --source-ref git:61c4ec709b84cad468852243c48e250bec73207468```6970Log downsampled slice previews, but not raw NIfTI files:7172```bash73python skills/medtech-model-evidence-export/scripts/export_evidence_pack.py \74 runs/nv-generate/result.json \75 --mode databricks \76 --experiment-name /Shared/medical-ai-inference \77 --artifact-policy preview \78 --confirm-medical-artifact-upload79```8081`--artifact-policy all` additionally uploads discovered or explicitly supplied82NIfTI images and masks, subject to `--max-artifact-mb`. Use `--image` and83`--mask` when paths are not present in the result JSON.8485The exporter logs:8687- scalar run and quality metrics, including sampled HU mean/std/min/max for CT88 (generic intensity statistics otherwise), a documented intensity-SNR89 heuristic, mask foreground percentage, and mapped tumor volume percentage90 when a tumor label mapping is available;91- generation parameters, model/checkpoint identity, RNG seed, and recipe hash;92- source config digest or `--source-ref`, plus a prompt digest when present;93- `mlflow.note.content` with a short human-readable run summary;94- a sanitized metadata bundle by default, optional PNG slice previews, and95 raw image/mask artifacts only under the explicit `all` policy.9697## Limitations9899- This is post-hoc inference export, not live training-curve tracking.100- Global intensity SNR and downsampled volume statistics are engineering101 checks, not image-quality or clinical-performance claims.102- Preview and raw artifacts may contain sensitive medical information. The103 caller must approve the destination and data policy before upload.104- The exporter does not evaluate model quality, register models, or alter the105 source evidence pack.106107## Troubleshooting108109| Error | Cause | Fix |110|---|---|---|111| Evidence source not recognized | No direct result JSON or pack `manifest.json`. | Pass the result file, evidence-pack directory, or trusted-run root. |112| MLflow import fails | Live mode lacks the declared package. | Install `mlflow>=2.10,<4` or use `--mode dry-run`. |113| Preview/all confirmation error | A live image upload was not acknowledged. | Review the destination, then pass `--confirm-medical-artifact-upload`. |114| Referenced image not found | Result paths moved after inference. | Pass current paths with `--image` and `--mask`. |