easydel.infra.elarge_model.normalizer

easydel.infra.elarge_model.normalizer#

Configuration normalization and validation utilities for ELM.

This module provides functions to normalize, validate, and transform ELM configurations into formats suitable for model loading, training, and inference.

easydel.infra.elarge_model.normalizer.materialize_base_config(cfg: ELMConfig, prefer: Literal['base', 'sections'] = 'base') EasyDeLBaseConfigDict[source]#

Materialize a complete base configuration from ELM config sections.

This function consolidates configuration values from various sections (loader, sharding, quantization, etc.) into a single base configuration dictionary suitable for model initialization.

Parameters
  • cfg – ELM configuration dictionary.

  • prefer – Resolution strategy for conflicts: - “base”: Base config values take precedence (default) - “sections”: Section values override base config

Returns

Materialized base configuration with all relevant values.

Return type

EasyDeLBaseConfigDict

Example

>>> cfg = {
...     "model": {"name_or_path": "meta-llama/Llama-2-7b"},
...     "loader": {"dtype": "bf16"},
...     "sharding": {"partition_axis": {"embed": "tp"}}
... }
>>> base_cfg = materialize_base_config(cfg)
>>> base_cfg["attn_dtype"]
'bfloat16'
easydel.infra.elarge_model.normalizer.normalize(cfg: easydel.infra.elarge_model.types.ELMConfig | collections.abc.Mapping[str, Any]) ELMConfig[source]#

Normalize an ELM configuration by merging with defaults and processing values.

This function takes a raw configuration and: 1. Validates required fields (model.name_or_path) 2. Merges with default values from DEFAULTS 3. Infers missing values like max_model_len from base config

Parameters

cfg – Raw ELM configuration dictionary or mapping.

Returns

Normalized configuration with all defaults applied.

Return type

ELMConfig

Raises

ValueError – If model.name_or_path is missing from the configuration.

Example

>>> cfg = {"model": {"name_or_path": "meta-llama/Llama-2-7b"}}
>>> normalized = normalize(cfg)
>>> "loader" in normalized
True
easydel.infra.elarge_model.normalizer.resolve_task(cfg: ELMConfig) TaskType[source]#

Resolve the task type from an ELM configuration.

Parameters

cfg – ELM configuration dictionary.

Returns

The resolved task type, defaults to CAUSAL_LM if not specified or AUTO_BIND.

Return type

TaskType

Example

>>> cfg = {"model": {"name_or_path": "meta-llama/Llama-2-7b", "task": "causal_lm"}}
>>> resolve_task(cfg)
<TaskType.CAUSAL_LM: 'causal_lm'>
easydel.infra.elarge_model.normalizer.validate(cfg_like: easydel.infra.elarge_model.types.ELMConfig | collections.abc.Mapping[str, Any]) None[source]#

Validate an ELM configuration for correctness.

Performs various validation checks including: - Sharding dimensions and names consistency - Valid axis dimension values - Quantization configuration consistency

Parameters

cfg_like – ELM configuration to validate.

Raises

ValueError – If configuration contains invalid values or inconsistencies.

Example

>>> cfg = {
...     "model": {"name_or_path": "meta-llama/Llama-2-7b"},
...     "sharding": {
...         "axis_dims": (1, 1, 1, -1),
...         "axis_names": ("dp", "fsdp", "ep", "tp")
...     }
... }
>>> validate(cfg)