Skip to content

Commit 5bf72e0

Browse files
authored
Hparams: Support limit for DataProvider.list_hyperparameters(). (#6569)
Support `limit` for `DataProvider.list_hyperparameters()`. Note that this PR does not support limiting the hparams returned from `DataProvider.list_tensors()`. Googlers, see cl/559192614 and cl/563165193 for more context. #hparams
1 parent 34bfbd9 commit 5bf72e0

File tree

5 files changed

+16
-6
lines changed

5 files changed

+16
-6
lines changed

tensorboard/data/provider.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,13 +379,15 @@ def read_blob(self, ctx=None, *, blob_key):
379379
"""
380380
pass
381381

382-
def list_hyperparameters(self, ctx=None, *, experiment_ids):
382+
def list_hyperparameters(self, ctx=None, *, experiment_ids, limit=None):
383383
"""List hyperparameters metadata.
384384
385385
Args:
386386
ctx: A TensorBoard `RequestContext` value.
387387
experiment_ids: A Collection[string] of IDs of the enclosing
388388
experiments.
389+
limit: Optional number of hyperparameter metadata to include in the
390+
result. If unset or zero, all metadata will be included.
389391
390392
Returns:
391393
A ListHyperparametersResult describing the hyperparameter-related

tensorboard/plugins/hparams/api.proto

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,13 +254,17 @@ enum Status {
254254

255255
// Parameters for a GetExperiment API call.
256256
// Each experiment is scoped by a unique global id.
257-
// NEXT_TAG: 3
257+
// NEXT_TAG: 4
258258
message GetExperimentRequest {
259259
// REQUIRED
260260
string experiment_name = 1;
261261

262262
// Whether to fetch metrics and include them in the results. Defaults to true.
263263
optional bool include_metrics = 2;
264+
265+
// Number of hyperparameter metadata to include in the result. If zero, all
266+
// hyperparameter metadata will be returned.
267+
optional int32 hparams_limit = 3;
264268
}
265269

266270
// Parameters for a ListSessionGroups API call.

tensorboard/plugins/hparams/backend_context.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,10 +193,10 @@ def read_last_scalars(self, ctx, experiment_id, run_tag_filter):
193193
for (run, tag_to_data) in data_provider_output.items()
194194
}
195195

196-
def hparams_from_data_provider(self, ctx, experiment_id):
196+
def hparams_from_data_provider(self, ctx, experiment_id, limit):
197197
"""Calls DataProvider.list_hyperparameters() and returns the result."""
198198
return self._tb_context.data_provider.list_hyperparameters(
199-
ctx, experiment_ids=[experiment_id]
199+
ctx, experiment_ids=[experiment_id], limit=limit
200200
)
201201

202202
def session_groups_from_data_provider(

tensorboard/plugins/hparams/backend_context_test.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ def _mock_list_hyperparameters(
149149
ctx,
150150
*,
151151
experiment_ids,
152+
limit,
152153
):
153154
return self._hyperparameters
154155

@@ -161,7 +162,7 @@ def _experiment_from_metadata(self, *, include_metrics=True):
161162
"123",
162163
include_metrics,
163164
ctxt.hparams_metadata(request_ctx, "123"),
164-
ctxt.hparams_from_data_provider(request_ctx, "123"),
165+
ctxt.hparams_from_data_provider(request_ctx, "123", limit=None),
165166
)
166167

167168
def test_experiment_with_experiment_tag(self):

tensorboard/plugins/hparams/get_experiment.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ def __init__(
3838
not request.HasField("include_metrics")
3939
or request.include_metrics
4040
)
41+
self._hparams_limit = request.hparams_limit
4142

4243
def run(self):
4344
"""Handles the request specified on construction.
@@ -53,6 +54,8 @@ def run(self):
5354
self._request_context, self._experiment_id
5455
),
5556
self._backend_context.hparams_from_data_provider(
56-
self._request_context, self._experiment_id
57+
self._request_context,
58+
self._experiment_id,
59+
limit=self._hparams_limit,
5760
),
5861
)

0 commit comments

Comments
 (0)