ó
    USh0  ã                   óì   • S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	rS SK
rS SKrS SKrS SKrS SKrS SKrS SKJs  Jr  S SKJr  S SKJrJrJrJrJr  S r   S
S jrS rS rS rS	 r g)é    N)Úuse_patched_ops)ÚCLIPTextModelÚCLIPTextConfigÚmodeling_utilsÚCLIPVisionConfigÚCLIPVisionModelWithProjectionc                 ó
  • [        5       nSnSnU Hc  n[        [        S U5      5      n[        [        U5      U5      nU=(       d    [	        [        S U5      5      (       + nUR                  U5        Me     [        U5      nU(       d  US:X  aC  UR                  [        R                  R                  R                  U R                  U5      5        U R                  U5      u  p‰U	b;  U	SS R                  [        R                  R                  R                  5       5      n
OU	n
/ n[        SU5       H¶  nXŒUS-    nU(       a”  UR!                  5       nUS   n[        [        U5      5       HP  n[        [        UU   5      5       H2  nX   U   S   nUS:w  d  M  UU   U   UU   -
  U-  UU   -   UU   U'   M4     MR     UR!                  5       nXÞU-  -  nUR                  U5        M¸     [        U5      S:X  a<  USS  R                  [        R                  R                  R                  5       5      U
4$ ["        R$                  " USS	9R                  [        R                  R                  R                  5       5      U
4$ )
Nr   Fc                 ó   • U S   $ )Nr   © ©Úas    Ú6/home/gothic/public_html/Fooocus/modules/patch_clip.pyÚ<lambda>Ú.patched_encode_token_weights.<locals>.<lambda>   s   €  A a¢Dó    c                 ó   • U S   S:H  $ )Né   ç      ð?r   r   s    r   r   r       s   € ¸1¸Q¹4À3º;r   r   éÿÿÿÿr   éþÿÿÿ)Údim)ÚlistÚmapÚmaxÚlenÚallÚappendÚldm_patchedÚmodulesÚsd1_clipÚgen_empty_tokensÚspecial_tokensÚencodeÚtoÚmodel_managementÚintermediate_deviceÚrangeÚmeanÚtorchÚcat)ÚselfÚtoken_weight_pairsÚ	to_encodeÚmax_token_lenÚhas_weightsÚxÚtokensÚsectionsÚoutÚpooledÚfirst_pooledÚoutputÚkÚzÚoriginal_meanÚz_emptyÚiÚjÚweightÚnew_means                       r   Úpatched_encode_token_weightsr?      s/  € Ü“€IØ€MØ€KÛˆÜ”c™.¨!Ó,Ó-ˆÜœC ›K¨Ó7ˆØ!×K¬¬SÑ1FÈÓ-JÓ)KÔ%KˆØ×Ñ˜Ö ñ	  ô �9‹~€HÞ�h !“mØ×Ñœ×,Ñ,×5Ñ5×FÑFÀt×GZÑGZÐ\iÓjÔkà—+‘+˜iÓ(�K€CØÑØ˜a �{—~‘~¤k×&9Ñ&9×&JÑ&J×&^Ñ&^Ó&`Óa‰àˆà€FÜ�1�hÖˆØ�!�a‘%ˆLˆÞØŸF™F›HˆMØ˜"‘gˆGÜœ3˜q›6–]�Üœs 1 Q¡4›yÖ)�AØ/Ñ2°1Ñ5°aÑ8�FØ •}Ø#$ Q¡4¨¡7¨W°Q©ZÑ#7¸6Ñ"AÀGÈAÁJÑ"N˜˜!™˜Q›ó *ñ #ð
 —v‘v“xˆHØ XÑ-Ñ.ˆAØ�‰�aÖñ  ô ˆ6ƒ{�aÓØ�2�3ˆx�{‰{œ;×.Ñ.×?Ñ?×SÑSÓUÓVÐXdÐdÐdÜ�9Š9�V Ñ$×'Ñ'¬×(;Ñ(;×(LÑ(L×(`Ñ(`Ó(bÓcÐeqÐqÐqr   c	                 óÔ  • [         R                  R                  R                  U 5        X0R                  ;   d   eUc  SSSS.nUc|  [
        R                  R                  [
        R                  R                  [
        R                  R                  [        R                  R                  R                  5      5      S5      n[        R                  " U5      n
U
R                   U l        [%        [&        R(                  5         [*        R,                  " 5          [/        U
5      U l        S S S 5        S S S 5        Ub  U R0                  R3                  U5        U R0                  R4                  R6                  R3                  [         R8                  5        U(       a  U R;                  5         Xl        X0l        S U l         Xpl!        [         R                  RE                  [         RF                  " U R0                  RI                  5       RJ                  RL                  S   5      5      U l'        [         R                  RE                  [         RP                  " S5      5      U l)        SU l*        X€l+        US:X  a1  Uc   e[Y        U5      U R"                  :  d   eU R[                  U5        U R>                  U R@                  4U l.        g ! , (       d  f       GN£= f! , (       d  f       GN­= f)	NiþÀ  iÿÀ  )ÚstartÚendÚpadzsd1_clip_config.jsonr   gyé&1l@FÚhidden)/r)   ÚnnÚModuleÚ__init__ÚLAYERSÚosÚpathÚjoinÚdirnameÚrealpathr   r   r    Ú__file__r   Úfrom_json_fileÚnum_hidden_layersÚ
num_layersr   ÚopsÚmanual_castr   Úno_init_weightsr   Útransformerr$   Ú
text_modelÚ
embeddingsÚfloat32ÚfreezeÚ
max_lengthÚlayerÚ	layer_idxr"   Ú	ParameterÚeyeÚget_input_embeddingsr=   ÚshapeÚtext_projectionÚtensorÚlogit_scaleÚenable_attention_masksÚlayer_norm_hidden_stateÚabsÚ
clip_layerÚlayer_default)r+   rZ   rY   r[   r\   Útextmodel_json_configÚdtyper"   re   ÚkwargsÚconfigs              r   Úpatched_SDClipModel__init__rm   A   s  € ô 
‡H�H‡O�O×Ñ˜TÔ"Ø—K‘KÓÐÐàÑØ#(°¸uÑEˆàÑ$Ü "§¡§¡¬R¯W©W¯_©_¼R¿W¹W×=MÑ=MÌk×NaÑNa×NjÑNj×NsÑNsÓ=tÓ-uØ-Có!EÐô ×*Ò*Ð+@ÓA€FØ×.Ñ.€D„Oä	œŸ™Õ	)Ü×+Ò+Õ-Ü,¨VÓ4ˆDÔ÷ .÷ 
*ð ÑØ×Ñ×Ñ˜EÔ"à×Ñ×Ñ×*Ñ*×-Ñ-¬e¯m©mÔ<æØ�‰Œà „OØ„JØ€D„NØ(ÔÜ Ÿ8™8×-Ñ-¬e¯iªi¸×8HÑ8H×8]Ñ8]Ó8_×8fÑ8f×8lÑ8lÐmnÑ8oÓ.pÓq€DÔÜ—x‘x×)Ñ)¬%¯,ª,°vÓ*>Ó?€DÔØ"'€DÔà#:Ô Ø�ÓØÑ$Ð$Ð$Ü�9‹~ §¡Ó/Ð/Ð/Ø�‰˜	Ô"ØŸ*™* d§n¡nÐ5€DÕ÷1 .Ö-ú÷ 
*Ö	)ús$   ÄKÄKÄ*KË
K	ËKË
K'c                 óü  • U R                   R                  5       nUR                  R                  nU R	                  X5      n[
        R                  " U5      R                  U5      nS nU R                  (       a›  [
        R                  " U5      nU R                   R                  5       R                  R                  S   S-
  n[        UR                  S   5       H5  n[        UR                  S   5       H  nSXFU4'   XU4   U:X  d  M    M3     M7     U R                  XU R                  S:H  S9nU R                   R                  U5        U R                  S:X  a  UR                  n	OvU R                  S:X  a  UR                  S S 2S S S 24   n	OOUR                   U R"                     n	U R$                  (       a%  U R                   R&                  R)                  U	5      n	[+        US5      (       a  UR                  R-                  5       n
OS n
U R.                  bQ  U
bN  U
R-                  5       R                  U R.                  R                  5      U R.                  R-                  5       -  n
U	R-                  5       U
4$ )Nr   r   rD   )Ú	input_idsÚattention_maskÚoutput_hidden_statesÚlastr4   Úpooler_output)rU   r_   r=   ÚdeviceÚset_up_textual_embeddingsr)   Ú
LongTensorr$   rd   Ú
zeros_liker`   r'   r[   Úset_input_embeddingsÚlast_hidden_staters   Úhidden_statesr\   re   rV   Úfinal_layer_normÚhasattrÚfloatra   )r+   r1   Úbackup_embedsrt   rp   Ú	max_tokenr0   ÚyÚoutputsr8   Úpooled_outputs              r   Úpatched_SDClipModel_forwardrƒ   m   s  € Ø×$Ñ$×9Ñ9Ó;€MØ×!Ñ!×(Ñ(€FØ×+Ñ+¨FÓB€FÜ×Ò˜fÓ%×(Ñ(¨Ó0€Fà€NØ×"×"Ü×)Ò)¨&Ó1ˆØ×$Ñ$×9Ñ9Ó;×BÑB×HÑHÈÑKÈaÑOˆ	Ü�~×+Ñ+¨AÑ.Ö/ˆAÜ˜>×/Ñ/°Ñ2Ö3�Ø'(� !˜tÑ$Ø˜Q˜$‘< 9Õ,Úó 4ñ 0ð ×Ñ¨Ø48·J±JÀ(Ñ4Jð ð L€Gà×Ñ×)Ñ)¨-Ô8à‡z�z�VÓØ×%Ñ%‰Ø	�‰�xÓ	Ø×!Ñ!¢! Tª1 *Ñ-‰à×!Ñ! $§.¡.Ñ1ˆØ×'×'Ø× Ñ ×+Ñ+×<Ñ<¸QÓ?ˆAäˆw˜×(Ñ(Ø×-Ñ-×3Ñ3Ó5‰àˆà×ÑÑ'¨MÑ,EØ%×+Ñ+Ó-×0Ñ0°×1EÑ1E×1LÑ1LÓMÐPT×PdÑPd×PjÑPjÓPlÑlˆà�7‰7‹9�mÐ#Ð#r   c                 ón  • [         R                  " U5      n[        R                  R                  R                  5       U l        [        R                  R                  R                  5       U l        [        R                  R                  R                  U R                  SS9(       a  [        R                  U l        O[        R                  U l        [        [        R                   5         ["        R$                  " 5          ['        U5      U l        S S S 5        S S S 5        U R(                  R+                  U R                  5        [        R                  R,                  R/                  U R(                  U R                  U R                  S9U l        g ! , (       d  f       Nˆ= f! , (       d  f       N‘= f)NF)Úprioritize_performance)Úload_deviceÚoffload_device)r   rO   r   r   r%   Útext_encoder_devicer†   Útext_encoder_offload_devicer‡   Úshould_use_fp16r)   Úfloat16rj   rX   r   rR   rS   r   rT   r   Úmodelr$   Úmodel_patcherÚModelPatcherÚpatcher)r+   Újson_configrl   s      r   Úpatched_ClipVisionModel__init__r‘   •   s  € Ü×,Ò,¨[Ó9€Fä"×*Ñ*×;Ñ;×OÑOÓQ€DÔÜ%×-Ñ-×>Ñ>×ZÑZÓ\€DÔä×Ñ×+Ñ+×;Ñ;¸D×<LÑ<LÐejÐ;ÖkÜ—]‘]ˆ�
ä—]‘]ˆŒ
ä	œŸ™Õ	)Ü×+Ò+Õ-Ü6°vÓ>ˆDŒJ÷ .÷ 
*ð 	‡J�J‡M�M�$—*‘*ÔÜ×&Ñ&×4Ñ4×AÑAØ�
‰
Ø×$Ñ$Ø×*Ñ*ð Bð €D…L÷	 .Õ-ú÷ 
*Õ	)ús$   Ã,F&ÄFÄF&Æ
F#	ÆF&Æ&
F4c                 ó:  • [         R                  R                  R                  U R                  5        [         R                  R
                  R                  UR                  U R                  5      5      nU R                  USS9nU H�  nX4   nUc  M  US:X  aD  US   R                  [         R                  R                  R                  5       5      US'   S US'   MV  UR                  [         R                  R                  R                  5       5      X4'   M‘     U$ )NT)Úpixel_valuesrq   rz   r   Úpenultimate_hidden_states)r   r   r%   Úload_model_gpur�   Úclip_visionÚclip_preprocessr$   r†   rŒ   r&   )r+   Úimager“   r�   r7   Úts         r   Ú$patched_ClipVisionModel_encode_imagerš   ¬   sÞ   € Ü×Ñ×(Ñ(×7Ñ7¸¿¹ÔEÜ×&Ñ&×2Ñ2×BÑBÀ5Ç8Á8ÈD×L\ÑL\ÓC]Ó^€LØ�j‰j lÈˆjÐN€GãˆØ‰JˆØ‹=Ø�OÓ#Ø78¸±u·x±xÄ×@SÑ@S×@dÑ@d×@xÑ@xÓ@zÓ7{�Ð3Ñ4Ø+/�˜Ó(àŸT™T¤+×"5Ñ"5×"FÑ"F×"ZÑ"ZÓ"\Ó]�“
ñ ð €Nr   c                  óÆ  • [         [        R                  R                  R                  l        [        [        R                  R                  R                  l        [        [        R                  R                  R                  l
        [        [        R                  R                  R                  l        [        [        R                  R                  R                  l        g )N)r?   r   r   r    ÚClipTokenWeightEncoderÚencode_token_weightsrm   ÚSDClipModelrG   rƒ   Úforwardr‘   r–   ÚClipVisionModelrš   Úencode_imager   r   r   Úpatch_all_clipr¢   ½   s‡   € ÜOk„K×Ñ× Ñ ×7Ñ7ÔLÜ8S„K×Ñ× Ñ ×,Ñ,Ô5Ü7R„K×Ñ× Ñ ×,Ñ,Ô4Ü?^„K×Ñ×#Ñ#×3Ñ3Ô<ÜCg„K×Ñ×#Ñ#×3Ñ3Ô@Ø
r   )éM   Trr   NNNNT)!rI   r)   Úldm_patched.controlnet.cldmr   Ú ldm_patched.k_diffusion.samplingÚ!ldm_patched.ldm.modules.attentionÚ.ldm_patched.ldm.modules.diffusionmodules.modelÚ4ldm_patched.ldm.modules.diffusionmodules.openaimodelÚldm_patched.modules.args_parserÚldm_patched.modules.model_baseÚ$ldm_patched.modules.model_managementÚ!ldm_patched.modules.model_patcherÚldm_patched.modules.samplersÚldm_patched.modules.sdÚldm_patched.modules.sd1_clipÚldm_patched.modules.clip_visionÚldm_patched.modules.opsr   rR   Úmodules.opsr   Útransformersr   r   r   r   r   r?   rm   rƒ   r‘   rš   r¢   r   r   r   Ú<module>r´      su   ðó 
Û Û "Û 'Û (Û 5Û ;Û ;Û &Û %Û +Û (Û #Û Û #Û &ß %Ð %å 'ß wÕ wò%rðP [_ØW[Ø8<ô)6òX%$òPò.ó"r   