Ejemplo n.º 1
0
 def test_skips_non_scalar_events_in_scalar_time_series(self):
     events = [
         event_pb2.Event(file_version="brain.Event:2"),
         event_pb2.Event(summary=scalar_v2.scalar_pb("scalar1", 5.0)),
         event_pb2.Event(summary=scalar_v2.scalar_pb("scalar2", 5.0)),
         event_pb2.Event(
             summary=histogram_v2.histogram_pb("scalar2", [5.0])),
     ]
     run_proto = write_service_pb2.WriteScalarRequest.Run()
     self._populate_run_from_events(run_proto, events)
     tag_counts = {tag.name: len(tag.points) for tag in run_proto.tags}
     self.assertEqual(tag_counts, {"scalar1": 1, "scalar2": 1})
Ejemplo n.º 2
0
 def test_remembers_first_metadata_in_scalar_time_series(self):
     scalar_1 = event_pb2.Event(summary=scalar_v2.scalar_pb("loss", 4.0))
     scalar_2 = event_pb2.Event(summary=scalar_v2.scalar_pb("loss", 3.0))
     scalar_2.summary.value[0].ClearField("metadata")
     events = [
         event_pb2.Event(file_version="brain.Event:2"),
         scalar_1,
         scalar_2,
     ]
     run_proto = write_service_pb2.WriteScalarRequest.Run()
     self._populate_run_from_events(run_proto, events)
     tag_counts = {tag.name: len(tag.points) for tag in run_proto.tags}
     self.assertEqual(tag_counts, {"loss": 2})
Ejemplo n.º 3
0
 def test_upload_preserves_wall_time(self):
     logdir = self.get_temp_dir()
     with tb_test_util.FileWriter(logdir) as writer:
         # Add a raw event so we can specify the wall_time value deterministically.
         writer.add_event(
             event_pb2.Event(
                 step=1,
                 wall_time=123.123123123,
                 summary=scalar_v2.scalar_pb("foo", 5.0),
             )
         )
     mock_client = _create_mock_client()
     mock_rate_limiter = mock.create_autospec(util.RateLimiter)
     uploader = uploader_lib.TensorBoardUploader(
         mock_client, logdir, mock_rate_limiter
     )
     uploader.create_experiment()
     uploader._upload_once()
     mock_client.WriteScalar.assert_called_once()
     request = mock_client.WriteScalar.call_args[0][0]
     # Just check the wall_time value; everything else is covered in the full
     # logdir test below.
     self.assertEqual(
         123123123123,
         request.runs[0].tags[0].points[0].wall_time.ToNanoseconds(),
     )
Ejemplo n.º 4
0
    def test_break_at_scalar_point_boundary(self):
        mock_client = _create_mock_client()
        point_count = 2000  # comfortably saturates a single 1024-byte request
        events = []
        for step in range(point_count):
            summary = scalar_v2.scalar_pb("loss", -2.0 * step)
            if step > 0:
                summary.value[0].ClearField("metadata")
            events.append(event_pb2.Event(summary=summary, step=step))
        run_to_events = {"train": events}

        builder = _create_request_sender("123", mock_client)
        builder.send_requests(run_to_events)
        requests = [c[0][0] for c in mock_client.WriteScalar.call_args_list]
        for request in requests:
            _clear_wall_times(request)

        self.assertGreater(len(requests), 1)
        self.assertLess(len(requests), point_count)

        total_points_in_result = 0
        for request in requests:
            self.assertLen(request.runs, 1)
            run = request.runs[0]
            self.assertEqual(run.name, "train")
            self.assertLen(run.tags, 1)
            tag = run.tags[0]
            self.assertEqual(tag.name, "loss")
            for point in tag.points:
                self.assertEqual(point.step, total_points_in_result)
                self.assertEqual(point.value, -2.0 * point.step)
                total_points_in_result += 1
            self.assertLessEqual(request.ByteSize(),
                                 uploader_lib._MAX_REQUEST_LENGTH_BYTES)
        self.assertEqual(total_points_in_result, point_count)
Ejemplo n.º 5
0
 def test_skips_events_from_disallowed_plugins(self):
     event = event_pb2.Event(step=1,
                             wall_time=123.456,
                             summary=scalar_v2.scalar_pb("foo", 5.0))
     run_proto = write_service_pb2.WriteScalarRequest.Run()
     self._populate_run_from_events(
         run_proto, [event], allowed_plugins=frozenset("not-scalars"))
     expected_run_proto = write_service_pb2.WriteScalarRequest.Run()
     self.assertProtoEquals(run_proto, expected_run_proto)
Ejemplo n.º 6
0
 def test_v2_summary(self):
     event = event_pb2.Event(
         step=1, wall_time=123.456, summary=scalar_v2.scalar_pb("foo", 5.0)
     )
     run_proto = write_service_pb2.WriteScalarRequest.Run()
     self._populate_run_from_events(run_proto, [event])
     expected_run_proto = write_service_pb2.WriteScalarRequest.Run()
     foo_tag = expected_run_proto.tags.add()
     foo_tag.name = "foo"
     foo_tag.metadata.plugin_data.plugin_name = "scalars"
     foo_tag.points.add(
         step=1, wall_time=test_util.timestamp_pb(123456000000), value=5.0
     )
     self.assertProtoEquals(run_proto, expected_run_proto)
Ejemplo n.º 7
0
 def scalar_event(tag, value):
     return event_pb2.Event(summary=scalar_v2.scalar_pb(tag, value))
Ejemplo n.º 8
0
 def make_event(step, wall_time, tag, value):
     return event_pb2.Event(
         step=step,
         wall_time=wall_time,
         summary=scalar_v2.scalar_pb(tag, value),
     )