nemo_gym.global_config

View as Markdown

Module Contents

Classes

Functions

NameDescription
_find_open_port_using_range-
find_open_port-
format_almost_server_warningFormat user-friendly warning. Union literal errors are consolidated.
get_first_server_config_dict-
get_global_config_dictThis function provides a handle to the global configuration dict global_config_dict. We try to have one source of truth for everything in NeMo gym.
get_hf_token-
get_wandb_run-
set_global_config_dict-

Data

AGENT_REF_KEY_NAME

CONFIG_PATHS_KEY_NAME

COPY_KEY_NAME

DEFAULT_HEAD_SERVER_PORT

DEFAULT_HOST_KEY_NAME

DELETE_KEY_KEY_NAME

DISALLOWED_PORTS_KEY_NAME

DRY_RUN_KEY_NAME

ENTRYPOINT_KEY_NAME

HEAD_SERVER_DEPS_KEY_NAME

HEAD_SERVER_KEY_NAME

HF_TOKEN_KEY_NAME

INHERIT_FROM_KEY_NAME

NEMO_GYM_CONFIG_DICT_ENV_VAR_NAME

NEMO_GYM_CONFIG_PATH_ENV_VAR_NAME

NEMO_GYM_LOG_DIR_KEY_NAME

NEMO_GYM_RESERVED_TOP_LEVEL_KEYS

PIP_INSTALL_VERBOSE_KEY_NAME

POLICY_API_KEY_KEY_NAME

POLICY_BASE_URL_KEY_NAME

POLICY_MODEL_KEY_NAME

POLICY_MODEL_NAME_KEY_NAME

PORT_RANGE_HIGH_KEY_NAME

PORT_RANGE_LOW_KEY_NAME

PYTHON_VERSION_KEY_NAME

RAY_HEAD_NODE_ADDRESS_KEY_NAME

RESPONSES_CREATE_PARAMS_KEY_NAME

RESPONSE_KEY_NAME

ROLLOUT_INDEX_KEY_NAME

SKIP_VENV_IF_PRESENT_KEY_NAME

TASK_INDEX_KEY_NAME

USE_ABSOLUTE_IP

UV_CACHE_DIR_KEY_NAME

UV_PIP_SET_PYTHON_KEY_NAME

UV_VENV_DIR_KEY_NAME

_GLOBAL_CONFIG_DICT

_WANDB_RUN

API

class nemo_gym.global_config.GlobalConfigDictParser()

Bases: BaseModel

nemo_gym.global_config.GlobalConfigDictParser._recursive_index_dict_using_path(
dict_config: omegaconf.DictConfig,
path: typing.List[str]
) -> omegaconf.DictConfig
nemo_gym.global_config.GlobalConfigDictParser._recursively_hide_secrets(
dict_config: omegaconf.DictConfig
) -> None
nemo_gym.global_config.GlobalConfigDictParser._recursively_hide_secrets_helper(
dict_config: omegaconf.DictConfig
) -> None
nemo_gym.global_config.GlobalConfigDictParser._recursively_swap_keys(
dict_config: omegaconf.DictConfig
) -> None
nemo_gym.global_config.GlobalConfigDictParser._recursively_swap_keys_helper(
dict_config: omegaconf.DictConfig,
original_dict_config: omegaconf.DictConfig,
frozen_dict_config: omegaconf.DictConfig
) -> None
nemo_gym.global_config.GlobalConfigDictParser.detect_and_report_almost_servers(
global_config_dict: omegaconf.DictConfig
) -> typing.List[typing.Tuple[str, pydantic.ValidationError]]
nemo_gym.global_config.GlobalConfigDictParser.filter_for_server_instance_configs(
global_config_dict: omegaconf.DictConfig
) -> typing.List[nemo_gym.config_types.ServerInstanceConfig]
nemo_gym.global_config.GlobalConfigDictParser.load_extra_config_paths(
config_paths: typing.List[str]
) -> typing.Tuple[typing.List[str], typing.List[omegaconf.DictConfig]]

Returns the new total config_paths and the extra configs

