# 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. """