During training and inference execution, the aforementioned components can
utilize the logging management module and visualizer for structured and
unstructured logging storage and visualization. [Logging
Modules](../advanced_tutorials/logging.md): Responsible for managing various
log information generated during the execution of the Runner. The Message Hub
implements data sharing between components, runners, and log processors, while
the Log Processor processes the log information. The processed logs are then
sent to the `Logger` and `Visualizer` for management and display. The
[`Visualizer`](../advanced_tutorials/visualization.md) is responsible for
visualizing the model's feature maps, prediction results, and structured logs
generated during the training process. It supports multiple visualization
backends such as TensorBoard and WanDB.
### Common Base Modules
MMEngine also implements various common base modules required during the
execution of algorithmic models, including:
- [Config](../advanced_tutorials/config.md): In the OpenMMLab algorithm library, users can configure the training, testing process,
and related components by writing a configuration file (config).
- [Registry](../advanced_tutorials/registry.md): Responsible for managing
modules within the algorithm library that have similar functionality. Based on the abstraction of algorithm library modules, MMEngine defines a set of root registries. Registries within the algorithm library can inherit from these root registries, enabling cross-algorithm library module invocations and interactions. This allows for seamless integration and utilization of modules across different algorithms within the OpenMMLab framework.
- [File I/O](../advanced_tutorials/fileio.md): Provides a unified interface
for file read/write operations in various modules, supporting multiple file
backend systems and formats in a consistent manner, with extensibility.
- [Distributed Communication Primitives](../advanced_tutorials/distributed.md):
Handles communication between different processes during distributed program
execution. This interface abstracts the differences between distributed and
non-distributed environments and automatically handles data devices and
communication backends.
- [Other Utilities](../advanced_tutorials/manager_mixin.md): There are also
utility modules, such as `ManagerMixin`, which implements a way to create
and access global variables. The base class for many globally accessible
objects within the `Runner` is `ManagerMixin`.
Users can further read the [tutorials](../tutorials/runner.md) to understand the advanced usage of these
modules or refer to the [design documents](../design/hook.md) to understand their design principles