o
    ބi                     @   s   d Z ddlZddlmZ ddlmZ ddlZddlZddlm	Z	 ddl
mZ ddlmZ ded	efd
dZddedejdefddZdS )z
Load a UVA checkpoint into policy (MAR + VAE) for video-only sampling.
Self-contained: no imports from unified_video_action.
Uses the simplified video-only MAR (no text, proprio, action, wrist).
    N)Path)SimpleNamespace)	OmegaConf)AutoencoderKL)mar_base_video_only	repo_rootreturnc                 C   s$   t |}tj|r|S t | | S N)strospathisabs)r   raw_pathp r   >/data/cameron/vidgen/unified_video_action/simple_uva/loader.py_resolve_path   s   r   	ckpt_pathdevicec                 C   s  |p
t t jd }t| d}tj||td}W d   n1 s#w   Y  |d }|d dp9|d d}|du rBt	d	|j
j}t|jd
d}|rTt||nd|jjd}	t  tdi |	}
W d   n1 sqw   Y  |
  |
 D ]}d|_q~|j}t|j|j|j|j|j|j|j|j|j|j t!|j"|j#d}dd |$ D }dd |$ D }|j%|dd |
j%|dd t& }||_
|
|_'|j
(| |j'(| |j
  |j'  ||fS )zFLoad policy and cfg from a full UVA checkpoint. Returns (policy, cfg).   rb)map_locationpickle_moduleNcfgZstate_dictsZ	ema_modelmodelzHCheckpoint must contain state_dicts['ema_model'] or state_dicts['model']autoencoder_path)r   ddconfigF)img_size
vae_stride
patch_sizevae_embed_dimmask_ratio_minlabel_drop_probattn_dropoutproj_dropout
diffloss_d
diffloss_wnum_sampling_stepsgrad_checkpointingc                 S   (   i | ]\}}| d r|dd |qS )zmodel.   N
startswith.0kvr   r   r   
<dictcomp>G      ( z/load_policy_from_checkpoint.<locals>.<dictcomp>c                 S   r)   )z
vae_model.
   Nr+   r-   r   r   r   r1   H   r2   )strictr   ))r   __file__resolveparentsopentorchloaddillgetKeyErrorr   policygetattrZvae_model_paramsr   r   no_gradr   eval
parametersrequires_gradZautoregressive_model_paramsr   r   r   r   r    r!   r"   r#   r$   r%   r&   r
   r'   r(   itemsload_state_dictr   	vae_modelto)r   r   r   fpayloadr   
state_dictZ
policy_cfgZae_pathZ
vae_paramsrF   r   Z	ar_paramsZ	mar_modelZmodel_sdZvae_sdr>   r   r   r   load_policy_from_checkpoint   s\   


rK   r	   )__doc__r   pathlibr   typesr   r;   r9   Z	omegaconfr   Zsimple_uva.vaer   Zsimple_uva.modelr   r
   r   r   rK   r   r   r   r   <module>   s    