domain.modeling
Papel na engine
domain.modeling controla a governança de modelos da plataforma: quais estratégias são válidas, quais versões existem e qual instância está ativa em cada série.
Módulo: domain.modeling.model
Tipos auxiliares
type JSONScalar = str | int | float | bool | Nonetype JSONValue = JSONScalar | list[JSONValue] | dict[str, JSONValue]type ParamsMap = dict[str, JSONValue]DEFAULT_EVALUATOR_REGISTRY_KEYS = {"mae", "rmse", "mape", "smape", "wape"}
Estruturas de especificação
ModelName
- Campo:
value: str - Normaliza para slug (
baseline xgboost->baseline-xgboost) - Falha se vazio.
WindowSpec
Campos:
lookback_periods: intmin_history_periods: int
Regras:
- ambos > 0;
min_history_periods <= lookback_periods.
LagSpec
Campo:
lags: tuple[int, ...]
Regras:
- não pode ser vazio;
- todos os lags > 0;
- lags devem ser únicos.
HorizonSpec
Campos:
periods: intgrain: TimeGrainstep: int = 1
Regras:
periods > 0step > 0
MetricDirection
MINMAX
StrategyTrainingMode
SERIESBATCH
MetricSpec
Campos:
name: strdirection: MetricDirectionparams: ParamsMap = {}
Comportamento:
- normaliza
namepara lowercase; - copia defensiva profunda de
params.
EvaluatorSpec
Campos:
registry_key: strparams: ParamsMap = {}
Comportamento:
- normaliza
registry_keypara lowercase; - copia defensiva profunda de
params.
StrategySpec
Campos:
strategy_key: strlibrary_family: strparams_schema: ParamsMap = {}enabled: bool = True
Comportamento:
- normaliza
strategy_keyelibrary_familycomo slug; - trata
library_familycomo seletor de família de engine (nixtla-statsforecast,nixtla-mlforecast, etc.); - copia defensiva profunda de
params_schema; - expõe
training_modecom defaultseries.
Convenção recomendada de params_schema:
model.namemodel.hyperparamsfeatures.date_featuresfeatures.static_featuresfeatures.known_future_featuresintervals.levelsexecution.training_mode
execution.training_mode aceita:
seriesbatch
Versionamento e instâncias
ModelVersionStatus
DRAFT,ACTIVE,DEPRECATED
ModelVersion
Campos:
version: intstatus: ModelVersionStatusparams_snapshot: ParamsMapcreated_at: datetime
Regra:
version > 0.params_snapshotpreserva árvores JSON-like aninhadas.- no fluxo padrão da engine,
params_snapshotguarda o snapshot congelado doModelDefinitionusado para treino.
ModelInstanceStatus
DRAFT,ACTIVE,DEPRECATED
ModelInstance
Campos principais:
model_definition_id: UUIDseries_key: SeriesKeymodel_version: intversion: intstrategy_key: strstatus: ModelInstanceStatusartifact_uri: str | Nonemlflow_run_id: str | Nonemetric_snapshot: dict[str, float]trained_at: datetime | None
Regras centrais:
model_definition_idnão nulo;model_version > 0;version > 0;strategy_keynormalizado e não vazio;status=ACTIVEexigeartifact_uri;- métricas são normalizadas para
floatfinito; - status não-
DRAFTpreenchetrained_atse ausente.
Observação:
- instâncias treinadas em batch podem compartilhar
artifact_uriemlflow_run_id, sem alterar a regra de uma instânciaACTIVEpor série. model_versionaponta para o snapshot congelado usado no treino e é a base para reconstituir params em inferência.
Método:
set_status(status)com validação de artefato paraACTIVE.
Agregado principal: ModelDefinition
Campos principais:
- identidade:
id,organization_id,name - escopo:
target_selector - configuração:
horizon_spec,window_spec,lag_spec - avaliação:
evaluator_specs,primary_metric,promotion_thresholds - estratégias:
strategy_specs - policy:
allowed_target_grains,available_evaluator_keys - estado:
versions,instances,created_at
Validações de inicialização:
idnão nulo;target_selectornão vazio;- ao menos um avaliador e uma estratégia;
horizon_spec.grainpermitido por policy;primary_metricpresente entre avaliadores;- thresholds referenciam métricas existentes;
- strategy keys sem duplicidade;
- ao menos uma estratégia habilitada.
Propriedades
versions -> tuple[ModelVersion, ...]instances -> tuple[ModelInstance, ...]
Métodos de versão
add_version(params_snapshot, status=DRAFT, created_at=None, force_version=None)update_version_status(version, status)latest_version()ensure_current_version()strategy_params_for_version(model_version, strategy_key)
Métodos de instância
enabled_strategy_specs()add_instance(...)promote_instance(series_key, version)active_instance_for_series(series_key)latest_instance_for_series(series_key)previous_instance_for_series(series_key, version)instances_for_series(series_key)
Regras relevantes de instância:
series_key.organization_iddeve coincidir comorganization_iddo modelo;- estratégia deve existir em
strategy_specs; - versão de instância deve ser única por série;
- apenas uma instância
ACTIVEpor série.
Método de horizonte
resolve_horizon(override: HorizonSpec | None)
Restrições de override:
- mesmo
graindo horizonte do modelo; - mesmo
stepdo horizonte do modelo; periodspode variar.