
    qiS                         d dl Z d dlmZ d dlmZ d dlZd dlmZ d dl	m
Z
 d dlmZ d dlmc mZ d dlmZ d dlmc mZ erd dlmZ  e j        d           G d	 d
ej                              ZdS )    N)TYPE_CHECKING)override)model)array_typingPi0T)frozenc                   x   e Zd ZU dZeed<   dZej        ed<   dZ	ej        ed<   dZ
eed<   d	Zeed
<   dZeed<   dZeed<   dZeed<   dZedz  ed<   d Zeedej        fd                        Zedej        ddfd            Zedddedeej        ej        f         fd            Zdej         j!        fdZ"dS )	Pi0Configbfloat16dtypegemma_2bpaligemma_variant
gemma_300maction_expert_variant    
action_dim2   action_horizonNmax_token_lenFpi05discrete_state_inputmax-autotunepytorch_compile_modec                     | j         %t                              | d| j        rdnd           | j        !t                              | d| j                   | j        | j        dv sJ d S d S )Nr      0   r   )defaultzreduce-overheadr   zmax-autotune-no-cudagraphs)r   object__setattr__r   r   r   selfs    9/home/robot-lab/Pi0.5_yam/src/openpi/models/pi0_config.py__post_init__zPi0Config.__post_init__%   s    %t_TY6NccBOOO$,t%;TYGGG$0, 1     10     returnc                 T    | j         rt          j        j        S t          j        j        S )N)r   _model	ModelTypePI05PI0r!   s    r#   
model_typezPi0Config.model_type2   s&     9 	)#((##r%   rngr   c                 L    ddl m}  || t          j        |                    S )Nr   r   )rngs)openpi.models.pi0r   nnxRngs)r"   r-   r   s      r#   createzPi0Config.create9   s1    ))))))s4chsmm,,,,r%      )
batch_sizer5   c                d   t          j        |gt          j        dt          j                  }t          j        |gt          j                  }t          j                    5  t          j	        |||d|||dt          j        || j
        gt          j                  t          j        || j        gt          j                  t          j        || j        gt                              }d d d            n# 1 swxY w Y   t          j        || j        | j
        gt          j                  }||fS )N   )
base_0_rgbleft_wrist_0_rgbright_wrist_0_rgb)imagesimage_masksstatetokenized_prompttokenized_prompt_mask)jaxShapeDtypeStructr(   IMAGE_RESOLUTIONjnpfloat32bool_atdisable_typecheckingObservationr   r   int32boolr   )r"   r5   
image_specimage_mask_specobservation_specaction_specs         r#   inputs_speczPi0Config.inputs_spec?   sb   ):*S8O*SQR*SUXU`aa
.
|SYGG$&& 	 	%1",(2)3  #2(7)8 
 *J+H#+VV!$!5z4CU6VX[Xa!b!b&)&:JHZ;[]a&b&b     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  *J8KT_+]_b_jkk,,s   "B	C77C;>C;c                    g }d}t          j        d          }t          j        d          }d| j        v rH|                    |           d| j        vr'|                    t          j        |                     d}n d| j        v r|                    |           d}|r9|                    t          j        t          j        d                               |st
          j        S t          j        | S )z4Returns the freeze filter based on the model config.Fz.*llm.*z.*llm.*_1.*loraTz.*lora.*)		nnx_utils	PathRegexr   appendr   r1   NotNothingAll)r"   filtershas_loragemma_params_filteraction_expert_params_filters        r#   get_freeze_filterzPi0Config.get_freeze_filterX   s   '1)<<&/&9-&H&H#T+++NN#   T777G788   HHt111NN+   H 	NN	+J7788    	;w  r%   )#__name__
__module____qualname__r   str__annotations__r   _gemmaVariantr   r   intr   r   r   rJ   r   r   r$   propertyr   r(   r)   r,   rF   KeyArrayLiker3   tuplerH   ActionsrO   r1   	filterlibFilterr\    r%   r#   r   r      s        E3(2v~222,86>888 JNCM3 D$!%$%%%'5#*555   $F, $ $ $ X X$
 -"/ -e - - - X-
 /0 - - - -U6;Mv~;]5^ - - - X-0!3=#7 ! ! ! ! ! !r%   r   )dataclassestypingr   flax.nnxr1   r@   	jax.numpynumpyrC   typing_extensionsr   openpi.modelsr   r(   openpi.models.gemmamodelsgemmarb   openpi.sharedr   rF   openpi.shared.nnx_utilssharedrR   r0   r   	dataclassBaseModelConfigr   rk   r%   r#   <module>r{      s4                         



       & & & & & & ) ) ) ) ) ) $ $ $ $ $ $ $ $ $ , , , , , , + + + + + + + + + &%%%%%% d###b! b! b! b! b!& b! b! $#b! b! b!r%   