Source code for protomotions.agents.peft.utils.frozen_prior_checkpoint

# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

"""PEFT-side loading/inspection of the frozen base-prior checkpoint.

These helpers intentionally reach into the discrete latent prior checkpoint
layout so the PEFT agent can keep its control flow readable. If more agents
need this behavior, move the layout-specific pieces onto the prior model.
"""

from __future__ import annotations

import logging
from pathlib import Path

import torch

log = logging.getLogger(__name__)


[docs] def reload_frozen_base_prior_from_checkpoint(peft, checkpoint_path: str | Path, device): """Copy configured prior weights into an already-built PEFT wrapper.""" checkpoint_path = Path(checkpoint_path) if not checkpoint_path.exists(): raise FileNotFoundError(f"Prior checkpoint not found: {checkpoint_path}") state = torch.load( checkpoint_path, map_location=device, weights_only=False, ) prior_state = ( state["model"] if isinstance(state, dict) and "model" in state else state ) base_prior = peft.base_prior _reload_projection_modules(base_prior, prior_state) transformer_state = _extract_transformer_state(prior_state) _reload_positional_embedding(peft, prior_state, device) # PEFT wraps each frozen transformer layer, so checkpoint weights are loaded # into the wrapped inner layer instead of replacing the adapter wrapper. _reload_wrapped_transformer_layers(base_prior, transformer_state) log.info("Reloaded frozen base prior from %s", checkpoint_path)
def _reload_projection_modules(base_prior, prior_state: dict) -> None: for attr in ("_context_encoder", "_token_encoder", "_output_head"): module = getattr(base_prior, attr, None) if module is None: continue prefix = f"prior.{attr}." module_state = _strip_prefixed_state(prior_state, prefix) if module_state: module.load_state_dict(module_state, strict=False) def _extract_transformer_state(prior_state: dict) -> dict: return _strip_prefixed_state(prior_state, "prior._transformer.") def _reload_positional_embedding(peft, prior_state: dict, device) -> None: pos_emb = prior_state.get("prior._pos_emb") if pos_emb is None: return pos_emb = pos_emb.to(device) peft.base_prior._pos_emb.data.copy_(pos_emb) def _reload_wrapped_transformer_layers(base_prior, transformer_state: dict) -> None: if not transformer_state: return patched_layers = 0 for index, layer in enumerate(base_prior._transformer.layers): wrapped_layer = getattr(layer, "transformer_layer", None) if wrapped_layer is None: continue layer_state = _strip_prefixed_state(transformer_state, f"layers.{index}.") if layer_state: wrapped_layer.load_state_dict(layer_state, strict=True) patched_layers += 1 if patched_layers == 0: raise RuntimeError( "No PEFT transformer layers exposed 'transformer_layer'; " "could not reload frozen base prior transformer weights." ) def _strip_prefixed_state(state_dict: dict, prefix: str) -> dict: return { key[len(prefix) :]: value for key, value in state_dict.items() if key.startswith(prefix) }