4e815df327
400 rows / 200 patients, two samples each, so grouped splitting is actually exercised. Signal is modest and noisy on purpose — a separable toy would score 1.0 with a broken model and prove nothing.
53 lines
1.6 KiB
JSON
53 lines
1.6 KiB
JSON
{
|
|
"_notes": [
|
|
"Smoke test for the repo-backed job flow: tabular-only binary classification.",
|
|
"metadata_csv is relative to the repo root, which is the provider's working",
|
|
"directory when a job carries repo+ref. Deliberately small and short — this",
|
|
"exists to prove the path works end to end, not to produce a good model."
|
|
],
|
|
"run_name": "tabular_smoke",
|
|
"num_classes": 2,
|
|
"split_identity_level": 1,
|
|
"eval_stage": "cd_fuse",
|
|
"save_predictions": true,
|
|
"seed": 1234,
|
|
"folds": 3,
|
|
"fold_seed": 100,
|
|
"output_root": "results",
|
|
|
|
"data": {
|
|
"module": "hypertower_core.profiles.generic",
|
|
"args": {
|
|
"metadata_csv": "data/smoke/labels.csv",
|
|
"id_column": "sample_id",
|
|
"label_col": "diagnosis",
|
|
"target_type": "classification",
|
|
"group_column": "patient_id",
|
|
"cat_cols": ["site"],
|
|
"exclude_cols": ["notes"]
|
|
}
|
|
},
|
|
|
|
"towers": [
|
|
{
|
|
"name": "cd",
|
|
"module": "hypertower_core.components.towers.clinical_tower",
|
|
"class": "ClinicalEncoder",
|
|
"data_source": "matrix",
|
|
"args": { "hidden_dim": 64 }
|
|
}
|
|
],
|
|
|
|
"stages": [
|
|
{ "name": "cd_warm", "type": "warm", "tower": "cd", "head_name": "cd_aux",
|
|
"level": "sample", "epochs": 8 },
|
|
{ "name": "cd_aux", "type": "head", "input": "cd", "train_with": "cd_fuse" },
|
|
{ "name": "cd_fuse", "type": "fusion",
|
|
"module": "hypertower_core.components.bridges.mono_bridge",
|
|
"class": "MonoBridge", "inputs": ["cd"], "level": "sample",
|
|
"epochs": 10, "train_towers": true, "args": { "use_ln": false } }
|
|
],
|
|
|
|
"training": { "lr": 1e-3, "batch_size": 32, "tune_binary_threshold": true }
|
|
}
|