nemo_gym.global_config.GlobalConfigDictParser.parse(
parse_config: typing.Optional[nemo_gym.global_config.GlobalConfigDictParserConfig] = None
) -> omegaconf.DictConfig
nemo_gym.global_config.GlobalConfigDictParser.parse_global_config_dict_from_cli() -> omegaconf.DictConfig
nemo_gym.global_config.GlobalConfigDictParser.parse_no_environment(
initial_global_config_dict: typing.Optional[omegaconf.DictConfig] = None
) -> omegaconf.DictConfig
nemo_gym.global_config.GlobalConfigDictParser.validate_and_populate_defaults(
server_instance_configs: typing.List[nemo_gym.config_types.ServerInstanceConfig],
default_host: str,
port_range_low: int,
port_range_high: int,
initial_disallowed_ports: typing.Optional[typing.List[int]] = None
) -> typing.List[int]
class nemo_gym.global_config.GlobalConfigDictParserConfig()

Bases: BaseModel

NO_MODEL_GLOBAL_CONFIG_DICT
DictConfig
dotenv_path
Optional[Path] = None
hide_secrets
bool = False
initial_global_config_dict
Optional[DictConfig] = None
model_config
= ConfigDict(arbitrary_types_allowed=True)
skip_load_from_cli
bool = False
skip_load_from_dotenv
bool = False
nemo_gym.global_config._find_open_port_using_range(
disallowed_ports: typing.List[int],
port_range_low: int,
port_range_high: int,
max_retries: int = 50
) -> int
nemo_gym.global_config.find_open_port(
disallowed_ports: typing.Optional[typing.List[int]] = None,
max_retries: int = 50
) -> int
nemo_gym.global_config.format_almost_server_warning(
server_name: str,
error: pydantic.ValidationError
) -> str

Format user-friendly warning. Union literal errors are consolidated. Union discriminator noise is filtered out. Explanation: Pydantic validation is quirky- it will report all failures in the union if any union member fails. Example: If an agent server contains an invalid license, it will not only show the error for the invalid license in ResponsesAPIAgentServerInstanceConfig, but also missing values for ResponsesAPIModelServerInstanceConfig responses_api_models and ResourcesServerInstanceConfig resources_servers.

nemo_gym.global_config.get_first_server_config_dict(
global_config_dict: omegaconf.DictConfig,
top_level_path: str
) -> omegaconf.DictConfig
nemo_gym.global_config.get_global_config_dict(
global_config_dict_parser_config: typing.Optional[nemo_gym.global_config.GlobalConfigDictParserConfig] = None,
global_config_dict_parser_cls: typing.Type[nemo_gym.global_config.GlobalConfigDictParser] = GlobalConfigDictParser
) -> omegaconf.DictConfig

This function provides a handle to the global configuration dict global_config_dict. We try to have one source of truth for everything in NeMo gym. This config is resolved once and only once, immediately on a run command.

On first initialization, the global config dict will be loaded from the following sources in order of priority (later items are higher priority):

  1. Configuration yamls specified in config_paths parameter.
  2. Configuration (usually sensitive values like API keys, etc) from a local .env.yaml file.
  3. Command line argument configuration.

Validation is performed on the passed in configs:

  1. If a host or port is not provided for a server, defaults will be provided. Ports are resolved by the OS.
  2. If there are server reference configs, the respective server names and types will be validated against the remainder of the config.

Then, the global config dict will be cached and reused.

If this function is run by a child server of the main proc, that child will have been spun up with an environment variable with key NEMO_GYM_CONFIG_DICT_ENV_VAR_NAME. The config dict will be read directly off this variable, cached, and returned with no additional validation.

