§
    �M§j'  ã                  óF  — d dl mZ d dlZd dlZd dlmc mZ d dlm	Z
 d dlmZ dZdZdZdZd	Zd)d„Zd*d„Z G d„ dej        j        ¦  «        Z G d„ dej        j        ¦  «        Z G d„ dej        j        ¦  «        Z G d„ dej        j        ¦  «        Zd+d,d„Z	 d+d-d(„ZdS ).é    )ÚannotationsN)Úoffload)Úpay_attentioné   é#   g{®Gáz„?g      Ð?g       @Úreturnúdict[str, torch.Tensor]c                ó:  — t          | t          t          f¦  «        r| n| g}i }|D ]t}|r@dt          j                             t          |¦  «        ¦  «                             ¦   «         vrŒEt          j	        |d¬¦  «        \  }}}| 
                    |¦  «         Œu|S )NÚedit_anythingF)Úwritable_tensors)Ú
isinstanceÚlistÚtupleÚosÚpathÚbasenameÚstrÚlowerÚmmgp_offloadÚload_sdÚupdate)Úmodule_pathsÚpathsÚstater   ÚsdÚ_s         ú@C:\Users\johnn\OneDrive\Documents\AI\models\ltx2\editanything.pyÚ_module_stater      s    € Ý& |µd½E°]ÑCÔCÐWˆLˆLÈ,È€EØ€EØð ð ˆØð 	�­b¬g×.>Ò.>½sÀ4¹y¼yÑ.IÔ.I×.OÒ.OÑ.QÔ.QÐQÐQØÝÔ'¨¸uÐEÑEÔE‰ˆˆAˆqØ�Š�RÑÔÐÐØ€Ló    r   Úprefixr   c                óD   ‡— ˆfd„|                       ¦   «         D ¦   «         S )Nc                óp   •— i | ]2\  }}|                      ‰¦  «        ¯|t          ‰¦  «        d …         |“Œ3S ©N)Ú
startswithÚlen)Ú.0ÚkeyÚvaluer    s      €r   ú
<dictcomp>z!_strip_prefix.<locals>.<dictcomp>   s@   ø€ Ð`Ð`Ð`©*¨#¨uÈÏÊÐX^ÑI_ÔI_Ð`ˆC•�F‘”��Ô Ð`Ð`Ð`r   )Úitems)r   r    s    `r   Ú_strip_prefixr+      s%   ø€ Ø`Ð`Ð`Ð`¸¿º¹¼Ð`Ñ`Ô`Ð`r   c                  ó(   ‡ — e Zd Zdˆ fd„Zdd
„Zˆ xZS )Ú_LoRALinearÚbase_linearútorch.nn.LinearÚlora_aútorch.TensorÚlora_br   ÚNonec                ó  •— t          ¦   «                              ¦   «          t                               | d|¦  «         t          j                             |d¬¦  «        | _        t          j                             |d¬¦  «        | _        d S )Nr.   F©Úrequires_grad)	ÚsuperÚ__init__ÚobjectÚ__setattr__ÚtorchÚnnÚ	ParameterÚlora_AÚlora_B)Úselfr.   r0   r2   Ú	__class__s       €r   r8   z_LoRALinear.__init__"   sm   ø€ Ý‰Œ×ÒÑÔÐÝ×Ò˜4 °Ñ<Ô<Ð<Ý”h×(Ò(¨¸uÐ(ÑEÔEˆŒÝ”h×(Ò(¨¸uÐ(ÑEÔEˆŒˆˆr   Úxc                ó8  — |                       |¦  «        }| j        j        }t          j        t          j        |                     |¬¦  «        | j        ¦  «        | j        ¦  «        }|                     |                     |j        |j        ¬¦  «        ¦  «        S )N©Údtype©ÚdevicerE   )	r.   r>   rE   ÚFÚlinearÚtor?   ÚaddrG   )r@   rB   ÚoutÚ
lora_dtypeÚlora_outs        r   Úforwardz_LoRALinear.forward(   st   € Ø×Ò˜qÑ!Ô!ˆØ”[Ô&ˆ
Ý”8�AœH Q§T¢T°
 TÑ%;Ô%;¸T¼[ÑIÔIÈ4Ì;ÑWÔWˆØ�wŠw�x—{’{¨#¬*¸C¼I�{ÑFÔFÑGÔGÐGr   )r.   r/   r0   r1   r2   r1   r   r3   )rB   r1   r   r1   ©Ú__name__Ú
__module__Ú__qualname__r8   rO   Ú__classcell__©rA   s   @r   r-   r-   !   s_   ø€ € € € € ðFð Fð Fð Fð Fð FðHð Hð Hð Hð Hð Hð Hð Hr   r-   c                  ó*   ‡ — e Zd Zdˆ fd	„Zddd„Zˆ xZS )ÚEditAnythingRefAttentionÚ	base_attnútorch.nn.Moduler   r	   r    r   r   r3   c                óX  •— t          ¦   «                              ¦   «          t                               | d|¦  «         t	          |j        ¦  «        | _        t	          |j        ¦  «        | _        t          |j        ||› d�         ||› d�         ¦  «        | _        t          |j	        ||› d�         ||› d�         ¦  «        | _	        t          |j
        ||› d�         ||› d�         ¦  «        | _
        t          |j        d         ||› d	�         ||› d
�         ¦  «        | _        d S )NrX   úto_q.lora_A.weightzto_q.lora_B.weightzto_k.lora_A.weightzto_k.lora_B.weightzto_v.lora_A.weightzto_v.lora_B.weightr   zto_out.0.lora_A.weightzto_out.0.lora_B.weight)r7   r8   r9   r:   ÚintÚheadsÚdim_headr-   Úto_qÚto_kÚto_vÚto_out)r@   rX   r   r    rA   s       €r   r8   z!EditAnythingRefAttention.__init__0   s@  ø€ Ý‰Œ×ÒÑÔÐÝ×Ò˜4 ¨iÑ8Ô8Ð8Ý˜œÑ)Ô)ˆŒ
Ý˜IÔ.Ñ/Ô/ˆŒÝ 	¤°¸Ð6SÐ6SÐ6SÔ0TÐV[Ð_eÐ\yÐ\yÐ\yÔVzÑ{Ô{ˆŒ	Ý 	¤°¸Ð6SÐ6SÐ6SÔ0TÐV[Ð_eÐ\yÐ\yÐ\yÔVzÑ{Ô{ˆŒ	Ý 	¤°¸Ð6SÐ6SÐ6SÔ0TÐV[Ð_eÐ\yÐ\yÐ\yÔVzÑ{Ô{ˆŒ	Ý! )Ô"2°1Ô"5°uÀÐ=^Ð=^Ð=^Ô7_ÐafÐjpð  hIð  hIð  hIô  bJñ  Kô  KˆŒˆˆr   NÚx_listúlist[torch.Tensor]Úcontext_listúlist[torch.Tensor] | Noner1   c                ó,  — |d         }|                      ¦   «          |�|d         n|}|�|                      ¦   «          |                      |¦  «        }|                      |¦  «        }|                      |¦  «        }| j                             |¦  «         | j                             |¦  «         |                     |j        d         d| j	        | j
        ¦  «        }|                     |j        d         d| j	        | j
        ¦  «        }|                     |j        d         d| j	        | j
        ¦  «        }| j                             ¦   «         \  }}	t          |||g||	d¬¦  «        }
