jamtur01's picture
Upload folder using huggingface_hub
9c6594c verified
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0
# DeepSpeed Team
from typing import Optional
from pydantic import model_validator
from deepspeed.runtime.config_utils import DeepSpeedConfigModel
def get_monitor_config(param_dict):
monitor_dict = {key: param_dict.get(key, {}) for key in ("tensorboard", "wandb", "csv_monitor", "comet")}
return DeepSpeedMonitorConfig(**monitor_dict)
class TensorBoardConfig(DeepSpeedConfigModel):
"""Sets parameters for TensorBoard monitor."""
enabled: bool = False
""" Whether logging to Tensorboard is enabled. Requires `tensorboard` package is installed. """
output_path: str = ""
"""
Path to where the Tensorboard logs will be written. If not provided, the
output path is set under the training script’s launching path.
"""
job_name: str = "DeepSpeedJobName"
""" Name for the current job. This will become a new directory inside `output_path`. """
class WandbConfig(DeepSpeedConfigModel):
"""Sets parameters for WandB monitor."""
enabled: bool = False
""" Whether logging to WandB is enabled. Requires `wandb` package is installed. """
group: Optional[str] = None
""" Name for the WandB group. This can be used to group together runs. """
team: Optional[str] = None
""" Name for the WandB team. """
project: str = "deepspeed"
""" Name for the WandB project. """
class CSVConfig(DeepSpeedConfigModel):
"""Sets parameters for CSV monitor."""
enabled: bool = False
""" Whether logging to local CSV files is enabled. """
output_path: str = ""
"""
Path to where the csv files will be written. If not provided, the output
path is set under the training script’s launching path.
"""
job_name: str = "DeepSpeedJobName"
""" Name for the current job. This will become a new directory inside `output_path`. """
class CometConfig(DeepSpeedConfigModel):
"""
Sets parameters for Comet monitor. For logging data Comet uses
experiment object.
https://www.comet.com/docs/v2/api-and-sdk/python-sdk/reference/Experiment/
"""
enabled: bool = False
""" Whether logging to Comet is enabled. Requires `comet_ml` package is installed. """
samples_log_interval: int = 100
""" Metrics will be submitted to Comet after processing every `samples_log_intervas` samples"""
project: Optional[str] = None
"""
Comet project name. Can be set through .comet.config file or environment variable COMET_PROJECT_NAME
https://www.comet.com/docs/v2/guides/experiment-management/configure-sdk/#explore-comet-configuration-options
"""
workspace: Optional[str] = None
"""
Comet workspace name. Can be set through .comet.config file or environment variable COMET_WORKSPACE
https://www.comet.com/docs/v2/guides/experiment-management/configure-sdk/#explore-comet-configuration-options
"""
api_key: Optional[str] = None
"""
Comet API key. Can be set through .comet.config file or environment variable COMET_API_KEY
https://www.comet.com/docs/v2/guides/experiment-management/configure-sdk/#explore-comet-configuration-options
"""
experiment_name: Optional[str] = None
"""
The name for comet experiment to be used for logging.
Can be set through .comet.config file or environment variable COMET_EXPERIMENT_NAME
https://www.comet.com/docs/v2/guides/experiment-management/configure-sdk/#explore-comet-configuration-options
"""
experiment_key: Optional[str] = None
"""
The key for comet experiment to be used for logging. Must be an alphanumeric string whose length is between 32 and 50 characters.
Can be set through .comet.config or environment variable COMET_EXPERIMENT_KEY
https://www.comet.com/docs/v2/guides/experiment-management/configure-sdk/#explore-comet-configuration-options
"""
online: Optional[bool] = None
"""
If True, the data will be logged to Comet server, otherwise it will be stored locally in offline experiment
Defaults to True.
"""
mode: Optional[str] = None
"""
Control how the Comet experiment is started, 3 options are possible.:
- "get": Continue logging to an existing experiment identified by the `experiment_key` value.
- "create": Always creates of a new experiment, useful for HPO sweeps.
- "get_or_create" (default): Starts a fresh experiment if required, or persists logging to an existing one.
"""
class DeepSpeedMonitorConfig(DeepSpeedConfigModel):
"""Sets parameters for various monitoring methods."""
tensorboard: TensorBoardConfig = {}
""" TensorBoard monitor, requires `tensorboard` package is installed. """
comet: CometConfig = {}
""" Comet monitor, requires `comet_ml` package is installed """
wandb: WandbConfig = {}
""" WandB monitor, requires `wandb` package is installed. """
csv_monitor: CSVConfig = {}
""" Local CSV output of monitoring data. """
@model_validator(mode="after")
def check_enabled(self):
enabled = self.tensorboard.enabled or self.wandb.enabled or self.csv_monitor.enabled or self.comet.enabled
self.__dict__["enabled"] = enabled
return self