nemo_gym.global_config.get_hf_token() -> typing.Optional[str]
nemo_gym.global_config.get_wandb_run() -> typing.Optional[wandb.Run]
nemo_gym.global_config.set_global_config_dict(
global_config_dict_parser_config: typing.Optional[nemo_gym.global_config.GlobalConfigDictParserConfig] = None,
global_config_dict_parser_cls: typing.Type[nemo_gym.global_config.GlobalConfigDictParser] = GlobalConfigDictParser
) -> None
nemo_gym.global_config.AGENT_REF_KEY_NAME = 'agent_ref'
nemo_gym.global_config.CONFIG_PATHS_KEY_NAME = 'config_paths'
nemo_gym.global_config.COPY_KEY_NAME = '_copy'
nemo_gym.global_config.DEFAULT_HEAD_SERVER_PORT = 11000
nemo_gym.global_config.DEFAULT_HOST_KEY_NAME = 'default_host'
nemo_gym.global_config.DELETE_KEY_KEY_NAME = '_delete_key'
nemo_gym.global_config.DISALLOWED_PORTS_KEY_NAME = 'disallowed_ports'
nemo_gym.global_config.DRY_RUN_KEY_NAME = 'dry_run'
nemo_gym.global_config.ENTRYPOINT_KEY_NAME = 'entrypoint'
nemo_gym.global_config.HEAD_SERVER_DEPS_KEY_NAME = 'head_server_deps'
nemo_gym.global_config.HEAD_SERVER_KEY_NAME = 'head_server'
nemo_gym.global_config.HF_TOKEN_KEY_NAME = 'hf_token'
nemo_gym.global_config.INHERIT_FROM_KEY_NAME = '_inherit_from'
nemo_gym.global_config.NEMO_GYM_CONFIG_DICT_ENV_VAR_NAME = 'NEMO_GYM_CONFIG_DICT'
nemo_gym.global_config.NEMO_GYM_CONFIG_PATH_ENV_VAR_NAME = 'NEMO_GYM_CONFIG_PATH'
nemo_gym.global_config.NEMO_GYM_LOG_DIR_KEY_NAME = 'nemo_gym_log_dir'
nemo_gym.global_config.NEMO_GYM_RESERVED_TOP_LEVEL_KEYS = [CONFIG_PATHS_KEY_NAME, ENTRYPOINT_KEY_NAME, DEFAULT_HOST_KEY_NAME, HEAD_SERVER_...
nemo_gym.global_config.PIP_INSTALL_VERBOSE_KEY_NAME = 'pip_install_verbose'
nemo_gym.global_config.POLICY_API_KEY_KEY_NAME = 'policy_api_key'
nemo_gym.global_config.POLICY_BASE_URL_KEY_NAME = 'policy_base_url'
nemo_gym.global_config.POLICY_MODEL_KEY_NAME = 'policy_model'
nemo_gym.global_config.POLICY_MODEL_NAME_KEY_NAME = 'policy_model_name'
nemo_gym.global_config.PORT_RANGE_HIGH_KEY_NAME = 'port_range_high'
nemo_gym.global_config.PORT_RANGE_LOW_KEY_NAME = 'port_range_low'
nemo_gym.global_config.PYTHON_VERSION_KEY_NAME = 'python_version'
nemo_gym.global_config.RAY_HEAD_NODE_ADDRESS_KEY_NAME = 'ray_head_node_address'
nemo_gym.global_config.RESPONSES_CREATE_PARAMS_KEY_NAME = 'responses_create_params'
nemo_gym.global_config.RESPONSE_KEY_NAME = 'response'
nemo_gym.global_config.ROLLOUT_INDEX_KEY_NAME = '_ng_rollout_index'
nemo_gym.global_config.SKIP_VENV_IF_PRESENT_KEY_NAME = 'skip_venv_if_present'
nemo_gym.global_config.TASK_INDEX_KEY_NAME = '_ng_task_index'
nemo_gym.global_config.USE_ABSOLUTE_IP = 'use_absolute_ip'
nemo_gym.global_config.UV_CACHE_DIR_KEY_NAME = 'uv_cache_dir'
nemo_gym.global_config.UV_PIP_SET_PYTHON_KEY_NAME = 'uv_pip_set_python'
nemo_gym.global_config.UV_VENV_DIR_KEY_NAME = 'uv_venv_dir'
nemo_gym.global_config._GLOBAL_CONFIG_DICT = None
nemo_gym.global_config._WANDB_RUN: Optional[Run] = None