|
                     dd¦  «        }
|                      |
¦  «        S )Nr   éÿÿÿÿT)Úforce_attentionÚversionÚ	recycle_qé   é   )Úclearr_   r`   ra   rX   Úq_normÚk_normÚviewÚshaper]   r^   Ú_resolve_attention_overrider   Úflattenrb   )r@   rc   re   rB   ÚcontextÚqÚkÚvri   Úattention_versionrL   s              r   rO   z EditAnythingRefAttention.forward:   s^  € Ø�1ŒIˆØ�Š‰ŒˆØ%1Ð%=�,˜q”/�/À1ˆØÐ#Ø×ÒÑ Ô Ð Ø�IŠI�a‰LŒLˆØ�IŠI�gÑÔˆØ�IŠI�gÑÔˆØŒ×Ò˜aÑ Ô Ð ØŒ×Ò˜aÑ Ô Ð Ø�FŠF�1”7˜1”:˜r 4¤:¨t¬}Ñ=Ô=ˆØ�FŠF�1”7˜1”:˜r 4¤:¨t¬}Ñ=Ô=ˆØ�FŠF�1”7˜1”:˜r 4¤:¨t¬}Ñ=Ô=ˆØ-1¬^×-WÒ-WÑ-YÔ-YÑ*ˆÐ*Ý˜Q  1˜I°ÐPaÐmqÐrÑrÔrˆØ�kŠk˜!˜QÑÔˆØ�{Š{˜3ÑÔÐr   )rX   rY   r   r	   r    r   r   r3   r#   )rc   rd   re   rf   r   r1   rP   rU   s   @r   rW   rW   /   s\   ø€ € € € € ðKð Kð Kð Kð Kð Kð ð  ð  ð  ð  ð  ð  ð  ð  r   rW   c                  ó,   ‡ — e Zd Zdˆ fd„Zefdd
„Zˆ xZS )ÚEditAnythingRefVisualProjr   r	   r   r3   c                ór  •— t          ¦   «                              ¦   «          |d         }|d         }t          j                             |j        d         |j        d         d|v ¬¦  «        | _        t          j                             |j        d         |j        d         d|v ¬¦  «        | _        t          j                             |j        d         ¦  «        | _	        t          j         
                    |d         d	¬
¦  «        | _        |                      |d¬¦  «         |                      d	¦  «         d S )Nú
fc1.weightúproj.weighté   r   úfc1.bias©Úbiasú	proj.biasÚ	pos_embedFr5   T©Ústrict)r7   r8   r;   r<   ÚLinearrr   Úfc1ÚprojÚ	LayerNormÚnormr=   r„   Úload_state_dictÚrequires_grad_©r@   r   Ú
fc1_weightÚproj_weightrA   s       €r   r8   z"EditAnythingRefVisualProj.__init__O   s  ø€ Ý‰Œ×ÒÑÔÐØ˜<Ô(ˆ
Ø˜MÔ*ˆÝ”8—?’? :Ô#3°AÔ#6¸
Ô8HÈÔ8KÐR\Ð`eÐRe�?ÑfÔfˆŒÝ”H—O’O KÔ$5°aÔ$8¸+Ô:KÈAÔ:NÐU`ÐdiÐUi�OÑjÔjˆŒ	Ý”H×&Ò& {Ô'8¸Ô';Ñ<Ô<ˆŒ	Ýœ×+Ò+¨E°+Ô,>ÈeÐ+ÑTÔTˆŒØ×Ò˜U¨4ÐÑ0Ô0Ð0Ø×Ò˜EÑ"Ô"Ð"Ð"Ð"r   Ú
ref_latentr1   Útoken_scaleÚfloatc                ó&  — |                      d¬¦  «        }t          j        |d¦  «                             dddd¦  «                             |j        d         dd¦  «        }|                      d	¬¦  «        }|                     d	d
¬¦  «        }t          j        ||gd¬¦  «         	                    d¦  «         
                    d|j        d         d¦  «        }t          j        ||gd¬¦  «        }|                      t          j        |                      |¦  «        ¦  «        ¦  «        }|                      |¦  «        }|| j        d d …d |j        d         …f                              |j        |j        ¬¦  «        z   }|t'          |¦  «        z  S )Nrl   ©Údim)é   é   r   rm   r   é    rh   )éþÿÿÿrh   F)r–   ÚunbiasedrF   )ÚmeanrH   Úadaptive_avg_pool2dÚpermuteÚreshaperr   Ústdr;   ÚcatÚ	unsqueezeÚexpandr‰   Úsilurˆ   r‹   r„   rJ   rG   rE   r“   )	r@   r‘   r’   Ú	ref_frameÚlocalÚglobal_meanÚ
global_stdÚstatsÚtokenss	            r   rO   z!EditAnythingRefVisualProj.forwardZ   sh  € Ø—O’O¨�OÑ*Ô*ˆ	ÝÔ% i°Ñ8Ô8×@Ò@ÀÀAÀqÈ!ÑLÔL×TÒTÐU^ÔUdÐefÔUgÐikÐmoÑpÔpˆØ—n’n¨�nÑ2Ô2ˆØ—]’] x¸%�]Ñ@Ô@ˆ
Ý”	˜;¨
Ð3¸Ð<Ñ<Ô<×FÒFÀqÑIÔI×PÒPÐQSÐUZÔU`ÐabÔUcÐegÑhÔhˆÝ”˜E 5˜>¨rÐ2Ñ2Ô2ˆØ—’�1œ6 $§(¢(¨6Ñ"2Ô"2Ñ3Ô3Ñ4Ô4ˆØ—’˜6Ñ"Ô"ˆØ˜$œ.¨¨¨Ð,=¨f¬l¸1¬oÐ,=Ð)=Ô>×AÒAÈÌÐ^dÔ^jÐAÑkÔkÑkˆØ�˜kÑ*Ô*Ñ*Ð*r   ©r   r	   r   r3   )r‘   r1   r’   r“   r   r1   )rQ   rR   rS   r8   ÚEDITANYTHING_REF_TOKEN_SCALErO   rT   rU   s   @r   r{   r{   N   s]   ø€ € € € € ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð Fbð 
+ð 
+ð 
+ð 
+ð 
+ð 
+ð 
+ð 
+ð 
+r   r{   c                  ó,   ‡ — e Zd Zdˆ fd„Zefdd
„Zˆ xZS )ÚEditAnythingRefAdaLNProjr   r	   r   r3   c                ó¼  •— t          ¦   «                              ¦   «          |d         }|d         }t          j                             |j        d         |j        d         d|v ¬¦  «        | _        t          j                             |j        d         |j        d         d|v ¬¦  «        | _        |                      |d¬	¦  «         |  	                    d
¦  «         d S )Nr}   r~   r   r   r€   r�   rƒ   Tr…   F)
r7   r8   r;   r<   r‡   rr   rˆ   r‰   rŒ   r�   rŽ   s       €r   r8   z!EditAnythingRefAdaLNProj.__init__h   sÄ   ø€ Ý‰Œ×ÒÑÔÐØ˜<Ô(ˆ
Ø˜MÔ*ˆÝ”8—?’? :Ô#3°AÔ#6¸
Ô8HÈÔ8KÐR\Ð`eÐRe�?ÑfÔfˆŒÝ”H—O’O KÔ$5°aÔ$8¸+Ô:KÈAÔ:NÐU`ÐdiÐUi�OÑjÔjˆŒ	Ø×Ò˜U¨4ÐÑ0Ô0Ð0Ø×Ò˜EÑ"Ô"Ð"Ð"Ð"r   r‘   r1   Úadaln_scaler“   c                óä  — |                      d¬¦  «        }t          j        |d¦  «                             d¦  «        }t          j        |d¦  «                             d¦  «        }t          j        |d¦  «                             d¦  «        }t          j        |||gd¬¦  «        }|                      t          j        |  	                    |¦  «        ¦  «        ¦  «        t          |¦  «        z  S )Nrl   r•   )r   r   r   )rl   rl   rh   )rœ   rH   r�   rt   Úadaptive_max_pool2dr;   r¡   r‰   r¤   rˆ   r“   )r@   r‘   r°   r¥   Úavg_1x1Úavg_2x2Úmax_1x1Úpooleds           r   rO   z EditAnythingRefAdaLNProj.forwardq   sÅ   € Ø—O’O¨�OÑ*Ô*ˆ	ÝÔ'¨	°6Ñ:Ô:×BÒBÀ1ÑEÔEˆÝÔ'¨	°6Ñ:Ô:×BÒBÀ1ÑEÔEˆÝÔ'¨	°6Ñ:Ô:×BÒBÀ1ÑEÔEˆÝ”˜G W¨gÐ6¸BÐ?Ñ?Ô?ˆØ�yŠy�œ §¢¨Ñ 0Ô 0Ñ1Ô1Ñ2Ô2µU¸;Ñ5GÔ5GÑGÐGr   r«   )r‘   r1   r°   r“   r   r1   )rQ   rR   rS   r8   ÚEDITANYTHING_ADALN_SCALErO   rT   rU   s   @r   r®   r®   g   sf   ø€ € € € € ð#ð #ð #ð #ð #ð #ð F^ð Hð Hð Hð Hð Hð Hð Hð Hð Hr   r®   Úvelocity_modelrY   Ú	model_defúdict | Noner3   c                óz  — t          |¦  «        }|sd S |pi }t          |                     dt          ¦  «        ¦  «        | _        t          |                     dt
          ¦  «        ¦  «        | _        t          |                     dt          ¦  «        ¦  «        | _	        t          |                     dt          ¦  «        ¦  «        | _        t          |                     dt          ¦  «        ¦  «        | _        t          |d¦  «        }|rt          |¦  «        | _        t          |d¦  «        }|rt#          |¦  «        | _        |                     d¦  «        }|�ct&          j                             |j        d	         |j        d
         ¦  «        }t&          j                             |d¬¦  «        |_        || _        t5          | dg ¦  «        D ]T}d|j        › d�}	|	› d�|vrŒt9          |j        ||	¦  «        |_        | j        |_        | j        |_        | j	        |_	        ŒUd| _        tA          d¦  «         d S )NÚ"ltx2_edit_anything_ref_start_blockÚ ltx2_edit_anything_ref_end_blockÚ$ltx2_edit_anything_ref_context_scaleÚ"ltx2_edit_anything_ref_token_scaleÚltx2_edit_anything_adaln_scalezref_visual_proj.zref_adaln_proj.zrole_embedding.embedding.weightr   r   Fr5   Útransformer_blocksz#diffusion_model.transformer_blocks.z
