| # Copyright (c) Microsoft Corporation. | |
| # SPDX-License-Identifier: Apache-2.0 | |
| # DeepSpeed Team | |
| from deepspeed.runtime.config_utils import DeepSpeedConfigModel | |
| ######################################### | |
| # Timers | |
| ######################################### | |
| # Timers. By default, timers are enabled. | |
| # Users can configure in ds_config.json as below example: | |
| TIMERS_FORMAT = ''' | |
| Timers should be enabled as: | |
| "timers": { | |
| "throughput": { | |
| "enabled": true, | |
| "synchronized": true | |
| } | |
| } | |
| ''' | |
| TIMERS = "timers" | |
| TIMERS_THROUGHPUT = "throughput" | |
| def get_timers_config(param_dict): | |
| if param_dict and TIMERS in param_dict and TIMERS_THROUGHPUT in param_dict[TIMERS]: | |
| timers_config_dict = param_dict[TIMERS][TIMERS_THROUGHPUT] | |
| else: | |
| timers_config_dict = {} | |
| return DeepSpeedThroughputTimerConfig(**timers_config_dict) | |
| class DeepSpeedThroughputTimerConfig(DeepSpeedConfigModel): | |
| """ Configure throughput timers """ | |
| enabled: bool = True | |
| """ Turn on/off throughput timers """ | |
| synchronized: bool = True | |
| """ Whether to synchronize a device when measuring the time. | |
| Synchronizing a device is required to produce the most accurate timer measurements. | |
| However, this comes at the expense of performance degradation. The CPU timer provides | |
| sufficient accuracy in many cases. | |
| """ | |