This library adds logging functions that print or save tensor values. Official models should define all common hooks (using hooks helper) and a benchmark logger.
-
Training Hooks
Hooks are a TensorFlow concept that define specific actions at certain points of the execution. We use them to obtain and log tensor values during training.
hooks_helper.py provides an easy way to create common hooks. The following hooks are currently defined:
- LoggingTensorHook: Logs tensor values
- ProfilerHook: Writes a timeline json that can be loaded into chrome://tracing.
- ExamplesPerSecondHook: Logs the number of examples processed per second.
- LoggingMetricHook: Similar to LoggingTensorHook, except that the tensors are logged in a format defined by our data anaylsis pipeline.
-
Benchmarks
The benchmark logger provides useful functions for logging environment information, and evaluation results. The module also contains a context which is used to update the status of the run.
Example usage:
from absl import app as absl_app
from official.utils.logs import hooks_helper
from official.utils.logs import logger
def model_main(flags_obj):
estimator = ...
benchmark_logger = logger.get_benchmark_logger()
benchmark_logger.log_run_info(...)
train_hooks = hooks_helper.get_train_hooks(...)
for epoch in range(10):
estimator.train(..., hooks=train_hooks)
eval_results = estimator.evaluate(...)
# Log a dictionary of metrics
benchmark_logger.log_evaluation_result(eval_results)
# Log an individual metric
benchmark_logger.log_metric(...)
def main(_):
with logger.benchmark_context(flags.FLAGS):
model_main(flags.FLAGS)
if __name__ == "__main__":
# define flags
absl_app.run(main)