Export every recorded input, not only the ones that vary
`export runs` dropped a `param.*` column whose value was constant across the exported runs, so a downstream filter broke depending on which runs the selection happened to hold. Every input the selection recorded is a column now; `--params` still narrows it to a sweep's axis. The metrics default is unchanged. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019Hra4ndWMCLU5F3KjUuVAc
This commit is contained in:
@@ -873,10 +873,10 @@ def test_an_export_strides_each_series_and_names_its_run(
|
||||
assert all(steps == [0, 2] for steps in curves.values())
|
||||
|
||||
|
||||
def test_an_exported_run_row_carries_the_inputs_that_vary(
|
||||
def test_an_exported_run_row_carries_every_recorded_input(
|
||||
client, superuser_token_headers, exported
|
||||
):
|
||||
"""The sweep axis becomes columns; what every run shares stays out of them."""
|
||||
"""Every input is a column, so the schema does not move with the selection."""
|
||||
|
||||
def export(**extra):
|
||||
answer = client.get(
|
||||
@@ -890,12 +890,15 @@ def test_an_exported_run_row_carries_the_inputs_that_vary(
|
||||
rows = _lines(export(format="jsonl"))
|
||||
assert [row["id"] for row in rows] == ["exp-1", "exp-0"]
|
||||
assert {row["param.lr"] for row in rows} == {0.1, 0.01}
|
||||
# `epochs` is the same on both runs, so it is not what they differ by, and
|
||||
# neither is the model inside the config — but the depth beside it is.
|
||||
assert "param.epochs" not in rows[0]
|
||||
assert "param.config.model" not in rows[0]
|
||||
# `epochs` is the same on both runs and stays a column anyway: which runs
|
||||
# were asked for is not something a downstream filter should have to know.
|
||||
assert rows[0]["param.epochs"] == 10
|
||||
assert rows[0]["param.config.model"] == "mlp"
|
||||
assert {row["param.config.depth"] for row in rows} == {1, 2}
|
||||
assert "param.epochs" in _lines(export(format="jsonl", params="epochs"))[0]
|
||||
|
||||
narrowed = _lines(export(format="jsonl", params="epochs"))[0]
|
||||
assert "param.epochs" in narrowed
|
||||
assert "param.lr" not in narrowed
|
||||
|
||||
# A number inside a record is a column of its own, however deep; a string
|
||||
# is not one of the run's numbers wherever it sits.
|
||||
@@ -912,7 +915,7 @@ def test_an_exported_run_row_carries_the_inputs_that_vary(
|
||||
header = export().text.splitlines()[0]
|
||||
assert header.startswith("id,flow,status,")
|
||||
assert header.endswith(
|
||||
"param.config.depth,param.lr,"
|
||||
"param.config.depth,param.config.model,param.epochs,param.lr,"
|
||||
"metric.acc,metric.final_metrics.train_loss,"
|
||||
"metric.test_metrics.known.perfect"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user