o
    vi	                     @   s@   d dl Z d dlmZ d dlmZ d dlmZ G dd deZdS )    N)log)Callback)DiffusionModelc                	       sT   e Zd Zddededef fddZ	dd	ed
eee	j
f deddfddZ  ZS )CompileTokenizerF   enabledcompile_after_iterationsdynamicc                    s,   t    || _d| _|| _d| _|| _d S )NFr   )super__init__r   compiledr   skip_counterr	   )selfr   r   r	   	__class__ ]/data/cameron/vidgen/cosmos-policy/cosmos_policy/_src/predict2/callbacks/compile_tokenizer.pyr      s   
zCompileTokenizer.__init__r   model
data_batch	iterationreturnNc                 C   s   | j r| jrd S t|jtjjrtdt	|j d | j
| jkr]zdtjj_W n$ tyM   zdtjj_W n tyJ   td d| _ Y Y d S w Y nw tj|jj| jd|j_d| _|  j
d7  _
d S )	NzThe Tokenizer model zM is a JIT model, which is not compilable. The Tokenizer will not be compiled.    uZ   Tokenizer compilation requested, but Torch Dynamo is unavailable – skipping compilation.F)r	   T   )r   r   
isinstance	tokenizertorchjitScriptModuler   criticaltyper   r   _dynamoconfigZrecompile_limitAttributeErrorcache_size_limitwarningcompileencoder	   )r   r   r   r   r   r   r   on_training_step_start"   s0   
z'CompileTokenizer.on_training_step_start)Fr   F)r   )__name__
__module____qualname__boolintr   r   dictstrr   Tensorr'   __classcell__r   r   r   r   r      s    r   )r   #cosmos_policy._src.imaginaire.utilsr   ,cosmos_policy._src.imaginaire.utils.callbackr   3cosmos_policy._src.predict2.models.text2world_modelr   r   r   r   r   r   <module>   s
   