.ref_attn.r[   Tz7[WAN2GP][LTX2] EditAnything reference module installed.)!r   r\   ÚgetÚEDITANYTHING_REF_START_BLOCKÚeditanything_ref_start_blockÚEDITANYTHING_REF_END_BLOCKÚeditanything_ref_end_blockr“   ÚEDITANYTHING_REF_CONTEXT_SCALEÚeditanything_ref_context_scaler¬   Úeditanything_ref_token_scaler·   Úeditanything_adaln_scaler+   r{   Úeditanything_ref_visual_projr®   Úeditanything_ref_adaln_projr;   r<   Ú	Embeddingrr   r=   ÚweightÚeditanything_role_embeddingÚgetattrÚidxrW   Úattn2Úref_attnÚeditanything_module_loadedÚprint)
r¸   r   r¹   r   Úvisual_stateÚadaln_stateÚrole_weightÚrole_embeddingÚblockr    s
             r   Úinstall_editanything_modulesrÛ   z   sZ  € Ý˜,Ñ'Ô'€EØð ØˆØ�˜R€IÝ25°i·m²mÐDhõ  kGñ  7Hô  7Hñ  3Iô  3I€NÔ/Ý03°I·M²MÐBdõ  gAñ  5Bô  5Bñ  1Cô  1C€NÔ-Ý49¸)¿-º-ÐHnõ  qOñ  ;Pô  ;Pñ  5Qô  5Q€NÔ1Ý27¸	¿ºÐFjõ  mIñ  9Jô  9Jñ  3Kô  3K€NÔ/Ý.3°I·M²MÐBbÕd|Ñ4}Ô4}Ñ.~Ô.~€NÔ+Ý  Ð(:Ñ;Ô;€LØð ^Ý6OÐP\Ñ6]Ô6]ˆÔ3Ý Ð'8Ñ9Ô9€KØð [Ý5MÈkÑ5ZÔ5ZˆÔ2Ø—)’)Ð=Ñ>Ô>€KØÐÝœ×+Ò+¨KÔ,=¸aÔ,@À+ÔBSÐTUÔBVÑWÔWˆÝ %¤× 2Ò 2°;ÈeÐ 2Ñ TÔ TˆÔØ5CˆÔ2Ý˜Ð)=¸rÑBÔBð ]ð ]ˆØL°u´yÐLÐLÐLˆØÐ(Ð(Ð(°Ð5Ð5ØÝ1°%´+¸uÀfÑMÔMˆŒØ-;Ô-XˆÔ*Ø+9Ô+TˆÔ(Ø/=Ô/\ˆÔ,Ð,Ø04€NÔ-Ý	Ð
