
    i`                         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
Zddedej"                  defdZy)z~
Load a UVA checkpoint into policy (MAR + VAE) for video-only sampling.
Self-contained: no imports from unified_video_action.
    N)Path)SimpleNamespace)	OmegaConf)AutoencoderKL)model	repo_rootreturnc                 v    t        |      }t        j                  j                  |      r|S t        | |z        S N)strospathisabs)r   raw_pathps      >/data/cameron/vidgen/unified_video_action/simple_uva/loader.py_resolve_pathr      s/    HA	ww}}Qy1}    	ckpt_pathdevicec                 	   |xs* t        t              j                         j                  d   }t	        | d      5 }t        j                  ||t              }ddd       d   }|d   j                  d      xs |d   j                  d      }|t        d	      |j                  j                  }t        |j                  d
d      }|rt        ||      nd|j                  j                  d}	t        j                          5  t#        d>i |	}
ddd       
j%                          |
j'                         D ]	  }d|_         |j*                  }|j,                  }t        |dd      t        |dd      d}t/        |d      rt        |j0                  dd      nd}|t        |dd      }|dddgii}t        |j0                  dd      xs t        |dd      }t/        |d      r7t/        |j0                  d      r!t        |j0                  j2                  dd      nt        |dd      }t        |dd      xs dt        |dd      t        |dd      xs dt        |dd      xs dt        |d d      xs dt        |d!d      xs d|||d"	}t        t4        |j6                        } |d>i d#|j8                  d$|j:                  d%|j<                  d&|j>                  d'|j@                  d(|jB                  d)|jD                  d*|jF                  d+|jH                  d,|jJ                  d-|jL                  d.|jN                  d/tQ        |jR                        d0|jT                  d1|jV                  d2|jX                  d3t        |d3d4      d5tQ        t        |d5d6            d7||}|j[                         D ci c]'  \  }}|j]                  d8      sd9|vsd:|vs"|d;d |) }}}|j[                         D ci c]  \  }}|j]                  d<      s|dd | }}}|j_                  |d=       |
j_                  |d=       ta               }||_
        |
|_1        |j                  je                  |       |jb                  je                  |       |j                  j%                          |jb                  j%                          ||fS # 1 sw Y   xY w# 1 sw Y   xY wc c}}w c c}}w )?zFLoad policy and cfg from a full UVA checkpoint. Returns (policy, cfg).   rb)map_locationpickle_moduleNcfgstate_dicts	ema_modelr   zHCheckpoint must contain state_dicts['ema_model'] or state_dicts['model']autoencoder_path)r   ddconfigFpredict_actionact_model_typeconv_fc)r!   r"   task
shape_metaactionshape
   name	task_namelibero10datasetlanguage_emb_modeluse_history_actionaction_mask_ratiog      ?use_proprioceptionpredict_wrist_imgdifferent_history_freqpredict_proprioception)	r.   r/   r0   r1   r2   r3   r*   r-   r%   img_size
vae_stride
patch_sizevae_embed_dimmask_ratio_minlabel_drop_probattn_dropoutproj_dropout
diffloss_d
diffloss_wdiffloss_act_ddiffloss_act_wnum_sampling_stepsdiffusion_batch_mulgrad_checkpointingpredict_videoact_diff_training_stepsi  act_diff_testing_steps100action_model_paramszmodel.diffactlossdiffproploss   z
vae_model.)strict )3r   __file__resolveparentsopentorchloaddillgetKeyErrorr   policygetattrvae_model_paramsr   r    no_gradr   eval
parametersrequires_gradautoregressive_model_paramsrG   hasattrr$   r,   
mar_module
model_sizer4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r   r@   rA   rB   rC   items
startswithload_state_dictr   	vae_modelto)r   r   r   fpayloadr   
state_dict
policy_cfgae_path
vae_paramsrd   r   	ar_paramsaction_paramsrG   r%   r*   r-   kwargsmar_fn	mar_modelkvmodel_sdvae_sdrV   s                             r   load_policy_from_checkpointru      sJ   @T(^335==a@I	i	 I!**QV4HI %.C'++K8_GM<R<V<VW^<_Jabb !!Jj113EtLGAHM)W=d//88J 
 0!/J/	0NN!!#    66I22M!-1A5I!-1A9M ;B#v:N<6TXJZt<
2$0
&$/X73Z3XIRYZ]_eRfkrsvs{s{  ~G  lH!1!13GN  NU  V`  bv  x|  N} &j2FNWRW$Z1DcJ%j2FNWRW$Z1DeLUPU")*6NPU"V"_Z_")*6NPU"V"_Z_0 
F Z!5!56F ##'' ''  --	
 !// "11 ++ ++ '' '' !// !// y;;< &99 %77   --!" !(	3Ld S#$  #796NPU#VW%& 0
)I0 &0%5%5%7  JTQ1<<;QVcklVlq  HI  rI!"q  JH  J$.$4$4$6UDAq!,,|:TafaiUFUhu5fU3FFL F
LLOOF

LL
3;sI I"0 0t JUs;   SS"S/S/!S/&S/S5S5S"S,r   )__doc__r   pathlibr   typesr   rS   rQ   	omegaconfr   simple_uva.vaer   
simple_uvar   r_   r   r   r   ru   rL   r   r   <module>r|      sZ   
 
  !    ( *T  ]4 ] ]RV ]r   