CÑDÔDÐDÐDÐDr   ÚtransformerÚheightr\   ÚwidthÚvideo_encoderrE   útorch.dtyperG   útorch.devicec                ó  — ddl m} ddlm}	 ddlm}
 t          | d| ¦  «        }t          |dd¦  «        r|sg d d fS t          |t          t          f¦  «        r|d         n|} |
|||||d	¬
¦  «        } |	|||¦  «         
                    |¬¦  «        } ||d¬¦  «        g}d x}}t          |dd ¦  «        }|�^t          |                     ¦   «         ¦  «        } || 
                    ||j        ¬¦  «        |j        ¦  «                             ¦   «         }t          |dd ¦  «        }|�^t          |                     ¦   «         ¦  «        } || 
                    ||j        ¬¦  «        |j        ¦  «                             ¦   «         }|||fS )Nr   )ÚVideoConditionByReferenceLatent)Úencode_video)Úload_image_conditioningr¸   rÔ   Fr   Úlanczos)rÝ   rÞ   rE   rG   ÚresamplerD   g      ð?)ÚstrengthrË   rF   rÌ   )Últx_core.conditioningrã   Últx_core.model.video_vaerä   Últx_pipelines.utils.media_iorå   rÐ   r   r   r   rJ   ÚnextÚ
parametersrE   rÉ   ÚdetachrÊ   )rÜ   Ú
ref_imagesrÝ   rÞ   rß   rE   rG   Útiling_configrã   Úvae_encode_videorå   r¸   Ú	ref_imageÚimager‘   ÚconditioningsÚref_contextÚ	ref_adalnÚvisual_projÚvisual_paramÚ
adaln_projÚadaln_params                         r   Ú)build_editanything_reference_conditioningrû   ›   sö  € ð GÐFÐFÐFÐFÐFØJÐJÐJÐJÐJÐJØEÐEÐEÐEÐEÐEå˜[Ð*:¸KÑHÔH€NÝ�>Ð#?ÀÑGÔGð Èzð Ø�4˜ˆ~ÐÝ!+¨J½½u¸Ñ!FÔ!FÐV�
˜1”�ÈJ€IØ#Ð# I°fÀEÐQVÐ_eÐpyÐzÑzÔz€EØ!Ð! %¨¸ÑFÔF×IÒIÐPUÐIÑVÔV€JØ4Ð4°ZÈ#ÐNÑNÔNÐO€MØ"Ð"€K�)Ý˜.Ð*HÈ$ÑOÔO€KØÐÝ˜K×2Ò2Ñ4Ô4Ñ5Ô5ˆØ!�k *§-¢-°vÀ\ÔEW -Ñ"XÔ"XÐZhô  [Fñ  Gô  G÷  Nò  Nñ  Pô  PˆÝ˜Ð)FÈÑMÔM€JØÐÝ˜:×0Ò0Ñ2Ô2Ñ3Ô3ˆØ�J˜zŸ}š}°FÀ+ÔBS˜}ÑTÔTÐVdÔV}Ñ~Ô~÷  Fò  Fñ  Hô  Hˆ	Ø˜+ yÐ0Ð0r   )r   r	   )r   r	   r    r   r   r	   r#   )r¸   rY   r¹   rº   r   r3   )rÜ   rY   rÝ   r\   rÞ   r\   rß   rY   rE   rà   rG   rá   )Ú
__future__r   r   r;   Útorch.nn.functionalr<   Ú
functionalrH   Úmmgpr   r   Úshared.attentionr   rÃ   rÅ   rÇ   r¬   r·   r   r+   ÚModuler-   rW   r{   r®   rÛ   rû   © r   r   ú<module>r     sÁ  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð à (Ð (Ð (Ð (Ð (Ð (Ø *Ð *Ð *Ð *Ð *Ð *à!Ð ØÐ Ø!%Ð Ø#Ð ØÐ ðð ð ð ðað að að aðHð Hð Hð Hð H�%”(”/ñ Hô Hð Hð ð  ð  ð  ð  ˜uœxœñ  ô  ð  ð>+ð +ð +ð +ð + ¤¤ñ +ô +ð +ð2Hð Hð Hð Hð H˜uœxœñ Hô Hð Hð&Eð Eð Eð Eð EðR ð1ð 1ð 1ð 1ð 1ð 1ð 1r   