§
    ’Þj–‚ ã                   óR  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dl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 dlZd dlZd dl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 dlZd dlZd dl	Z	d dl m!Z!m"Z"m#Z# d	d
l$m%Z%m&Z&m'Z'm(Z( d dl m)Z)m*Z* d	dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@  e@e jA        jB        ¦  «         G d„ de<e jA        jB        ¦  «        ¦   «         ZCd„ ZD	 d dlEmFZG eGjH        ZId„ ZJeJeG_H        n#  Y nxY w	 d dlEmFZG eGjK        jL        jM        ZNd„ ZO ePeO¦  «        eGjK        _L        n#  Y nxY wi ZQd„ ZRd„ ZSe!jT        ZTd	ZUdZVe jW        jX        ZYe jZ        jX        Z[d a\d a] ej^        ¦   «         Z_i Z` e
ja        ¦   «         jb        Zc G d„ d¦  «        Zdd„ Zed„ Zfd„ ZgdÅd„ZhdÅd„ZidÆd„Zjd „ Zkd!„ ZldÇd"„Zm G d#„ d$en¦  «        Zo G d%„ d&¦  «        Zp G d'„ d(ep¦  «        ZqdÈd*„Zrd+„ Zsd,„ Ztd-„ ZudÉd/„Zv ejw        d	¦  «        Zxd0„ Zyd azd1„ Z{d2„ Z|d3„ Z}d4„ Z~ ee>d5¦  «        se}e>_€         ee>d6¦  «        se~e>_�        d7„ Z‚d8„ Zƒd9„ Z„d:„ Z…d;„ Z†d<„ Z‡d=„ Zˆd>Z‰d)ZŠ G d?„ d@¦  «        Z‹ G dA„ dBejŒ        ¦  «        Z�dC„ ZŽdDZ�dE„ Z�dFZ‘e‰Z’dGZ“dZ”e‰Z•dHZ–dIZ—dJ„ Z˜dK„ Z™dL„ ZšdM„ Z› G dN„ dO¦  «        Zœd)Z�dPZždPZŸdQZ dZ¡dRZ¢dSZ£dTZ¤dUZ¥dZ¦dVZ§dWZ¨e”Z©dIZªd.Z«d)Z¬d)Z­da®dX„ Z¯dY„ Z° G dZ„ d[¦  «        Z± G d\„ d]e²¦  «        Z³d^Z´dÉd_„Zµd`„ Z¶da„ Z·db„ Z¸dcZ¹dd„ Zºde„ Z»df„ Z¼dg„ Z½ G dh„ di¦  «        Z¾djZ¿ eÀdkecdlz  ¦  «        ZÁd)ZÂdmZÃejÄ        dnk    r‚ G do„ dpejÅ        ¦  «        ZÆ ejÇ        dqd)¬r¦  «        jÈ        ZÉejÊ         ejË        eÆ¦  «        ejÌ        feÉ_Í        ejÌ        eÉ_Î         ejÇ        dqd)¬r¦  «        jÏ        ZÐejÊ        ejÌ        feÐ_Í        ds„ ZÑdt„ ZÒdu„ ZÓ G dv„ dw¦  «        ZÔ ejÕ        dxdy¦  «        ZÖ G dz„ d{¦  «        Z× e×¦   «         ZØd|„ ZÙd}„ ZÚd~„ ZÛdÊd„ZÜde‰d	fd€„ZÝd.d)e‰d d	ddfd�„ZÞdÉd‚„Zßdƒ„ Zàd„„ Zád…„ Zâd†„ Zã	 	 	 dËd‡e jA        jä        dˆeåd‰e jA        jä        fdŠ„ZædÇd‡e jA        jä        d‹eçdŒeçfd�„ZèdÊdŽ„Zéd�„ Zêe:d	d�d‘dfd’„ZëdÌd”„Zìd•„ Zíd–„ Zîd—„ Zïd˜„ ZðdÇd™„ZñdÍd›„Zòd.e:d.d.ddddd)d“dddde jW        d.i dddfdœeåfd�„Zódž„ ZôdŸ„ ZõdÉd „ZödÎd¡„Z÷ eDdš¦  «        d.e:d.d.dd)ddddde jW        d.d“d.dddfd¢„¦   «         Zød.e:d“dddfd£„ZùdÏd¤„Zúd¥„ Zû G d¦„ d§¦  «        Züd¨„ Zýd©„ Zþg Zÿdª„ �Z d«„ �Z G d¬„ d­¦  «        �Z �e¦   «         �Zd®„ �Zd¯„ �Z G d°„ d±¦  «        �Zd²„ �Zd³„ �Zd´„ �Z	d�a
 G dµ„ d¶¦  «        �Z G d·„ d¸e²¦  «        �Z ed¹d¬º¦  «        �ZedÇd»„¦   «         �Zd¼„ �Z G d½„ d¾¦  «        �Zd.d.d.dd)de:d d dd)d.e jW        d dd¿dÀd“dddd.d.d)d.d d.d.dfdÁ„�Zd.d.d.dd)de:d d dd)d.e jW        d dd¿dÀd“dddd.d.d)d.d d.d.dfdÂ„�Z�e�j        �e�_        e*�j        d“fdÃe*fdÄ„�ZdS )Ðé    N)Úcontextmanager)Ú
ContextVar)ÚThreadPoolExecutor©Úinit_empty_weights)Útqdm©Úwraps)Úsafetensors2ÚruntimeÚ	row_viewsé   )Ú
MAX_RANGESÚ
COLD_PIECEÚcold_rangesÚprefetch_ranges)Ú__version__Úprofile_type)	Úapply_pre_quantizationÚcache_quantization_for_fileÚdetect_and_convertÚdetect_safetensors_formatÚsd_split_linearÚsplit_linear_modulesÚsplit_fused_weightsÚget_extension_handlerÚnormalize_extension_path)ÚfreezeÚqfloat8Úqint2Úqint4Úqint8ÚquantizeÚQModuleMixinÚQLinearÚQTensorÚquantize_moduleÚregister_qmodulec                   óp   ‡ — e Zd ZdZedd„¦   «         Zedˆ fd„	¦   «         Zdej        dej        fd„Z	ˆ xZ
S )Ú
QEmbeddingNc                 óš   — d |_          | |j        |j        |j        |j        |j        |j        |j        |j        j	        ||||d¬¦  «        S )NT)ÚdtypeÚdeviceÚweightsÚactivationsÚ	optimizerÚquantize_input)
ÚbiasÚnum_embeddingsÚembedding_dimÚpadding_idxÚmax_normÚ	norm_typeÚscale_grad_by_freqÚsparseÚweightr,   )ÚclsÚmoduler.   r/   r0   r-   s         ú4C:\Users\johnn\OneDrive\Documents\AI\mmgp\offload.pyÚqcreatezQEmbedding.qcreateg   s„   € àˆŒØˆs�FÔ)¨6Ô+?ÀÔASÐV\ÔVeÐgmÔgwÐyô  zSð  U[ô  Ubð  jpô  jwô  j}ð  FLð  V]Ø +°yÐQUðWñ Wô Wð 	Wó    c                 óð   •— t          ¦   «                              ||||¦  «        }d|j        v r+|                     d|j        d         d|j        v¬¦  «         nt          |d¦  «        r|j        |_        |S )NÚembed_scale)Ú
persistent)ÚsuperÚfrom_moduleÚ_buffersÚregister_bufferÚ_non_persistent_buffers_setÚhasattrrA   )r;   r<   r.   r/   r0   ÚqmoduleÚ	__class__s         €r=   rD   zQEmbedding.from_modulel   s’   ø€ å‘'”'×%Ò% f¨g°{ÀIÑNÔNˆØ˜FœOÐ+Ð+Ø×#Ò# M°6´?À=Ô3QÐ^kÐsyô  tVð  _VÐ#ñ  Wô  Wð  Wð  WÝ�V˜]Ñ+Ô+ð 	5Ø"(Ô"4ˆGÔØˆr?   ÚinputÚreturnc           	      ó0  — t           j        j                             || j        | j        | j        | j        | j        | j	        ¦  «        }t          | dd ¦  «        }t          j        |¦  «        r!|                     |j        |j        ¬¦  «        }|€|n||z  S )NrA   )r-   r,   )ÚtorchÚnnÚ
functionalÚ	embeddingÚqweightr5   r6   r7   r8   r9   ÚgetattrÚ	is_tensorÚtor-   r,   )ÚselfrK   ÚoutputrA   s       r=   ÚforwardzQEmbedding.forwardt   sž   € Ý”Ô$×.Ò.°°t´|ÀTÔEUÐW[ÔWdÐfjÔftÐvzô  wNð  PTô  P[ñ  ]ô  ]ˆÝ˜d M°4Ñ8Ô8ˆÝŒ?˜;Ñ'Ô'ð 	SØ%Ÿ.š.°´ÀVÄ\˜.ÑRÔRˆKØ$Ð,ˆvˆv°&¸;Ñ2FÐFr?   ©NNN)Ú__name__Ú
__module__Ú__qualname__r2   Úclassmethodr>   rD   rN   ÚTensorrX   Ú__classcell__©rJ   s   @r=   r*   r*   d   s    ø€ € € € € à€DØðWð Wð Wñ „[ðWð ðð ð ð ð ñ „[ððG˜Uœ\ð G¨e¬lð Gð Gð Gð Gð Gð Gð Gð Gr?   r*   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó@   •‡ — t          ‰ ¦  «        ˆˆ fd„¦   «         }|S )Nc                  óp   •— t          j        ‰¦  «        5   ‰| i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S ©N)rN   r-   )ÚargsÚkwargsr-   Úfuncs     €€r=   Úwrapperz/cudacontext.<locals>.decorator.<locals>.wrapper   s‰   ø€ å”˜fÑ%Ô%ð -ð -Ø�t˜TÐ, VÐ,Ð,ð-ð -ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   –+«/²/r	   )rg   rh   r-   s   ` €r=   Ú	decoratorzcudacontext.<locals>.decorator~   s9   øø€ Ý	ˆt‰Œð	-ð 	-ð 	-ð 	-ð 	-ñ 
Œð	-ð ˆr?   )Ú_orig_get_parameter_deviceÚ	parameter)r-   ri   s   ` r=   Úcudacontextrl   }   s$   ø€ ðð ð ð ð ð Ðr?   c                 ón   — t          | dd ¦  «        }|�t          j        |¦  «        S t          | ¦  «        S ©NÚ_force_device)rS   rN   r-   rj   )rk   Úforceds     r=   Ú_patched_get_parameter_devicerq   ‹   s7   € Ý˜ O°TÑ:Ô:ˆØÐÝ”< Ñ'Ô'Ð'Ý)¨)Ñ4Ô4Ð4r?   c                 ón   — t          | dd ¦  «        }|�t          j        |¦  «        S t          | ¦  «        S rn   )rS   rN   r-   Ú_orig_device)rV   rp   s     r=   Ú_devicert   —   s7   € Ý˜˜°Ñ5Ô5ˆØÐÝ”< Ñ'Ô'Ð'Ý˜DÑ!Ô!Ð!r?   c                 ó–   — t                                dd ¦  «        }|€i }|t           d<   |                     | d ¦  «        }|€i }||| <   |S ©NÚ_cache)Úshared_stateÚget)Ú
cache_nameÚ	all_cacheÚcaches      r=   Ú	get_cacher}   £   sX   € Ý× Ò  ¨DÑ1Ô1€IØÐØˆ	Ø!*��XÑØ�MŠM˜* dÑ+Ô+€EØ€}ØˆØ %ˆ	�*ÑØ€Lr?   c                  ól   — t                                dd ¦  «        } | �|                      ¦   «          d S d S rv   )rx   ry   Úclear)r{   s    r=   Úclear_cachesr€   ®   s;   € Ý× Ò  ¨DÑ1Ô1€IØÐØ�ŠÑÔÐÐÐð Ðr?   é   c                   ó<   — e Zd Zd„ Zed„ ¦   «         Zd„ Zd„ Zd„ ZdS )Úclockc                 ó"   — d| _         d| _        d S ©Nr   )Ú
start_timeÚend_time©rV   s    r=   Ú__init__zclock.__init__Ã   s   € ØˆŒØˆŒˆˆr?   c                 óJ   —  | ¦   «         }t          j         ¦   «         |_        |S rd   )Útimer†   )r;   rV   s     r=   Ústartzclock.startÇ   s   € àˆs‰uŒuˆÝœ™œˆŒØˆr?   c                 ó6   — t          j         ¦   «         | _        d S rd   )r‹   Ú	stop_timerˆ   s    r=   Ústopz
clock.stopÍ   s   € Ýœ	™œˆŒˆˆr?   c                 ó    — | j         | j        z
  S rd   ©rŽ   r†   rˆ   s    r=   Útime_gapzclock.time_gapÐ   s   € ØŒ~ ¤Ñ/Ð/r?   c                 ó(   — | j         | j        z
  d›d�S )Nú.2fÚsr‘   rˆ   s    r=   Úformat_time_gapzclock.format_time_gapÓ   s   € Ø”. 4¤?Ñ2Ð9Ð9Ð9Ð9Ð9r?   N)	rZ   r[   r\   r‰   r]   rŒ   r�   r’   r–   © r?   r=   rƒ   rƒ   Â   sk   € € € € € ðð ð ð ðð ñ „[ðð
$ð $ð $ð0ð 0ð 0ð:ð :ð :ð :ð :r?   rƒ   c                 ó€  — t          j        | ¦  «        r|                      |¦  «        S t          | t          ¦  «        r1i }|                      ¦   «         D ]\  }}t          ||¦  «        ||<   Œ|S t          | t          ¦  «        r,g }| D ]%}|                     t          ||¦  «        ¦  «         Œ&|S t          d¦  «        ‚)Nz)Tensor or list / dict of tensors expected)
rN   rT   rU   Ú
isinstanceÚdictÚitemsÚmove_tensorsÚlistÚappendÚ	TypeError)Úobjr-   Ú_dictÚkÚvÚ_lists         r=   rœ   rœ   ×   sÌ   € Ý„�sÑÔð EØ�vŠv�f‰~Œ~ÐÝ	�C�Ñ	Ô	ð EØˆØ—I’I‘K”Kð 	/ð 	/‰DˆAˆqÝ# A vÑ.Ô.ˆE�!‰HˆHØˆÝ	�C�Ñ	Ô	ð EØˆØð 	2ð 	2ˆAØ�LŠL� a¨Ñ0Ô0Ñ1Ô1Ð1Ð1ØˆåÐCÑDÔDÐDr?   c                 ó4   — | j                              ¦   «         S rd   )r[   Úlower)r£   s    r=   Ú_get_module_namer§   æ   s   € ØŒ<×ÒÑÔÐr?   c                 óP   — | dk     rt           x} t          _        | t          _        | S r…   )Údefault_verboseLevelr   ÚverboseLevel)Úlevels    r=   Ú_compute_verbose_levelr¬   ê   s%   € Øˆa‚x€xÝ,@Ð@ˆ•Ô)Ø %…LÔØ€Lr?   c                 ó°   — t          | pd¦  «        } | dk    r$t          t          j        dd¦  «        pd¦  «        } | dk    rt          j        dk    rdnd} | S )Nr   Úperc_reserved_mem_maxÚntgš™™™™™Ù?g333333ã?)ÚfloatÚosÚgetenvÚname)r®   s    r=   Ú_get_perc_reserved_mem_maxr´   ð   sf   € Ý!Ð"7Ð"<¸1Ñ=Ô=ÐØ˜qÒ Ð Ý %¥b¤iÐ0GÈÑ&KÔ&KÐ&PÈqÑ QÔ QÐà Ò!Ð!Ý(*¬°4ª¨  ¸SÐØ Ð r?   c                 ó   — | t           z  }|S rd   )Úphysical_memory)r®   Úmax_reservable_memorys     r=   Ú_get_max_reservable_memoryr¸   ù   s   € Ø1µOÑCÐØ!Ð!r?   é   r—   c                 ó„  — d }g }g }g }d }|                       ¦   «         D �]W\  }}	|dk    rŒ|d k    rÖ|                     |¦  «        rr|                     d¦  «        }
|                     d¦  «        }|t          |
¦  «        dz
           }t	          |¦  «        \  }}||k    r|                     |	¦  «         |}nOt          |¦  «        |k    s|r1|                     d¦  «        |v r||z  }|                     |¦  «         d }g }d\  }}|d k    rht	          |¦  «        \  }}t          |	t          j	        j
        ¦  «        r|dz   d}}|dz   }�Œ.|dk    r#||}}|d d…         }|                     |	¦  «         �ŒYt          |¦  «        |k    s|r1|                     d¦  «        |v r||z  }|                     |¦  «         ||fS )NÚ ú.r   ©Néÿÿÿÿr¾   r   )Únamed_modulesÚ
startswithÚsplitÚlenÚ_extract_num_from_strrž   Úrstripr™   rN   rO   Ú
ModuleList)ÚmodelÚ
min_floorsÚextra_towersÚcur_blocks_prefixÚtowers_modulesÚtowers_namesÚfloors_modulesÚ
tower_nameÚsubmodule_nameÚ	submoduleÚdepth_prefixÚ
depth_namer«   ÚpreÚnumÚcur_blocks_seqs                   r=   Ú_detect_main_towersrÕ   ý   s%  € ØÐØ€NØ€Là€NØ€Jð &+×%8Ò%8Ñ%:Ô%:ð  1ñ  1Ñ!ˆ˜	à˜2ÒÐØà Ò$Ð$Ø×(Ò(Ð):Ñ;Ô;ð =Ø0×6Ò6°sÑ;Ô;�Ø+×1Ò1°#Ñ6Ô6�
Ø$¥S¨Ñ%6Ô%6°qÑ%8Ô9�Ý1°%Ñ8Ô8‘	��cà˜.Ò(Ð(Ø"×)Ò)¨)Ñ4Ô4Ð4à!$��å�~Ñ&Ô&¨*Ò4Ð4¸Ð4È:×K\ÒK\Ð]`ÑKaÔKaÐeqÐKqÐKqØ" nÑ4�NØ ×'Ò'¨
Ñ3Ô3Ð3Ø!�
Ø "�Ø4<Ñ1Ð! >à Ò$Ð$Ý-¨nÑ=Ô=‰IˆC�#Ý˜)¥e¤hÔ&9Ñ;Ô;ð 1Ø47¸#±IÀ >Ð!Ø+¨cÑ1�
‘
Ø�q’�Ø47¸ >Ð!Ø+¨S¨b¨SÔ1�
Ø×%Ò% iÑ0Ô0Ð0ùå
ˆ>ÑÔ˜jÒ(Ð(¨NÐ(¸z×?PÒ?PÐQTÑ?UÔ?UÐYeÐ?eÐ?eØ˜.Ñ(ˆØ×Ò˜JÑ'Ô'Ð'à˜Ð'Ð'r?   c                 óð  — t           j                             | ¦  «        r| S ddlm}  || ¦  «        j        }|d         }|d d…         }t          |¦  «        dk    rt          d¦  «        ‚	 ddlm	} t          j        j
        |dd…         Ž                      dd	¦  «        }t          |¦  «        dk    r*t          j        j
        |dd …         Ž } ||||¬
¦  «        } n |||¬¦  «        } n	#  d } Y nxY w| S )Nr   )ÚPathr¾   r   zfile not found)Úhf_hub_downloadé   ú\ú/)Úrepo_idÚfilenameÚ	subfolder)rÜ   rÝ   )r±   ÚpathÚisfileÚpathlibr×   ÚpartsrÂ   Ú	ExceptionÚhuggingface_hubrØ   ÚjoinÚreplace)Ú
model_pathr×   Ú_pathÚ	_filenamerØ   ÚrepoIdÚ
_subfolders          r=   Ú
_get_modelrì   0  s  € Ý	„w‡~‚~�jÑ!Ô!ð ØÐàÐÐÐÐÐØˆD�ÑÔÔ"€EØ�b”	€IØ�#�2�#ŒJ€EÝ
ˆ5�z„z�1‚}€}ÝÐ(Ñ)Ô)Ð)ð
	Ø8Ð8Ð8Ð8Ð8Ð8Ý”W”\ 5¨¨1¨¤:Ð/×7Ò7¸¸cÑBÔBˆFå�5‰zŒz˜AŠ~ˆ~ÝœWœ\¨5°°°¬9Ð6�
Ø,˜_°VÀyÐ]gÐhÑhÔh�
�
à,˜_°VÀyÐQÑQÔQ�
øøð	Øˆ:ˆ:ˆ:øøøØÐs   Á-A?C- Ã-C3c                 óä   — | j         �t          | j         ¦  «        dk    r| S | j         t          t          | j         ¦  «        ¦  «                 }t	          |d¦  «        st	          |d¦  «        r|S | S )Nr   ÚconfigÚ
base_model)Ú_modulesrÂ   ÚnextÚiterrH   )rÆ   Ú
sub_modules     r=   Ú_remove_model_wrapperrô   J  sp   € ØŒ>Ð!ÝˆuŒ~ÑÔ Ò!Ð!ØˆLØ”¥¥T¨%¬.Ñ%9Ô%9Ñ :Ô :Ô;€JÝˆz˜(Ñ#Ô#ð ¥w¨z¸,Ñ'GÔ'Gð ØÐØ€Lr?   c                 óà  — | j         }| j        }|                      ¦   «         sJ||||z   …                              |¦  «                             |¦  «        }|                     | ¦  «         |S t          |¦  «        dk    r6|                      t          j        ¦  «        }t          j        ||f¦  «        }nH|                      d¦  «                             t          j        ¦  «        }t          j        ||f¦  «        }|€|||||z   …<   n,| 	                    | 
                    ¦   «         |z   ||¦  «         ||||z   …         }|                     |¦  «        }t          j        ||¦  «        }|S ©Nr   r   )r,   ÚshapeÚis_contiguousÚviewÚcopy_rÂ   rN   Úuint8ÚreshapeÚcopyÚdata_ptr)Úsource_tensorÚ
big_tensorÚoffsetÚlengthÚcopierr,   r÷   Úts           r=   Ú_move_to_pinned_tensorr  U  sW  € ØÔ€EØÔ€EØ×&Ò&Ñ(Ô(ð Ø�v˜v¨™Ð.Ô/×4Ò4°UÑ;Ô;×@Ò@ÀÑGÔGˆØ	�Š�ÑÔÐØˆÝ
ˆ5�z„z�A‚~€~Ø×Ò�uœ{Ñ+Ô+ˆÝŒM˜!˜f˜YÑ'Ô'ˆˆð ×Ò˜qÑ!Ô!×&Ò&¥u¤{Ñ3Ô3ˆÝŒM˜!˜f˜YÑ'Ô'ˆà€~Ø./ˆ
�6˜6 F™?Ð*Ñ+Ð+à�Š�J×'Ò'Ñ)Ô)¨FÑ2°A°vÑ>Ô>Ð>Ø�6˜6 F™?Ð*Ô+€AØ	�Šˆu‰Œ€AÝŒ�a˜ÑÔ€AØ€Hr?   c                   ó   — e Zd ZdZdS )Ú_PinningMemoryErrorzYAllocation or host-registration failure, distinct from loading callbacks and copy errors.N©rZ   r[   r\   Ú__doc__r—   r?   r=   r  r  m  s   € € € € € ØcÐcÐcÐcr?   r  c                   ó4   — e Zd Zd„ Zd„ Zd„ Zd	d„Zd„ Zd„ ZdS )
Ú_PinningCopierc                 ó  — t           j                             ¦   «         | _        t	          t          ¦   «         dt           j        j        | j        f¬¦  «        | _        t          j	        ¦   «         | _
        t          j        ¦   «         | _        d S )NÚmmgp_pinning©Úmax_workersÚthread_name_prefixÚinitializerÚinitargs)rN   ÚcudaÚcurrent_devicer-   r   Ú_staging_copy_threadsÚ
set_deviceÚexecutorÚcollectionsÚOrderedDictÚblocksÚ	threadingÚLockÚ
lock_guardrˆ   s    r=   r‰   z_PinningCopier.__init__u  s‰   € Ý”j×/Ò/Ñ1Ô1ˆŒÝ*Õ7LÑ7NÔ7NÐcqõ  @Eô  @Jô  @Uð  aeô  alð  `nð  oñ  oô  oˆŒÝ!Ô-Ñ/Ô/ˆŒÝ#œ.Ñ*Ô*ˆŒˆˆr?   c                 ó"  ‡ ‡‡	‡
— ‰ j         t          t          ‰ j         ¦  «        ¦  «                 }|g|t          z   dz
  t          z  gcŠŠ	t	          |                     ¦   «         |fg¦  «        Š
ˆˆ	ˆ
ˆ fd„}t          d|t          ¦  «        D ]�}‰ j                             t          j
        ||z   |                     ¦   «         |z   t          t          ||z
  ¦  «        ¦  «        }|                     |¦  «         |                     |¦  «         Œ‚d S )Nr   c                 óÔ   •— ‰j         5  ‰dxx         dz  cc<   ‰d         dk    }d d d ¦  «         n# 1 swxY w Y   |r'‰                     ¦   «          ‰rt          ‰¦  «         d S d S d S rö   )r  r   Ú_drop_mapped_pages)Ú_ÚdoneÚholderÚleftÚmappedrV   s     €€€€r=   Úcopiedz#_PinningCopier.copy.<locals>.copied‚  sÉ   ø€ Ø”ð $ð $Ø�Q��”˜1‘��‘Ø˜A”w !’|�ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð ð /Ø—’‘”�Øð /Ý& vÑ.Ô.Ð.Ð.Ð.ð/ð /ð/ð /s   ‰2²6¹6r   )r  rñ   ÚreversedÚSTAGING_CHUNK_SIZEÚ_mapped_pagesrþ   Úranger  ÚsubmitÚctypesÚmemmoveÚminÚadd_done_callbackrž   )rV   ÚdstÚsourcer  Úfuturesr&  r  Úfuturer#  r$  r%  s   `       @@@r=   rý   z_PinningCopier.copy{  s=  øøøø€ Ø”+�d¥8¨D¬KÑ#8Ô#8Ñ9Ô9Ô:ˆØ�x 6Õ,>Ñ#>ÀÑ#BÕGYÑ"YÐ!Zˆˆ�õ  §¢Ñ!2Ô!2°FÐ ;Ð<Ñ=Ô=ˆð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/õ ˜A˜vÕ'9Ñ:Ô:ð 	#ð 	#ˆFØ”]×)Ò)­&¬.¸#À¹,ÈÏÊÑHYÔHYÐ\bÑHbÕdgÕhzð  }Cð  FLñ  }Lñ  eMô  eMñ  Nô  NˆFØ×$Ò$ VÑ,Ô,Ð,Ø�NŠN˜6Ñ"Ô"Ð"Ð"ð	#ð 	#r?   c                 ó   — g | j         |<   d S rd   )r  )rV   Úblock_nos     r=   Ústart_blockz_PinningCopier.start_block�  s   € Ø "ˆŒ�HÑÐÐr?   r   c                 ó  — g }t          | j        ¦  «        |k    rd| j                             d¬¦  «        \  }}|D ]}|                     ¦   «          Œ|                     |¦  «         t          | j        ¦  «        |k    °d|S )NF©Úlast)rÂ   r  ÚpopitemÚresultrž   )rV   Úkeepr"  r5  r2  r3  s         r=   Úwaitz_PinningCopier.wait’  s‡   € ØˆÝ�$”+ÑÔ Ò%Ð%Ø $¤× 3Ò 3¸Ð 3Ñ ?Ô ?ÑˆH�gØ!ð  ð  �Ø—’‘”��Ø�KŠK˜Ñ!Ô!Ð!õ	 �$”+ÑÔ Ò%Ð%ð
 ˆr?   c                 ó  — t          |j        |                     ¦   «         |                     ¦   «         | j        ¦  «        |_        | j                             |j        j        ¦  «         	                    ¦   «         | _
        |j        j        S rd   )Ú_HostRegistrationÚbaserþ   Únumelr-   Úregistrationr  r+  Úregisterr;  Ú
lock_errorÚ
registered)rV   ÚblockÚowners      r=   Úlockz_PinningCopier.lock›  se   € å.¨u¬z¸5¿>º>Ñ;KÔ;KÈUÏ[Ê[É]Ì]Ð\`Ô\gÑhÔhˆÔØœ-×.Ò.¨uÔ/AÔ/JÑKÔK×RÒRÑTÔTˆŒØÔ!Ô,Ð,r?   c                 óž   — 	 |                       ¦   «          | j                             ¦   «          d S # | j                             ¦   «          w xY wrd   )r=  r  Úshutdownrˆ   s    r=   Úclosez_PinningCopier.close¡  sH   € ð	%Ø�IŠI‰KŒKˆKàŒM×"Ò"Ñ$Ô$Ð$Ð$Ð$øˆDŒM×"Ò"Ñ$Ô$Ð$Ð$øøøs	   ‚1 ±AN©r   )	rZ   r[   r\   r‰   rý   r6  r=  rH  rK  r—   r?   r=   r  r  q  ss   € € € € € ð+ð +ð +ð#ð #ð #ð(#ð #ð #ðð ð ð ð-ð -ð -ð%ð %ð %ð %ð %r?   r  c                   óN   ‡ — e Zd Zˆ fd„Zˆ fd„Zd„ Zˆ fd„Zdˆ fd„	Zˆ fd„Zˆ xZ	S )	Ú_ReadAheadPinningCopierc                 ó¸   •— t          ¦   «                              ¦   «          t          j        ¦   «         t          j        ¦   «         c| _        | _        d| _        d S r…   )rC   r‰   r  ÚdequeÚbufferedÚoutstandingÚbuffered_bytes©rV   rJ   s    €r=   r‰   z _ReadAheadPinningCopier.__init__¬  sJ   ø€ Ý‰Œ×ÒÑÔÐÝ*5Ô*;Ñ*=Ô*=½{Ô?PÑ?RÔ?RÐ'ˆŒ�tÔ'ØˆÔÐÐr?   c                 ó¢  •— | j         sd S t          d„ | j         D ¦   «         ¦  «        }|rot          | j        ¦  «        dk    rH| j                             ¦   «         D ]}|                     ¦   «          Œt          | j        ¦  «        dk    °Ht          |¦  «         | j        t          t          | j        ¦  «        ¦  «                 }t          |¦  «        }| j         rH| j                              ¦   «         \  }}}t          ¦   «                              |||¦  «         ~| j         °H|r"| j                             ||d …         ¦  «         d| _        d S )Nc                 óB   — g | ]\  }}}|                      ¦   «         |f‘ŒS r—   ©rþ   )Ú.0r!  r1  Úcounts       r=   ú
<listcomp>z2_ReadAheadPinningCopier._flush.<locals>.<listcomp>´  s.   € Ð]Ð]Ð]Ñ;K¸1¸fÀe˜VŸ_š_Ñ.Ô.°Ð6Ð]Ð]Ð]r?   r   r   )rQ  r   rÂ   rR  Úpopleftr;  r   r  rñ   r'  rC   rý   rž   rS  )	rV   Úcoldr3  r2  Úfirstr0  r1  rY  rJ   s	           €r=   Ú_flushz_ReadAheadPinningCopier._flush±  sP  ø€ ØŒ}ð 	ØˆFÝÐ]Ð]ÈtÌ}Ð]Ñ]Ô]Ñ^Ô^ˆØð 	"Ý�dÔ&Ñ'Ô'¨!Ò+Ð+Ø"Ô.×6Ò6Ñ8Ô8ð $ð $�FØ—M’M‘O”O�O�Oõ �dÔ&Ñ'Ô'¨!Ò+Ð+õ ˜DÑ!Ô!Ð!Ø”+�d¥8¨D¬KÑ#8Ô#8Ñ9Ô9Ô:ˆÝ�G‘”ˆØŒmð 	Ø!%¤×!6Ò!6Ñ!8Ô!8ÑˆC�˜Ý‰GŒG�LŠL˜˜f eÑ,Ô,Ð,Øð Œmð 	ð ð 	5ØÔ×#Ò# G¨E¨F¨F¤OÑ4Ô4Ð4ØˆÔÐÐr?   c                 óh  — d}||k     r©t          t          | j        z
  ||z
  ¦  «        }| j                             ||z   ||||z   …         |f¦  «         | xj        |z  c_        ||z  }| j        t          k    st          | j        ¦  «        t          k    r|                      ¦   «          ||k     °§d S d S r…   )r.  r   rS  rQ  rž   rÂ   r   r^  )rV   r0  r1  r  r  rY  s         r=   rý   z_ReadAheadPinningCopier.copyÄ  s¹   € ØˆØ�vŠoˆoÝ�
 TÔ%8Ñ8¸&À6¹/ÑJÔJˆEØŒM× Ò  #¨¡,°°v¸fÀu¹nÐ7LÔ0MÈuÐ!UÑVÔVÐVØÐÔ 5Ñ(ÐÔØ�e‰OˆFØÔ"¥jÒ0Ð0µC¸¼Ñ4FÔ4FÍ*Ò4TÐ4TØ—’‘”�ð �vŠoˆoˆoˆoˆoˆor?   c                 ór   •— |                       ¦   «          t          ¦   «                              |¦  «         d S rd   )r^  rC   r6  )rV   r5  rJ   s     €r=   r6  z#_ReadAheadPinningCopier.start_blockÎ  s.   ø€ Ø�Š‰ŒˆÝ‰Œ×Ò˜HÑ%Ô%Ð%Ð%Ð%r?   r   c                 ód  •— |                       ¦   «          t          ¦   «                              |¦  «        }| j        rrt	          j        d„ | j        d         D ¦   «         ¦  «        rI| j                             ¦   «          | j        r)t	          j        d„ | j        d         D ¦   «         ¦  «        °I|S )Nc              3   ó>   K  — | ]}|                      ¦   «         V — Œd S rd   )r"  )rX  r3  s     r=   ú	<genexpr>z/_ReadAheadPinningCopier.wait.<locals>.<genexpr>Õ  s*   è è € Ð/`Ð/`À&°·²±´Ð/`Ð/`Ð/`Ð/`Ð/`Ð/`r?   r   )r^  rC   r=  rR  ÚbuiltinsÚallr[  )rV   r<  r"  rJ   s      €r=   r=  z_ReadAheadPinningCopier.waitÒ  s©   ø€ Ø�Š‰ŒˆÝ‰wŒw�|Š|˜DÑ!Ô!ˆØÔð 	'¥8¤<Ð/`Ð/`ÈDÔL\Ð]^ÔL_Ð/`Ñ/`Ô/`Ñ#`Ô#`ð 	'ØÔ×$Ò$Ñ&Ô&Ð&ð Ôð 	'¥8¤<Ð/`Ð/`ÈDÔL\Ð]^ÔL_Ð/`Ñ/`Ô/`Ñ#`Ô#`ð 	'àˆr?   c                 ó¸   •— 	 t          ¦   «                              ¦   «          | j                             ¦   «          d S # | j                             ¦   «          w xY wrd   )rC   rK  rR  r   rT  s    €r=   rK  z_ReadAheadPinningCopier.closeÙ  sO   ø€ ð	%Ý‰GŒG�MŠM‰OŒOˆOàÔ×"Ò"Ñ$Ô$Ð$Ð$Ð$øˆDÔ×"Ò"Ñ$Ô$Ð$Ð$øøøs	   ƒ > ¾ArL  )
rZ   r[   r\   r‰   r^  rý   r6  r=  rK  r_   r`   s   @r=   rN  rN  ¨  s°   ø€ € € € € ð ð  ð  ð  ð  ð
 ð  ð  ð  ð  ð&ð ð ð&ð &ð &ð &ð &ðð ð ð ð ð ð%ð %ð %ð %ð %ð %ð %ð %ð %r?   rN  Tc                 ó  — ddl m}  |¦   «         }t          j        | dd|¬¦  «        5 }|                     ¦   «         D ]}|                     |¦  «        ||<   Œ|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   ||fS )Nr   ©r  ÚptÚcpu)Ú	frameworkr-   Úwritable_tensors)r  r  r   Ú	safe_openÚkeysÚ
get_tensorÚmetadata)Ú	file_pathrl  r  ÚsdÚfr¢   rp  s          r=   Ú_safetensors_load_filert  à  sÒ   € Ø'Ð'Ð'Ð'Ð'Ð'Ø	ˆ‰Œ€Bå	Ô	 	°TÀ%Ð[kÐ	lÑ	lÔ	lð  ÐpqØ—’‘”ð 	$ð 	$ˆAØ—L’L ‘O”OˆBˆq‰EˆEØ—:’:‘<”<ˆð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð
 ˆxˆ<Ðs   ©AA9Á9A=Â A=c                 óŠ   — t          |                      ¦   «         ¦  «        }t          j                             | |¦  «         ~d S rd   )Ú_make_bufferÚclonerN   ÚutilsÚswap_tensors©ÚpÚqs     r=   Ú_force_load_bufferr}  ë  s6   € å�Q—W’W‘Y”YÑÔ€AÝ	„K×Ò˜Q Ñ"Ô"Ð"Ø	ˆˆr?   c                 ó˜   — t          |                      ¦   «         | j        ¬¦  «        }t          j                             | |¦  «         ~d S )N©Úrequires_grad)Ú_make_parameterrw  r€  rN   rx  ry  rz  s     r=   Ú_force_load_parameterr‚  ñ  s=   € Ý˜Ÿš™	œ	°´ÐAÑAÔA€AÝ	„K×Ò˜Q Ñ"Ô"Ð"Ø	ˆˆr?   c                 óü   — t          j        ¦   «         rKt          j        d¦  «        5  t           j                             | ¦  «        cd d d ¦  «         S # 1 swxY w Y   t           j                             | ¦  «        S ©NF)rN   Úis_inference_mode_enabledÚinference_moderO   ÚBuffer©Útensors    r=   rv  rv  ö  s£   € ÝÔ&Ñ(Ô(ð +ÝÔ! %Ñ(Ô(ð 	+ð 	+Ý”8—?’? 6Ñ*Ô*ð	+ð 	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+åŒ8�?Š?˜6Ñ"Ô"Ð"s   ¨AÁAÁAFc                 ó  — t          j        ¦   «         rMt          j        d¦  «        5  t           j                             | |¬¦  «        cd d d ¦  «         S # 1 swxY w Y   t           j                             | |¬¦  «        S )NFr  )rN   r…  r†  rO   Ú	Parameter)r‰  r€  s     r=   r�  r�  ü  sÄ   € ÝÔ&Ñ(Ô(ð KÝÔ! %Ñ(Ô(ð 	Kð 	KÝ”8×%Ò% f¸MÐ%ÑJÔJð	Kð 	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	KåŒ8×Ò˜f°MÐÑBÔBÐBs   ¨!AÁAÁAc                 óv   — | j                              dd ¦  «        }|€t          t          ¦  «        x}| _        |S )NÚ_mm_graph_serial)Ú__dict__ry   rñ   Ú_graph_serialsr�  )r‰  Úserials     r=   Ú_graph_serialr‘    s9   € àŒ_× Ò Ð!3°TÑ:Ô:€FØ€~Ý+/µÑ+?Ô+?Ð?ˆ�Ô(Ø€Mr?   c                 óX   — t           dz  a || j        v r|| j        |<   d S || j        |<   d S ©Nr   )Ú_placement_generationÚ_parametersrE   )r<   r³   r‰  s      r=   Ú_install_tensorr–    sB   € õ ˜QÑÐØˆvÔ!Ð!Ð!Ø#)ˆÔ˜4Ñ Ð Ð à &ˆŒ˜ÑÐÐr?   c                 óf   — t          | d¦  «        r t          j        | j        ¦  «        r| j        S | S )NÚ_data)rH   rN   rT   r˜  rˆ  s    r=   Ú_unwrap_quantized_tensorr™    s4   € Ýˆv�wÑÔð ¥E¤O°F´LÑ$AÔ$Að ØŒ|ÐØ€Mr?   c                 ó²  — g }t          | dd ¦  «        t          t          fv rÇt          | j        ¦  «        }|                     d|f¦  «         t          | d¦  «        r$| j        �|                     d| j        f¦  «         nft          | d¦  «        r#| j        �|                     d| j        f¦  «         t          | d¦  «        r#| j	        �|                     d| j	        f¦  «         |S t          | d	¦  «        r+t          | j        ¦  «        }|                     d|f¦  «         t          | d¦  «        r#| j        �|                     d| j        f¦  «         |S )
NÚ_qtypeÚdataÚ_scale_shiftÚscale_shiftÚ_scaleÚscaleÚ_shiftÚshiftr˜  )
rS   r    r!   r™  r˜  rž   rH   r�  rŸ  r¡  )rV   Ú
subtensorsrœ  s      r=   Ú!_qtensor_get_quantized_subtensorsr¤    sc  € Ø€JÝˆt�X˜tÑ$Ô$­µ¨Ð6Ð6Ý'¨¬
Ñ3Ô3ˆØ×Ò˜6 4˜.Ñ)Ô)Ð)Ý�4˜Ñ(Ô(ð 	:¨TÔ->Ð-JØ×Ò˜}¨dÔ.?Ð@ÑAÔAÐAÐAå�t˜XÑ&Ô&ð :¨4¬;Ð+BØ×!Ò! 7¨D¬KÐ"8Ñ9Ô9Ð9Ý�t˜XÑ&Ô&ð :¨4¬;Ð+BØ×!Ò! 7¨D¬KÐ"8Ñ9Ô9Ð9ØÐåˆt�WÑÔð *Ý'¨¬
Ñ3Ô3ˆØ×Ò˜6 4˜.Ñ)Ô)Ð)Ýˆt�XÑÔð 2 4¤;Ð#:Ø×Ò˜7 D¤KÐ0Ñ1Ô1Ð1ØÐr?   c                 óJ  — t          |t          ¦  «        r|}nd„ |D ¦   «         }|                     dd ¦  «        }|�Wt          | d¦  «        r@t          | j        d¦  «        r+t          j        | j        j        ¦  «        r|| j        _        n|| _        t          | dd ¦  «        t          t          fv rSd|v r|d         �|d         | _
        d S d|v r|d         �|d         | _        d|v r|d         �|d         | _        d S d S d S d|v r|d         �|d         | _        d S d S d S )Nc                 ó   — i | ]\  }}||“Œ	S r—   r—   ©rX  r³   r‰  s      r=   ú
<dictcomp>z5_qtensor_set_quantized_subtensors.<locals>.<dictcomp>4  s   € Ð@Ð@Ð@¡L D¨&�4˜Ð@Ð@Ð@r?   rœ  r˜  r›  rž  r   r¢  )r™   rš   ry   rH   r˜  rN   rT   rS   r    r!   r�  rŸ  r¡  )rV   Úsub_tensorsÚsub_maprœ  s       r=   Ú!_qtensor_set_quantized_subtensorsr«  0  se  € Ý�+�tÑ$Ô$ð AØˆˆà@Ð@°KÐ@Ñ@Ô@ˆà�;Š;�v˜tÑ$Ô$€DØÐÝ�4˜Ñ!Ô!ð 	¥g¨d¬j¸'Ñ&BÔ&Bð 	ÅuÄÐW[ÔWaÔWgÑGhÔGhð 	Ø#ˆDŒJÔÐàˆDŒJåˆt�X˜tÑ$Ô$­µ¨Ð6Ð6Ø˜GÐ#Ð#¨°Ô(>Ð(JØ '¨Ô 6ˆDÔÐÐà˜'Ð!Ð! g¨gÔ&6Ð&BØ% gÔ.�”Ø˜'Ð!Ð! g¨gÔ&6Ð&BØ% gÔ.�”��ð "Ð!Ð&BÐ&Bð �gÐÐ '¨'Ô"2Ð">Ø! 'Ô*ˆDŒKˆKˆKð ÐÐ">Ð">r?   Úget_quantized_subtensorsÚset_quantized_subtensorsc                 ó$   — t          | dd¦  «        S )NÚ
_mm_mappedF©rS   rˆ  s    r=   Ú
_is_mappedr±  N  s   € å�6˜<¨Ñ/Ô/Ð/r?   c                 óæ   — d„ |                       ¦   «         D ¦   «         }|D ]\  }}}d |j        |<   Œ	 |                      d¦  «        |D ]\  }}}||j        |<   ŒS # |D ]\  }}}||j        |<   Œw xY w)Nc                 óx   — g | ]7}|j                              ¦   «         D ]\  }}|®t          |¦  «        ¯|||f‘ŒŒ8S rd   )r•  r›   r±  )rX  r<   r³   r{  s       r=   rZ  z_to_cpu.<locals>.<listcomp>T  ss   € ð  Jð  Jð  J &È6ÔK]×KcÒKcÑKeÔKeð  Jð  JÁÀÀaÐijÐivõ  |Fð  GHñ  |Iô  |IÐivˆV�T˜1ÐÐivÐivÐivÐivr?   rj  )Úmodulesr•  rU   )rÆ   Úheldr<   r³   r!  r{  s         r=   Ú_to_cpur¶  R  sº   € ð Jð  J¨E¯MªM©O¬Oð  Jñ  Jô  J€DØð (ð (‰ˆ��aØ#'ˆÔ˜4Ñ Ð ð)Ø�xŠx˜‰Œà#ð 	)ð 	)‰OˆF�D˜!Ø'(ˆFÔ˜tÑ$Ð$ð	)ø˜tð 	)ð 	)‰OˆF�D˜!Ø'(ˆFÔ˜tÑ$Ð$ð	)øøøs   ³A ÁA0c                 ó  ‡ ‡‡‡— d„ Št          ˆfd„‰                      ¦   «         D ¦   «         ¦  «        }|s|S ˆ fd„|D ¦   «         Šˆ fd„|D ¦   «         Šˆˆˆfd„‰                      ¦   «         D ¦   «         }|rt          d|› d�¦  «        ‚|S )Nc                 óB   — t          | j        ¦  «        t          j        u S rd   )Útyperœ  rN   r^   rˆ  s    r=   ú<lambda>z_cpu_modules.<locals>.<lambda>a  s   € �4 ¤Ñ,Ô,µ´Ð<€ r?   c              3   ó  •K  — | ]„\  }}t          |d d¦  «        sjt          |dd¦  «        ¯'t          j        t          ‰t	          j        |                     ¦   «         |                     ¦   «         ¦  «        ¦  «        ¦  «        ¯€|V — Œ…dS )Ú
_mm_unusedFÚ
_mm_on_cpuN)rS   rd  re  ÚmapÚ	itertoolsÚchainÚ
parametersÚbuffers)rX  r³   r<   Úplains      €r=   rc  z_cpu_modules.<locals>.<genexpr>b  sÙ   øè è € ð Pð P™<˜4 ÅGÈFÐT`ÐbgÑDhÔDhð PÝ˜V \°5Ñ9Ô9ðPÝ>F¼lÍ3ÈuÕV_ÔVeÐfl×fwÒfwÑfyÔfyð  |B÷  |Jò  |Jñ  |Lô  |Lñ  WMô  WMñ  LNô  LNñ  ?Oô  ?OðP�$ð Pð Pð Pð Pð Pð Pr?   c                 ó‚   •— h | ];}‰                      |¦  «                             ¦   «         D ]}t          |¦  «        ’ŒŒ<S r—   )Úget_submoduler´  Úid)rX  r³   r<   rÆ   s      €r=   ú	<setcomp>z_cpu_modules.<locals>.<setcomp>f  sG   ø€ ÐbÐbÐb $¸e×>QÒ>QÐRVÑ>WÔ>W×>_Ò>_Ñ>aÔ>aÐbÐb°F•2�f‘:”:ÐbÐbÐbÐbr?   c                 ó´   •— h | ]T}‰                      |¦  «                             ¦   «         D ]*}|                     ¦   «         ¯|                     ¦   «         ’Œ+ŒUS r—   )rÅ  rÁ  rA  rþ   )rX  r³   r{  rÆ   s      €r=   rÇ  z_cpu_modules.<locals>.<setcomp>g  sZ   ø€ ÐjÐjÐj˜t°e×6IÒ6IÈ$Ñ6OÔ6O×6ZÒ6ZÑ6\Ô6\ÐjÐj°Ð`a×`gÒ`gÑ`iÔ`iÐjˆa�jŠj‰lŒlÐjÐjÐjÐjr?   c                 óœ   •— g | ]H\  }}t          |¦  «        ‰v¯t          ˆˆfd „|                     d¬¦  «        D ¦   «         ¦  «        ¯F|‘ŒIS )c              3   óZ   •K  — | ]%} ‰|¦  «        o|                      ¦   «         ‰v V — Œ&d S rd   rW  )rX  r{  rÃ  Úshareds     €€r=   rc  z*_cpu_modules.<locals>.<listcomp>.<genexpr>h  sy   øè è € ð  dsð  dsð  MNÐdiÐdiÐjkÑdlÔdlð  eHÐqr×q{Òq{Ñq}Ôq}ð  BHð  rHð  dsð  dsð  dsð  dsð  dsð  dsr?   F©Úrecurse)rÆ  ÚanyrÁ  )rX  r³   r<   Úcpu_objectsrÃ  rË  s      €€€r=   rZ  z _cpu_modules.<locals>.<listcomp>h  s´   ø€ ð  tð  tð  t‘\�T˜6½bÀ¹j¼jÐP[Ð>[Ð>[Õ`cð  dsð  dsð  dsð  dsð  dsð  RX÷  Rcò  Rcð  lqð  Rcñ  Rrô  Rrð  dsñ  dsô  dsñ  asô  asÐ>[ˆDÐ>[Ð>[Ð>[r?   z
Module(s) zj share the weights of a module kept in RAM: mark them with runtime.lookup_on_cpu or runtime.unused as well)Útupler¿   Ú
ValueError)rÆ   ÚnamesÚtiedrÏ  rÃ  rË  s   `  @@@r=   Ú_cpu_modulesrÔ  ]  s  øøøø€ ð =Ð<€EÝð Pð Pð Pð P¨5×+>Ò+>Ñ+@Ô+@ð Pñ Pô Pñ Pô P€Eàð ØˆØbÐbÐbÐb¨%ÐbÑbÔb€KØjÐjÐjÐj uÐjÑjÔj€Fð tð  tð  tð  tð  tð  t U×%8Ò%8Ñ%:Ô%:ð  tñ  tô  t€DØð XÝð  W dð  Wð  Wð  Wñ  Xô  Xð  	XØ€Lr?   c                 ó0  — t          | dd ¦  «        }|€d S  |¦   «         }|sd S t          |t          ¦  «        r!t          |                     ¦   «         ¦  «        }g }|D ]3\  }}|€Œt          j        |¦  «        r|                     ||f¦  «         Œ4|r|nd S )Nr¬  )rS   r™   rš   r�   r›   rN   rT   rž   )r{  Úgetterr©  Úoutr³   r‰  s         r=   Ú_get_quantized_subtensorsrØ  m  s¹   € Ý�QÐ2°DÑ9Ô9€FØ€~ØˆtØ�&‘(”(€KØð ØˆtÝ�+�tÑ$Ô$ð 0Ý˜;×,Ò,Ñ.Ô.Ñ/Ô/ˆØ
€CØ#ð 'ð '‰ˆˆfØˆ>ØÝŒ?˜6Ñ"Ô"ð 	'Ø�JŠJ˜˜f�~Ñ&Ô&Ð&øØÐˆ3ˆ3˜4Ðr?   c                 óF   — t          | dd ¦  «        }|€dS  ||¦  «         dS )Nr­  FTr°  )r{  r©  Úsetters      r=   Ú_set_quantized_subtensorsrÛ  ~  s3   € Ý�QÐ2°DÑ9Ô9€FØ€~ØˆuØ
€Fˆ;ÑÔÐØˆ4r?   c                 ó4   — t          d„ | D ¦   «         ¦  «        S )Nc              3   ón   K  — | ]0\  }}t          j        |¦  «        |                     ¦   «         z  V — Œ1d S rd   )rN   rA  Úelement_size©rX  r!  r  s      r=   rc  z%_subtensors_nbytes.<locals>.<genexpr>†  s=   è è € ÐIÐI±T°Q¸�uŒ{˜1‰~Œ~ §¢Ñ 0Ô 0Ñ0ÐIÐIÐIÐIÐIÐIr?   )Úsum)r©  s    r=   Ú_subtensors_nbytesrá  …  s   € ÝÐIÐI¸[ÐIÑIÔIÑIÔIÐIr?   c                 óŽ   — t          | ¦  «        }|r!|D ]\  }}|                     ¦   «         }~|c S ~|                      ¦   «         S rd   )rØ  rþ   )r{  r©  r!  r  Úrefs        r=   Ú_get_tensor_refrä  ˆ  sT   € Ý+¨AÑ.Ô.€KØð Øð 	ð 	‰DˆAˆqØ—*’*‘,”,ˆCØØˆJˆJˆJØØ�:Š:‰<Œ<Ðr?   i   c                   ó,   — e Zd ZdZdd„Zd„ Zd„ Zd„ ZdS )	r?  z¬Own the backing RAM until CUDA has finished using it and successfully unregistered it. flags: cudaHostRegister's (2 maps the RAM in
    the GPU's address space, mapped.py).r   c                 óÜ   — |||||f\  | _         | _        | _        | _        | _        d\  | _        | _        t          j        ¦   «         | _	        t          t          j        c| _        | _        d S )N)FN)ÚbufferÚpointerÚsizer-   ÚflagsrE  Úerrorr  r  ÚguardÚ_failed_host_registrationsÚsysÚis_finalizingÚfailures)rV   rç  rè  ré  r-   rê  s         r=   r‰   z_HostRegistration.__init__™  sb   € ØHNÐPWÐY]Ð_eÐglÐHlÑEˆŒ�T”\ 4¤9¨d¬k¸4¼:Ø&1Ñ#ˆŒ˜œÝ”^Ñ%Ô%ˆŒ
Ý,FÍÔHYÐ)ˆŒ�tÔ)Ð)Ð)r?   c                 óˆ  — | j         5  | j        rt          d¦  «        ‚t          j                             ¦   «                              | j        | j        | j	        ¦  «        }t          |¦  «        dk    r5d| _        t          5  t          | j        z  ad d d ¦  «         n# 1 swxY w Y   |cd d d ¦  «         S # 1 swxY w Y   d S )Nz!Host memory is already registeredr   T)rì  rE  ÚRuntimeErrorrN   r  ÚcudartÚcudaHostRegisterrè  ré  rê  ÚintÚ_pinned_bytes_lockÚtotal_pinned_bytes©rV   rë  s     r=   rC  z_HostRegistration.registerŸ  s6  € àŒZð 	ð 	ØŒð HÝ"Ð#FÑGÔGÐGÝ”J×%Ò%Ñ'Ô'×8Ò8¸¼ÀtÄyÐRVÔR\Ñ]Ô]ˆEÝ�5‰zŒz˜QŠˆØ"&�”Ý'ð 4ð 4Ý&¨$¬)Ñ3Ð&ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4àð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s6   ˆA:B7ÂBÂB7ÂB"	Â"B7Â%B"	Â&B7Â7B;Â>B;c           	      óæ  — | j         5  | j        s	 d d d ¦  «         dS | j        �	 d d d ¦  «         dS 	 |                      ¦   «         rt	          d¦  «        ‚t
          j                             | j        ¦  «        5  t
          j                             | j        ¦  «         t
          j         	                    ¦   «          
                    | j        ¦  «        }t          |¦  «        dk    rt	          d|› �¦  «        ‚	 d d d ¦  «         n# 1 swxY w Y   nˆ# t          $ r{}t          |¦  «        | _        | | j        | j        <   	 t!          d| j        t$          z  d›d|› d	�t&          j        ¬
¦  «         n# t          $ r Y nw xY wY d }~d d d ¦  «         dS d }~ww xY wd| _        t*          5  t,          | j        z  ad d d ¦  «         n# 1 swxY w Y   d | _        	 d d d ¦  «         dS # 1 swxY w Y   d S )NTFzPython is shutting downr   zcudaHostUnregister returned z[mmgp] Unable to release r”   z MB of registered RAM: zI. Memory retained for safety; restart the process before further loading.)Úfile)rì  rE  rë  rï  rò  rN   r  r-   Úsynchronizeró  ÚcudaHostUnregisterrè  rõ  rã   Ústrrð  Úprintré  ÚONE_MBrî  Ústderrrö  r÷  rç  rø  s     r=   rK  z_HostRegistration.close«  sX  € àŒZð 	ð 	Ø”?ð Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð ŒzÐ%Øð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð
Ø×%Ò%Ñ'Ô'ð BÝ&Ð'@ÑAÔAÐAÝ”Z×&Ò& t¤{Ñ3Ô3ð Sð SÝ”J×*Ò*¨4¬;Ñ7Ô7Ð7Ý!œJ×-Ò-Ñ/Ô/×BÒBÀ4Ä<ÑPÔP�EÝ˜5‘z”z Q’�Ý*Ð+QÈ%Ð+QÐ+QÑRÔRÐRð 'ðSð Sð Sñ Sô Sð Sð Sð Sð Sð Sð Søøøð Sð Sð Sð Søøõ
 ð ð ð Ý  ™ZœZ�”
Ø.2�”˜dœlÑ+ðÝð  v°d´iÅ&Ñ6Hð  vð  vð  vÐejð  vð  vð  võ  }@ô  }Gð  Hñ  Hô  Hð  Hð  HøÝ ð ð ð Ø�Dðøøøà�u�u�uð)	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	øøøøðøøøð $ˆDŒOÝ#ð 0ð 0Ý" d¤iÑ/Ð"ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0àˆDŒKØð3	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s­   ˆ	G&žG&´ADÁ;B DÃ<DÄD	ÄDÄD	ÄDÄG&Ä
FÄ#FÅ0E3Å2FÅ3
F Å=FÅ?F Æ FÆG&ÆFÆG&Æ*GÆ:G&ÇG
	Ç
G&ÇG
	ÇG&Ç&G*Ç-G*c                 ó.   — |                       ¦   «          d S rd   )rK  rˆ   s    r=   Ú__del__z_HostRegistration.__del__È  s   € Ø�
Š
‰Œˆˆˆr?   NrL  )rZ   r[   r\   r	  r‰   rC  rK  r  r—   r?   r=   r?  r?  –  sc   € € € € € ð,ð ,ðZð Zð Zð Zð
ð 
ð 
ðð ð ð:ð ð ð ð r?   r?  c                   ó   — e Zd ZdS )Ú
_LockedRAMN©rZ   r[   r\   r—   r?   r=   r  r  Ì  s   € € € € € à€Dr?   r  c                 ó4  — t           s$t          j        | t          j        dd¬¦  «        d fS t	          j        | dz   t          j        ¬¦  «        }|j        j         dz  }|||| z   …                              t          ¦  «        }t          j	        |¦  «        |fS )NTrj  ©r,   Ú
pin_memoryr-   é   ©r,   )
ÚPIN_LOCKS_RAMrN   Úemptyrû   Únumpyr,  rœ  rù   r  Ú
from_numpy)ré  ÚramrŒ   rG  s       r=   Ú_pinned_blockr  Ð  sŽ   € åð YÝŒ{˜4¥u¤{¸tÈEÐRÑRÔRÐTXÐXÐXÝ
Œ+�d˜T‘k­¬Ð
5Ñ
5Ô
5€CØŒZŒ_Ð˜tÑ#€EØ��e˜d‘lÐ"Ô#×(Ò(­Ñ4Ô4€EÝÔ˜EÑ"Ô" EÐ)Ð)r?   i   c                 ó<   — | t           z   dz
  t           z  t           z  S r“  )ÚBLOCK_ALIGN©Únbytess    r=   Ú_block_alignedr  Ú  s   € Ø•[Ñ  1Ñ$­Ñ4µ{ÑBÐBr?   i   i   i  @ gš™™™™™©?c                  ó  — t          t          j        d¦  «        r2t          t          j        ¦   «                              ¦   «         ¦  «        nt          j        ¦   «         pd} t          dt          d| dz  ¦  «        ¦  «        S )NÚcpu_affinityr   é   é   )	rH   ÚpsutilÚProcessrÂ   r  r±   Ú	cpu_countÚmaxr.  )Úcpuss    r=   r  r  å  sg   € å3:½6¼>È>Ñ3ZÔ3ZÐs�3�vŒ~ÑÔ×,Ò,Ñ.Ô.Ñ/Ô/Ð/Õ`bÔ`lÑ`nÔ`nÐ`sÐrs€DÝˆq•#�a˜ ™Ñ#Ô#Ñ$Ô$Ð$r?   c                 ó  — t          | ¦  «        t          j        u r|                      ¦   «         r| gnd S t	          | d¦  «        sd S g }|                      ¦   «         d         D ])}t          t          | |¦  «        ¦  «        }|€ d S ||z  }Œ*|S )NÚ__tensor_flatten__r   )r¹  rN   r^   rø   rH   r   Ú_staging_leavesrS   )r  Úleavesr³   Úinners       r=   r!  r!  ë  s    € åˆA�w„w•%”,ÐÐØ—o’oÑ'Ô'Ð1�ˆsˆs¨TÐ1Ý�1Ð*Ñ+Ô+ð ØˆtØ€FØ×$Ò$Ñ&Ô& qÔ)ð ð ˆÝ¥¨¨4Ñ 0Ô 0Ñ1Ô1ˆØˆ=Ø�4�4Ø�%‰ˆˆØ€Mr?   c                 óf   — |                       ¦   «         |                      ¦   «         z  dz   dz  dz  S )Né?   é@   )rA  rÞ  )r  s    r=   Ú_staging_nbytesr'  ù  s.   € Ø�GŠG‰IŒI˜ŸšÑ(Ô(Ñ(¨2Ñ-°"Ñ4°rÑ9Ð9r?   c                 ó.  ‡ ‡— t          ‰ ¦  «        t          ‰¦  «        urdS t          ‰ ¦  «        t          j        u r•‰ j        ‰j        k    o„‰ j        ‰j        k    ott          j        ‰                      d¦  «                             t          j        ¦  «        ‰                     d¦  «                             t          j        ¦  «        ¦  «        S ‰  	                    ¦   «         \  }}‰ 	                    ¦   «         \  }}	 ||k    oY||k    oS‰  
                    ¦   «         ‰ 
                    ¦   «         k    o)‰                      ¦   «         ‰                     ¦   «         k    }n# t          $ r Y dS w xY w|o t          j        ˆ ˆfd„|D ¦   «         ¦  «        S )NFr¾   c              3   óp   •K  — | ]0}t          t          ‰|¦  «        t          ‰|¦  «        ¦  «        V — Œ1d S rd   )Ú_same_moved_tensorrS   )rX  r³   ÚaÚbs     €€r=   rc  z%_same_moved_tensor.<locals>.<genexpr>  sE   øè è € Ð%oÐ%oÐaeÕ&8½ÀÀDÑ9IÔ9IÍ7ÐSTÐVZÑK[ÔK[Ñ&\Ô&\Ð%oÐ%oÐ%oÐ%oÐ%oÐ%or?   )r¹  rN   r^   r,   r÷   Úequalrü   rù   rû   r   ré  Ústriderã   rd  re  )r+  r,  rÒ  ÚmetaÚnames_bÚmeta_bÚ	same_metas   ``     r=   r*  r*  ü  s‘  øø€ ÝˆA�w„w•d˜1‘g”gÐÐØˆuÝˆA�w„w•%”,ÐÐØŒw˜!œ'Ò!ð  K a¤g°´Ò&8ð  K½U¼[ÈÏÊÐSUÉÌ×I[ÒI[Õ\aÔ\gÑIhÔIhÐjk×jsÒjsÐtvÑjwÔjw×j|Òj|õ  ~Cô  ~Iñ  kJô  kJñ  >Kô  >Kð  	KØ×&Ò&Ñ(Ô(�K€Eˆ4Ø×*Ò*Ñ,Ô,�O€GˆVðØ˜WÒ$Ðm¨°ªÐm¸A¿FºF¹H¼HÈÏÊÉÌÒ<PÐmÐUV×U]ÒU]ÑU_ÔU_Ðcd×ckÒckÑcmÔcmÒUmˆ	ˆ	øÝð ð ð ØˆuˆuðøøøàÐo�œÐ%oÐ%oÐ%oÐ%oÐ%oÐinÐ%oÑ%oÔ%oÑoÔoÐos   ÄA E# Å#
E1Å0E1c                   óH   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ fd	„Z
d
„ ZdS )Ú_PinnedStagera/  Moves pageable weights to the GPU through two small reusable pinned slots.
    A CUDA copy from pageable RAM goes through a driver staging buffer on the calling thread and cannot overlap GPU work.
    Staging here (CPU copy into pinned memory, then an asynchronous DMA) is faster, and overlaps compute when run by the prefetch thread.
    The CPU copies are memmoves on plain threads: torch's parallel copy_ occupies every core (and keeps its threads spinning), which
    starves the main thread that launches the model kernels. A copy runs on one thread while the main thread is busy (checking again every
    STAGING_CHUNK_SIZE bytes) and its remainder is split across the copy threads as soon as the main thread waits for it, since copying
    mapped weights touched for the first time is bound by page faults (much faster in parallel).
    Quantized tensors are rebuilt around pinned copies of their inner tensors and moved with their own .to(); the first tensor of
    each class is checked against the driver copy and classes that do not match keep the driver copy.c                 óŽ   — d d gd d gdi dd f\  | _         | _        | _        | _        | _        | _        t          ¦   «         | _        d S )Nr   T)ÚslotsÚeventsÚslot_noÚchecked_classesÚenabledÚhelpersr  Úcopy_threadsrˆ   s    r=   r‰   z_PinnedStager.__init__  se   € ØcgÐimÐbnÐquÐw{Ðp|Ð~ð  BDð  FJð  LPð  cPÑ_ˆŒ
�D”K ¤¨tÔ/CÀTÄ\ÐSWÔS_Ý1Ñ3Ô3ˆÔÐÐr?   c           
      óp  ‡ ‡‡‡‡‡— d}||k     �r¦||z
  }‰ j         dk    �rV|t          k    �rJ |¦   «         �r?‰ j        €t          ‰ j         dz
  d¬¦  «        ‰ _        t	          ‰|z   |fg¦  «        }|rt
          n|}|r)t          ‰|z   ‰|z   t          ||¦  «        z   fg¦  «         t          |||¦  «        D ]»Št          ||‰z
  ¦  «        Š‰‰ j         z   dz
  ‰ j         z  Šˆˆˆˆˆ ˆfd„t          ‰‰‰¦  «        D ¦   «         }	|r8‰‰z   |k     r/t          ‰‰z   ‰z   ‰t          |‰‰z   |z   ¦  «        z   fg¦  «         t          j
        ‰‰z   ‰‰z   ‰¦  «         |	D ]}
|
                     ¦   «          ŒŒ¼d S t          t          |¦  «        Št          j
        ‰|z   ‰|z   ‰¦  «         |‰z  }||k     �°¤d S d S )Nr   r   Úmmgp_staging©r  r  c                 ó˜   •— g | ]F}‰j                              t          j        ‰‰z   |z   ‰‰z   |z   t	          ‰‰|z
  ¦  «        ¦  «        ‘ŒGS r—   )r;  r+  r,  r-  r.  )rX  rŒ   r0  r  ÚpartÚpiecerV   Úsrcs     €€€€€€r=   rZ  z*_PinnedStager._memmove.<locals>.<listcomp>)  sˆ   ø€ ð  pð  pð  pð  MR˜tœ|×2Ò2µ6´>À3ÈÁ;ÐQVÑCVÐX[Ð^cÑXcÐfkÑXkÕmpÐquÐw}ð  AFñ  xFñ  nGô  nGñ   Hô   Hð  pð  pð  pr?   )r<  ÚSTAGING_PARALLEL_MIN_SIZEr;  r   r   r   r   r.  r*  r,  r-  r;  r(  )rV   r0  rC  r  Úparallelr  Ú	remainingr\  Ústepr2  r3  r  rA  rB  s   ```        @@@r=   Ú_memmovez_PinnedStager._memmove  sg  øøøøøø€ ØˆØ�vŠo‰oØ ™ˆIØÔ  1Ò$Ñ$¨Õ6OÒ)OÑ)OÐT\ÐT\ÑT^ÔT^Ñ)OØ”<Ð'Ý#5À$ÔBSÐVWÑBWÐlzÐ#{Ñ#{Ô#{�D”Lõ # S¨6¡\°9Ð$=Ð#>Ñ?Ô?�Ø%)Ð8•z�z¨y�Øð [Ý# c¨F¡l°C¸&±LÅ3ÀtÈYÑCWÔCWÑ4WÐ%XÐ$YÑZÔZÐZÝ" 6¨6°4Ñ8Ô8ð (ð (�EÝ   v°¡~Ñ6Ô6�FØ" TÔ%6Ñ6¸Ñ:¸tÔ?PÑP�Dð pð  pð  pð  pð  pð  pð  pð  pð  põ  V[ð  \`ð  bhð  jnñ  Voô  Voð  pñ  pô  p�GØð l ¨¡°Ò 7Ð 7Ý'¨#°©+¸Ñ*>ÀÅcÈ&ÐRWÐZ`ÑR`ÐcgÑRgÑFhÔFhÑ@hÐ)iÐ(jÑkÔkÐkÝ”N 3¨¡;°°e±¸TÑBÔBÐBØ")ð (ð (˜ØŸš™œ˜˜ð(à�ÝÕ+¨YÑ7Ô7ˆFÝŒN˜3 ™<¨¨v©°vÑ>Ô>Ð>Ø�fÑˆFð/ �vŠo‰oˆoˆoˆoˆor?   c                 ó~   — | j         �"| j                              d¬¦  «         d | _         d d gd d gc| _        | _        d S )NT©r=  )r;  rJ  r6  r7  rˆ   s    r=   Úreleasez_PinnedStager.release4  sF   € ØŒ<Ð#ØŒL×!Ò! tÐ!Ñ,Ô,Ð,ØˆDŒLØ#'¨ ,°°t°ÐˆŒ
�D”K�K�Kr?   c                 óB  — | j         dz  x}| _         | j        |         �)| j        |                              ¦   «          d | j        |<   | j        |         �#| j        |                              ¦   «         |k     rœd | j        |<   	 t          j        d¦  «        5  t          j        t          |t          ¦  «        t
          j
        dd¬¦  «        | j        |<   d d d ¦  «         n# 1 swxY w Y   n'# t          $ r d| _        t          d¦  «         Y d S w xY w| j        |         S )Nr   Frj  T)r,   r-   r  zkUnable to allocate Reserved RAM for staged transfers, pageable weights will be copied with slower transfers)r8  r7  rû  r6  rA  rN   r†  r  r  r(  rû   rò  r:  rþ  )rV   r  r8  s      r=   Ú_acquirez_PinnedStager._acquire:  sŠ  € Ø!%¤°Ñ!1Ð1ˆ�$”,ØŒ;�wÔÐ+ØŒK˜Ô ×,Ò,Ñ.Ô.Ð.Ø#'ˆDŒK˜Ñ ØŒ:�gÔÐ&¨$¬*°WÔ*=×*CÒ*CÑ*EÔ*EÈÒ*NÐ*NØ"&ˆDŒJ�wÑðÝÔ)¨%Ñ0Ô0ð Ið IÝ*/¬+µc¸&ÕBTÑ6UÔ6UÕ]bÔ]hÐqvð  DHð  +Iñ  +Iô  +I�D”J˜wÑ'ðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Iøøåð ð ð Ø$�”Ýð  Dñ  Eô  Eð  EØ�t�tðøøøð Œz˜'Ô"Ð"s6   ÂC- Â>C!ÃC- Ã!C%Ã%C- Ã(C%Ã)C- Ã- DÄDc                 ó¤   — t           j                             ¦   «         | j        | j        <   | j        | j                                      ¦   «          d S rd   )rN   r  ÚEventr7  r8  Úrecordrˆ   s    r=   Ú_releasez_PinnedStager._releaseJ  s?   € Ý$)¤J×$4Ò$4Ñ$6Ô$6ˆŒ�D”LÑ!ØŒ�D”LÔ!×(Ò(Ñ*Ô*Ð*Ð*Ð*r?   c                 óÎ  — t          |¦  «        t          j        u r¶|                     ¦   «         |                     ¦   «         z  }||||z   …                              |j        ¦  «                             |j        ¦  «        }|                      | 	                    ¦   «         | 	                    ¦   «         ||¦  «         ||t          |¦  «        z   fS |                     ¦   «         \  }}i }	|D ].}
|                      t          ||
¦  «        |||¦  «        \  |	|
<   }Œ/t          |¦  «                             |	||                     ¦   «         |                     ¦   «         ¦  «        |fS rd   )r¹  rN   r^   rA  rÞ  rù   r,   r÷   rH  rþ   r'  r   Ú_pinned_copyrS   Ú__tensor_unflatten__ré  r.  )rV   r  Úslotr  rE  r  rù   rÒ  r/  r#  r³   s              r=   rS  z_PinnedStager._pinned_copyN  s4  € Ý�‰7Œ7•e”lÐ"Ð"Ø—W’W‘Y”Y §¢Ñ!1Ô!1Ñ1ˆFØ˜˜v¨™Ð.Ô/×4Ò4°Q´WÑ=Ô=×BÒBÀ1Ä7ÑKÔKˆDØ�MŠM˜$Ÿ-š-™/œ/¨1¯:ª:©<¬<¸ÀÑJÔJÐJØ˜¥/°!Ñ"4Ô"4Ñ4Ð4Ð4Ø×*Ò*Ñ,Ô,‰ˆˆtØˆØð 	^ð 	^ˆDØ"&×"3Ò"3µG¸A¸tÑ4DÔ4DÀdÈFÐT\Ñ"]Ô"]ÑˆE�$‰K˜˜Ý�A‰wŒw×+Ò+¨E°4¸¿º¹¼À1Ç8Â8Á:Ä:ÑNÔNÐPVÐVÐVr?   c                  ó   — dS ©NTr—   r—   r?   r=   rº  z_PinnedStager.<lambda>Z  s   € ¨€ r?   c                 ó˜  — t          |¦  «        t          j        j        u r|j        n|}| j        s|                     dd¬¦  «        S t          |¦  «        t          j        u �r¦|                     ¦   «         | 	                    ¦   «         z  }|t          k     s(|                     ¦   «         r|                     ¦   «         r|                     dd¬¦  «        S t          j        |j        |j        d¬¦  «        }|                     d¦  «                             t          j        ¦  «        }t'          d|t(          ¦  «        D ]Ç}t+          t(          ||z
  ¦  «        }|                      |¦  «        }	|	€|                     dd¬¦  «        c S |                      |	                     ¦   «         |                     ¦   «         |z   ||¦  «         ||||z   …                              |	d |…         d¬¦  «         |                      ¦   «          ŒÈ|S t7          |¦  «        }
t          |¦  «        }|
�:| j                             |¦  «        du st=          j        d„ |
D ¦   «         ¦  «        r|                     dd¬¦  «        S tA          d	„ |
D ¦   «         ¦  «        }|t          k     s|tB          k    r|                     dd¬¦  «        S |                      |¦  «        }	|	€|                     dd¬¦  «        S |  "                    ||	d|¦  «        d                              dd¬¦  «        }|                      ¦   «          |  #                    ||¦  «        S )
Nr  T©Únon_blocking©r,   r-   r¾   r   Fc              3   ó>   K  — | ]}|                      ¦   «         V — Œd S rd   ©Ú	is_pinned©rX  Úleafs     r=   rc  z'_PinnedStager.to_gpu.<locals>.<genexpr>o  s0   è è € ÐSxÐSxÐimÐTX×TbÒTbÑTdÔTdÐSxÐSxÐSxÐSxÐSxÐSxr?   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rd   )r'  r_  s     r=   rc  z'_PinnedStager.to_gpu.<locals>.<genexpr>q  s*   è è € Ð>Ð>¨t•_ TÑ*Ô*Ð>Ð>Ð>Ð>Ð>Ð>r?   )$r¹  rN   rO   r‹  rœ  r:  rU   r^   rA  rÞ  ÚSTAGING_MIN_SIZErø   r^  r  r÷   r,   rü   rù   rû   r*  r(  r.  rM  rH  rþ   rú   rQ  r!  r9  ry   rd  re  rà  ÚSTAGING_MAX_SIZErS  Úchecked)rV   r{  rE  r  r  r0  Ú	dst_bytesr  r  rU  r"  r;   r|  s                r=   Úto_gpuz_PinnedStager.to_gpuZ  sï  € Ý˜1‘g”g¥¤Ô!3Ð3Ð3ˆAŒFˆF¸ˆØŒ|ð 	3Ø—4’4˜¨T�4Ñ2Ô2Ð2Ý�‰7Œ7•e”lÐ"Ñ"Ø—W’W‘Y”Y §¢Ñ!1Ô!1Ñ1ˆFØÕ(Ò(Ð(°·²Ñ0AÔ0AÐ(ÀQÇ[Â[Á]Ä]Ð(Ø—t’t˜F°�tÑ6Ô6Ð6Ý”+˜aœg¨Q¬W¸VÐDÑDÔDˆCØŸš B™œ×,Ò,­U¬[Ñ9Ô9ˆIÝ  6Õ+=Ñ>Ô>ð  ð  �ÝÕ/°¸&±ÑAÔA�Ø—}’} VÑ,Ô,�Ø�<ØŸ4š4 °T˜4Ñ:Ô:Ð:Ð:Ð:Ø—’˜dŸmšm™oœo¨q¯zªz©|¬|¸fÑ/DÀfÈhÑWÔWÐWØ˜& ¨&¡Ð0Ô1×7Ò7¸¸W¸f¸W¼ÐTXÐ7ÑYÔYÐYØ—’‘”��ØˆJÝ  Ñ#Ô#ˆÝ�1‰gŒgˆØˆ>˜TÔ1×5Ò5°cÑ:Ô:¸eÐCÐCÅxÄ|ÐSxÐSxÐqwÐSxÑSxÔSxÑGxÔGxÐCØ—4’4˜¨T�4Ñ2Ô2Ð2ÝÐ>Ð>°vÐ>Ñ>Ô>Ñ>Ô>ˆØÕ$Ò$Ð$¨Õ1AÒ(AÐ(AØ—4’4˜¨T�4Ñ2Ô2Ð2Ø�}Š}˜VÑ$Ô$ˆØˆ<Ø—4’4˜¨T�4Ñ2Ô2Ð2Ø×Ò˜a  q¨(Ñ3Ô3°AÔ6×9Ò9¸&ÈtÐ9ÑTÔTˆØ�Š‰ŒˆØ�|Š|˜A˜qÑ!Ô!Ð!r?   c                 óœ  — t          t          |¦  «        t          j        j        u r|j        n|¦  «        }| j                             |d ¦  «        }|t          j        u s|r|S |€M|                     dd¬¦  «        }t          ||¦  «        x}| j        |<   |st          d|j        › d�¦  «         |S |r|n|                     dd¬¦  «        S )Nr  TrY  z3Staged transfers are disabled for tensors of type 'z$' as they do not match a direct copy)r¹  rN   rO   r‹  rœ  r9  ry   r^   rU   r*  rþ  rZ   )rV   r{  r|  r;   ÚsameÚq_refs         r=   rd  z_PinnedStager.checked{  s×   € å�T !™WœW­¬Ô(:Ð:Ð:�1”6�6ÀÑBÔBˆØÔ#×'Ò'¨¨TÑ2Ô2ˆØ•%”,ÐÐ $ÐØˆHØˆ<Ø—D’D˜¨d�DÑ3Ô3ˆEÝ/AÀ!ÀUÑ/KÔ/KÐKˆD�4Ô'¨Ñ,Øð ÝÐ~ÈCÌLÐ~Ð~Ð~ÑÔÐØ�ØÐ=ˆqˆq˜aŸdšd 6¸˜dÑ=Ô=Ð=r?   N)rZ   r[   r\   r	  r‰   rH  rK  rM  rQ  rS  rf  rd  r—   r?   r=   r4  r4  
  s¨   € € € € € ðið ið4ð 4ð 4ðð ð ð6=ð =ð =ð#ð #ð #ð +ð +ð +ð
Wð 
Wð 
Wð ". ð "ð "ð "ð "ðB>ð >ð >ð >ð >r?   r4  r  r  g      Ð?gš™™™™™é?é   é   g{®Gáz„?é   c                  óˆ  — t           �€4t          j        dt          j        d¬¦  «        } t          j        | d¬¦  «        }t          j                             d¬¦  «        t          j                             d¬¦  «        d }}}t          d¦  «        D ]�}|                     ¦   «          | 	                    | d¬¦  «         |                     ¦   «          | 
                    ¦   «          |€|                     |¦  «        n"t          ||                     |¦  «        ¦  «        }Œ�|                      ¦   «         |d	z  z  a ~ ~t           S )
Ni   T)r,   r  r  )r-   )Úenable_timingr  rY  iè  )Ú_pcie_bytes_per_secondrN   r  rû   Ú
empty_liker  rO  r*  rP  rú   rû  Úelapsed_timer.  rA  )r1  ÚtargetrŒ   ÚendÚbestr!  s         r=   Ú
_pcie_rateru  ž  s  € õ Ñ%Ý”˜X­U¬[ÀTÐJÑJÔJˆÝÔ! &°Ð8Ñ8Ô8ˆÝ œ:×+Ò+¸$Ð+Ñ?Ô?ÅÄ×AQÒAQÐ`dÐAQÑAeÔAeÐgk�DˆsˆÝ�q‘”ð 	cð 	cˆAØ�LŠL‰NŒNˆNØ�LŠL˜¨dˆLÑ3Ô3Ð3Ø�JŠJ‰LŒLˆLØ�OŠOÑÔÐØ.2¨l�5×%Ò% cÑ*Ô*Ð*ÅÀDÈ%×J\ÒJ\Ð]`ÑJaÔJaÑ@bÔ@bˆDˆDØ!'§¢¡¤°4¸$±;Ñ!?ÐØ�FÝ!Ð!r?   c                 ó6  — g | ¢|                      ¦   «         ¢R D ]~}t          |t          t          f¦  «        rt	          d„ |D ¦   «         d ¦  «        }t          j        |¦  «        r2|                     ¦   «         t          d|j	        d         ¦  «        z  c S ŒdS )Nc              3   óB   K  — | ]}t          j        |¦  «        ¯|V — Œd S rd   )rN   rT   )rX  Úitems     r=   rc  z_call_rows.<locals>.<genexpr>´  s1   è è € ÐJÐJ 4µE´OÀDÑ4IÔ4IÐJ˜$ÐJÐJÐJÐJÐJÐJr?   r   r¾   r   )
Úvaluesr™   r�   rÐ  rñ   rN   rT   rA  r  r÷   )re   rf   Úvalues      r=   Ú
_call_rowsr{  °  s    € à*�4Ð*˜&Ÿ-š-™/œ/Ð*Ð*ð <ð <ˆÝ�e�d¥E˜]Ñ+Ô+ð 	RÝÐJÐJ¨5ÐJÑJÔJÈDÑQÔQˆEÝŒ?˜5Ñ!Ô!ð 	<Ø—;’;‘=”=¥C¨¨5¬;°r¬?Ñ$;Ô$;Ñ;Ð;Ð;Ð;ð	<àˆ1r?   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )Ú
_PassClimbc                 óÀ   — d\  | _         | _        | _        d d dt          ¦   «         f\  | _        | _        | _        | _        g ddc| _        | _	        | _
        d | _        d S )N©r   r   r   r   r   )rz  ÚlowÚhighÚsetÚtrialr@  Ú	directionÚfailedÚsamplesÚskipÚidleÚanchorrˆ   s    r=   r‰   z_PassClimb.__init__½  sX   € Ø*1Ñ'ˆŒ
�D”H˜dœiØ=AÀ4ÈÍCÉEÌEÐ=QÑ:ˆŒ
�D”I˜tœ~¨t¬{Ø-/°°AÐ*ˆŒ�d”i ¤ØˆŒˆˆr?   c                 ó,   — | j         €| j        n| j         S rd   )rƒ  rz  rˆ   s    r=   Úcurrentz_PassClimb.currentÃ  s   € Ø!œZÐ/ˆtŒzˆz°T´ZÐ?r?   c                 óþ   — ||c| _         | _        t          t          | j        |¦  «        |¦  «        | _        | j        �<|| j        cxk    r|k    s,n d | _        | j                             | j        ¦  «         d S d S d S rd   )	r€  r�  r.  r  rz  rƒ  r…  Úaddr„  )rV   r€  r�  s      r=   Úboundz_PassClimb.boundÆ  sˆ   € Ø! 4ÐˆŒ�$”)Ý�˜TœZ¨Ñ-Ô-¨tÑ4Ô4ˆŒ
ØŒ:Ð!¨#°´Ð*CÐ*CÒ*CÐ*C¸tÒ*CÐ*CÐ*CÐ*CØˆDŒJØŒK�OŠO˜DœNÑ+Ô+Ð+Ð+Ð+ð "Ð!Ð*CÐ*Cr?   c                 ó.  — | j         r| xj         dz  c_         dS | j        €Ut          | j        ¦  «        dk    r=| xj        dz  c_        | j        t
          k     rdS dt          ¦   «         c| _        | _        | j                             |¦  «         t          | j        ¦  «        t          k     rdS t          | j        ¦  «        t          | j        ¦  «        dz           |                      ¦   «         }}g | _        | j        €|| _        ne|| j        dt          z
  z  k     r#| j        || j         hc| _        | _        | _        n,| j                             | j        ¦  «         | j         | _        d | _        | j        | j        vrv| j        | j        | j        z   cxk    r| j        k    rn n| j        | j        z   | _        n:| j                             | j        ¦  «         | j         | _        | j        | j        v°vd| _         |                      ¦   «         |k    S )Nr   FrÙ   r   )r‡  rƒ  rÂ   r…  rˆ  ÚCPU_COMPUTE_RECHECKr‚  r†  rž   ÚCPU_COMPUTE_CLIMB_PASSESÚsortedr‹  r@  ÚCPU_COMPUTE_CLIMB_GAINr„  rz  r�  r€  r�  )rV   ÚsecondsÚmedianÚbefores       r=   r�  z_PassClimb.addÍ  sê  € àŒ9ð 	ØˆIŒI˜‰NˆIŒIØ�5ØŒ:Ð¥# d¤kÑ"2Ô"2°aÒ"7Ð"7ØˆIŒI˜‰NˆIŒIØŒyÕ.Ò.Ð.Ø�uØ%&­©¬Ð"ˆDŒI�t”{ØŒ×Ò˜GÑ$Ô$Ð$ÝˆtŒ|ÑÔÕ7Ò7Ð7Ø�5Ý ¤Ñ-Ô-­c°$´,Ñ.?Ô.?À1Ñ.DÔEÀtÇ|Â|Á~Ä~�ˆØˆŒØŒ:ÐØˆDŒIˆIØ�d”i 1Õ'=Ñ#=Ñ>Ò>Ð>Ø15´¸VÀtÄ~ÀoÐEVÐ.ˆDŒJ˜œ	 4¤; ;àŒK�OŠO˜DœNÑ+Ô+Ð+Ø"œn˜_ˆDŒNØˆŒ
ØŒn D¤KÐ/Ð/ØŒx˜4œ:¨¬Ñ6ÐCÐCÒCÐC¸$¼)ÒCÐCÐCÐCÐCØ!œZ¨$¬.Ñ8�”
ØØŒK�OŠO˜DœNÑ+Ô+Ð+Ø"œn˜_ˆDŒNð Œn D¤KÐ/Ð/ð ˆŒ	Ø�|Š|‰~Œ~ Ò'Ð'r?   N)rZ   r[   r\   r‰   r‹  rŽ  r�  r—   r?   r=   r}  r}  ¹  sS   € € € € € ðð ð ð@ð @ð @ð,ð ,ð ,ð(ð (ð (ð (ð (r?   r}  c                   ó   — e Zd ZdS )Ú_RingCancelledNr  r—   r?   r=   r˜  r˜  î  s   € € € € € Ø€Dr?   r˜  iÿ  c           	      óL  — i }| D ]‘\  }}t          |¦  «        D ]|}|                     |r&|                     ¦   «                              ¦   «         nd|                     ¦   «         |                     ¦   «         |                     ¦   «         z  f|¦  «         Œ}Œ’t          |¦  «        S r…   )r!  Ú
setdefaultÚuntyped_storagerþ   rA  rÞ  Ú_packed_layout)r›   Ú
by_storager"  r!  r  r`  s         r=   Ú_ring_layoutrž  ó  sâ   € ð
 €FØð Sð S‰ˆˆ1Ý# AÑ&Ô&ð 	Sð 	SˆDØ×ÒÀJÐU˜t×3Ò3Ñ5Ô5×>Ò>Ñ@Ô@Ð@ÐTUÐW[×WdÒWdÑWfÔWfÐhl×hrÒhrÑhtÔhtÐw{÷  xIò  xIñ  xKô  xKñ  iKð  Lð  NRñ  Sô  Sð  Sð  Sð	Så˜&Ñ!Ô!Ð!r?   c                 óF  — g i d}}}t          |                      ¦   «         d„ ¬¦  «        D ]Û\  \  }}}}|rT|d         d         |k    sB||d         d         z
  t          z  s)||d         d         |d         d         z   t          z   k    r'|                     |dt          |¦  «        ||g¦  «         |d         }t          |d         ||z   |d         z
  ¦  «        |d<   |d         |z   |d         z
  ||<   |d         |d         z   }ŒÜd„ |D ¦   «         |t          |¦  «        fS )	Nr   c                 ó   — | d         S r…   r—   )Úentrys    r=   rº  z _packed_layout.<locals>.<lambda>  s   € ÐQVÐWXÔQY€ r?   ©Úkeyr¾   rk  r   rÙ   c                 ó<   — g | ]}t          |d d…         ¦  «        ‘ŒS ©Nrk  ©rÐ  )rX  Úruns     r=   rZ  z"_packed_layout.<locals>.<listcomp>  s&   € Ð+Ð+Ð+˜s�E�#�b�q�b”'‰NŒNÐ+Ð+Ð+r?   )r’  r›   r  ÚRING_RUN_GAPrž   r  r  )	r"  ÚrunsÚoffsetsrs  ÚstorageÚptrr  r`  r§  s	            r=   rœ  rœ  þ  sW  € à˜R �3ˆ'€DÝ(.¨v¯|ª|©~¬~ÐCYÐCYÐ(ZÑ(ZÔ(Zð ð Ñ$Ñˆ�#�v Øð 	F�t˜B”x ”{ gÒ-Ð-°#¸¸R¼À¼Ñ2CÅ{Ñ1RÐ-ÐVYÐ\`ÐacÔ\dÐefÔ\gÐjnÐoqÔjrÐstÔjuÑ\uõ  yEñ  ]Eò  WEð  WEØ�KŠK˜˜a¥°Ñ!4Ô!4°d¸GÐDÑEÔEÐEØ�2ŒhˆÝ�S˜”V˜S 6™\¨C°¬FÑ2Ñ3Ô3ˆˆA‰Ø˜1”v ‘| c¨!¤fÑ,ˆ�‰Ø�!Œf�s˜1”v‰oˆˆØ+Ð+ dÐ+Ñ+Ô+¨WµnÀSÑ6IÔ6IÐIÐIr?   c                 ó¾   — t          | ¦  «        }|rd„ |D ¦   «         n@t          | j                             ¦   «         | j                             ¦   «         z  ¦  «        gS )Nc                 ó€   — g | ];\  }}t          |                     ¦   «         |                     ¦   «         z  ¦  «        ‘Œ<S r—   ©r  rA  rÞ  rß  s      r=   rZ  z_leaf_sizes.<locals>.<listcomp>  s;   € ÐQÐQÐQ¹T¸QÀ�N˜1Ÿ7š7™9œ9 q§~¢~Ñ'7Ô'7Ñ7Ñ8Ô8ÐQÐQÐQr?   )rØ  r  rœ  rA  rÞ  ©r{  r©  s     r=   Ú_leaf_sizesr±  
  s�   € å+¨AÑ.Ô.€KØU`ð  _ÐQÐQÀ[ÐQÑQÔQÐQÕguÐvwÔv|÷  wCò  wCñ  wEô  wEð  HIô  HN÷  H[ò  H[ñ  H]ô  H]ñ  w]ñ  h^ô  h^ð  g_ð  _r?   c                 ó$  ‡ ‡‡‡‡‡‡— t           }t          d„ |D ¦   «         ¦  «        s|g }|D ]\\  ŠŠŠ}‰t          k     rt          j        ‰ ‰z   ‰‰¦  «         Œ,‰|z   dz
  |z  Š|ˆ ˆˆˆˆˆfd„t          d‰‰¦  «        D ¦   «         z  }Œ]|D ]}|                     ¦   «          Œd S ˆ fd„|D ¦   «         }t          |d         d         |d         d         |d         d         z   fg¦  «         t          |¦  «        D ]•\  }\  ŠŠŠ‰t          k     r‰n
‰|z   dz
  |z  Šˆˆˆˆˆfd„t          d‰‰¦  «        D ¦   «         }|dz   t          |¦  «        k     r$||dz            \  }}	}
t          |	|	|
z   fg¦  «         |D ]}|                     ¦   «          ŒŒ–d S )Nc                 ó6   — g | ]\  }}}}|t           k    ¯||f‘ŒS r—   )rD  )rX  rC  ré  r!  s       r=   rZ  z_copy_runs.<locals>.<listcomp>  s/   € ÐeÐeÐe©¨¨T°1°aÀ4ÕKdÒCdÐCd˜˜d˜ÐCdÐCdÐCdr?   r   c                 óˆ   •— g | ]>}‰                      t          j        ‰‰z   |z   ‰|z   t          ‰‰|z
  ¦  «        ¦  «        ‘Œ?S r—   ©r+  r,  r-  r.  )rX  rŒ   r@  r;  r  rA  ré  rC  s     €€€€€€r=   rZ  z_copy_runs.<locals>.<listcomp>  sg   ø€ ð  [ð  [ð  [ð  }B˜GŸNšN­6¬>¸4À&¹=È5Ñ;PÐRUÐX]ÑR]Õ_bÐcgÐimÐpuÑiuÑ_vÔ_vÑwÔwð  [ð  [ð  [r?   r   c           
      ó”   •— g | ]D\  }}}}t          d |t          ¦  «        D ]&}‰|z   |z   ||z   t          t          ||z
  ¦  «        f‘Œ'ŒES rL  )r*  r   r.  )rX  rC  ré  r  r!  rŒ   r@  s         €r=   rZ  z_copy_runs.<locals>.<listcomp>  s™   ø€ ð  \ð  \ð  \ÑVjÐVYÐ[_ÐagÐijõ  AFð  GHð  JNõ  PZñ  A[ô  A[ð  \ð  \Ðw|ˆt�f‰}˜uÑ$ c¨E¡kµ3µzÀ4È%Á<Ñ3PÔ3PÐQð  \ð  \ð  \ð  \r?   rÙ   c                 ó‚   •— g | ];}‰                      t          j        ‰|z   ‰|z   t          ‰‰|z
  ¦  «        ¦  «        ‘Œ<S r—   rµ  )rX  rŒ   r0  r;  rA  ré  rC  s     €€€€€r=   rZ  z_copy_runs.<locals>.<listcomp>#  sZ   ø€ ð  Hð  Hð  HÐin�7—>’>¥&¤.°#¸±+¸sÀU¹{ÍCÐPTÐVZÐ]bÑVbÑLcÔLcÑdÔdð  Hð  Hð  Hr?   )
ÚRING_COPY_THREADSr   rD  r,  r-  r*  r;  r   Ú	enumeraterÂ   )r@  r©  r;  Úthreadsr2  r!  r3  ÚpiecesÚindexÚnext_srcÚ	next_sizer0  r  rA  ré  rC  s   ` `        @@@@@r=   Ú
_copy_runsr¿    s¦  øøøøøøø€ õ  €GÝÐeÐe¸4ÐeÑeÔeÑfÔfð 
ØˆØ$(ð 	[ð 	[Ñ ˆC��v˜qØÕ/Ò/Ð/Ý”˜t f™}¨c°4Ñ8Ô8Ð8Ð8à˜w™¨Ñ*¨wÑ6�Øð  [ð  [ð  [ð  [ð  [ð  [ð  [ð  [ð  [õ  FKð  LMð  OSð  UYñ  FZô  FZð  [ñ  [ô  [ñ  [��Øð 	ð 	ˆFØ�MŠM‰OŒOˆOˆOØˆð \ð  \ð  \ð  \Ðnrð  \ñ  \ô  \€FÝ�f˜Q”i ”l F¨1¤I¨a¤L°6¸!´9¸Q´<Ñ$?Ð@ÐAÑBÔBÐBÝ#,¨VÑ#4Ô#4ð ð ÑˆÑ��S˜$ØÕ7Ò7Ð7ˆtˆt¸dÀW¹nÈqÑ>PÐU\Ñ=\ˆð Hð  Hð  Hð  Hð  Hð  Hð  Hð  HÕrwÐxyÐ{ð  BFñ  sGô  sGð  Hñ  Hô  HˆØ�1‰9•s˜6‘{”{Ò"Ð"Ø%+¨E°A©IÔ%6Ñ"ˆAˆx˜Ý˜h¨°9Ñ(<Ð=Ð>Ñ?Ô?Ð?Øð 	ð 	ˆFØ�MŠM‰OŒOˆOˆOð	ðð r?   )ÚtransformerÚtransformer2c                 ó¤   ‡ ‡‡‡‡— ˆˆ fd„‰ D ¦   «         Šg Šˆˆˆfd„Š ‰t          ¦   «         t          ‰ ¦  «        t          ¦   «         ¦  «         ‰S )zËThe groups of models kept in VRAM together: the maximal sets whose models are all co-tenants of each other (both ways; a model that
    may stay beside any other, "*", joins none), of two models or more.c                 ó2   •‡— i | ]Š‰ˆˆfd „‰D ¦   «         “ŒS )c                 ó  •— h | ]|}|‰k    rtt          ‰                     ‰¦  «        t          t          f¦  «        rE|‰‰         v r;t          ‰                     |¦  «        t          t          f¦  «        r‰‰|         v ¯z|’Œ}S r—   )r™   ry   r�   rÐ  )rX  r,  r+  Ú	cotenantss     €€r=   rÇ  z._cotenant_groups.<locals>.<dictcomp>.<setcomp>0  s”   ø€ ð Zð Zð Z˜¨1°ª6¨6µjÀÇÂÈqÑAQÔAQÕTXÕZ_ÐS`Ñ6aÔ6a¨6ÐfgÐktÐuvÔkwÐfwÐfwÝ! )§-¢-°Ñ"2Ô"2µT½5°MÑBÔBð gxØGHÈIÐVWÌLÐGXÐGXð ØGXÐGXÐGXr?   r—   )rX  r+  rÅ  Ú	model_idss    @€€r=   r¨  z$_cotenant_groups.<locals>.<dictcomp>0  sb   øø€ ð nð nð nØ^_ð ð Zð Zð Zð Zð Z˜ið Zñ Zô Zð nð nð nr?   c                 óæ   •— |s,|s*t          | ¦  «        dk    r‰                     | ¦  «         d S t          |¦  «        D ]1} ‰| |hz  |‰|         z  |‰|         z  ¦  «         ||hz
  }||hz  }Œ2d S r“  )rÂ   rž   r�   )ÚgroupÚ
candidatesÚexcludedÚmodel_idÚextendÚfriendsÚgroupss       €€€r=   rÌ  z _cotenant_groups.<locals>.extend4  s¤   ø€ Øð 	 (ð 	Ý�5‰zŒz˜AŠ~ˆ~Ø—’˜eÑ$Ô$Ð$ØˆFÝ˜ZÑ(Ô(ð 	-ð 	-ˆHØˆF�5˜H˜:Ñ% z°G¸HÔ4EÑ'EÀxÐRYÐZbÔRcÑGcÑdÔdÐdØ# x jÑ0ˆJØ 8 *Ñ,ˆHˆHð	-ð 	-r?   )r‚  )rÆ  rÅ  rÌ  rÍ  rÎ  s   ``@@@r=   Ú_cotenant_groupsrÏ  -  s�   øøøøø€ ðnð nð nð nð nØclðnñ nô n€Gà€Fð-ð -ð -ð -ð -ð -ð -ð €F�3‰5Œ5•#�i‘.”.¥#¡%¤%Ñ(Ô(Ð(Ø€Mr?   c                 óæ  ‡ ‡‡‡‡— ˆˆfd„‰ D ¦   «         }‰dk    r|S t          |pt          ¦  «        Ši }t          ‰ |¦  «        D ]ê}t          |ˆ ˆfd„¬¦  «        }	ˆˆfd„|	D ¦   «         }
‰t	          j        |
                     ¦   «         ¦  «        z
  }|	D ]D}t          dt          |‰|         |
|         z
  ¦  «        ¦  «        }|
|xx         |z  cc<   ||z  }ŒE|dk    r|
|	d         xx         |z  cc<   |	D ]5}t          | 	                    ||
|         ¦  «        |
|         ¦  «        ||<   Œ6Œë| 
                    ¦   «         D ],\  }}‰|         dk    rdnt          ‰|         |¦  «        ||<   Œ-|S )au  The budget of each model once the VRAM preload applies (bytes; 0: the whole model). A model alone gets the larger of its budget
    and the preload (0 stays 0). The models of a group kept in VRAM together (_cotenant_groups) share the preload as a total instead: each
    keeps its own budget, and what the preload leaves beyond those goes to them in priority order (priority, else PRELOAD_PRIORITY, then
    their order), each up to its size; the first one also gets what remains beyond its size (every block preloaded: room for state kept
    in VRAM, mmgp.state_ring). A model in several groups gets the smallest of its shares.c                 ór   •— i | ]3}|‰|         d k    s‰d k    r‰|         nt          ‰|         ‰¦  «        “Œ4S rL  )r  )rX  rË  ÚpreloadÚ	requesteds     €€r=   r¨  z#_preload_floors.<locals>.<dictcomp>H  sg   ø€ ð  Zð  Zð  Zð  DLˆh¨y¸Ô/BÀaÒ/GÐ/GÈ7ÐVWÊ<È<˜	 (Ô+Ð+Õ]`ÐajÐksÔatÐv}Ñ]~Ô]~ð  Zð  Zð  Zr?   r   c                 ó~   •— | ‰v r‰                      | ¦  «        nt          ‰¦  «        ‰                      | ¦  «        fS rd   )r¼  rÂ   )rË  rÆ  Úorders    €€r=   rº  z!_preload_floors.<locals>.<lambda>N  sY   ø€ ÈxÐ[`ÐO`ÐO`°e·k²kÀ(Ñ6KÔ6KÐ6KÕfiÐjoÑfpÔfpÐr{÷  sBò  sBð  CKñ  sLô  sLð  6M€ r?   r¢  c                 ór   •— i | ]3}|‰|         d k    r‰|         nt          ‰|         ‰|         ¦  «        “Œ4S rL  )r.  )rX  rË  rÓ  Úsizess     €€r=   r¨  z#_preload_floors.<locals>.<dictcomp>O  s`   ø€ ð  Nð  Nð  Nð  zB�¨Y°xÔ-@ÀAÒ-EÐ-E˜% œ/˜/Í3ÈyÐYaÔObÐdiÐjrÔdsÑKtÔKtð  Nð  Nð  Nr?   )r�   ÚPRELOAD_PRIORITYrÏ  r’  rd  rà  ry  r  r.  ry   r›   )rÆ  r×  rÓ  rÒ  rÅ  ÚpriorityÚfloorsÚsharesrÈ  Úmembersrµ  rF  rË  ÚextraÚsharerÕ  s   ````           @r=   Ú_preload_floorsrß  B  s#  øøøøø€ ð Zð  Zð  Zð  Zð  Zð  PYð  Zñ  Zô  Z€FØ�!‚|€|ØˆÝ�Ð-Õ-Ñ.Ô.€EØ€FÝ! )¨YÑ7Ô7ð Yð YˆÝ˜ð  %Mð  %Mð  %Mð  %Mð  %Mð  Nñ  Nô  Nˆð Nð  Nð  Nð  Nð  Nð  FMð  Nñ  Nô  NˆØ�hœl¨4¯;ª;©=¬=Ñ9Ô9Ñ9ˆ	Øð 	ð 	ˆHÝ˜�3˜y¨%°¬/¸DÀ¼NÑ*JÑKÔKÑLÔLˆEØ�ˆNˆNŒN˜eÑ#ˆNˆN‰NØ˜ÑˆIˆIØ�qŠ=ˆ=Ø�˜”ÐÐÔ 	Ñ)ÐÐÑØð 	Yð 	YˆHÝ" 6§:¢:¨h¸¸X¼Ñ#GÔ#GÈÈhÌÑXÔXˆF�8ÑÐð	Yà!Ÿ<š<™>œ>ð ^ð ^‰ˆ�%Ø )¨(Ô 3°qÒ 8Ð 8˜1˜1½cÀ)ÈHÔBUÐW\Ñ>]Ô>]ˆˆxÑÐØ€Mr?   c                 óÌ   ‡— i }| D ]?}t          |¦  «        \  }}|                     |g ¦  «                             ||f¦  «         Œ@ˆfd„|                     ¦   «         D ¦   «         S )Nc                 ó°   •— g | ]R}t          t          |¦  «        ¦  «        D ]3\  }\  }}t          |d z   ‰z  ¦  «        t          |‰z  ¦  «        k    ¯1|‘Œ4ŒSS ©r   )r¹  r’  rõ  )rX  r§  Únr!  r¡  Úratios        €r=   rZ  z_spread.<locals>.<listcomp>d  s|   ø€ ð  Að  Að  A�cÅ	Í&ÐQTÉ+Ì+Ñ@VÔ@Vð  Að  A©}¨q±*°1°eÕZ]Ð_`ÐcdÑ_dÐhmÑ^mÑZnÔZnÕqtÐuvÐy~Ñu~ÑqÔqÒZÐZˆEÐZÐZÐZÐZr?   )rÃ   rš  rž   ry  )Úentriesrä  r©  r¡  rÒ   rÓ   s    `    r=   Ú_spreadræ  ^  s‹   ø€ à€DØð 6ð 6ˆÝ(¨Ñ/Ô/‰ˆˆSØ�Š˜˜RÑ Ô ×'Ò'¨¨e¨Ñ5Ô5Ð5Ð5ð Að  Að  Að  A˜TŸ[š[™]œ]ð  Añ  Aô  Að  Ar?   c                 ó   ‡ ‡‡‡— t          ‰ ¦  «        t          j        u r�‰‰‰                      ¦   «                  z   }‰||‰                      ¦   «         ‰                      ¦   «         z  z   …                              ‰ j        ¦  «                             ‰ j        ¦  «        S ‰  	                    ¦   «         \  }}t          ‰ ¦  «         
                    ˆˆˆˆ fd„|D ¦   «         |‰                      ¦   «         ‰                      ¦   «         ¦  «        S )Nc           	      óR   •— i | ]#}|t          t          ‰|¦  «        ‰‰‰¦  «        “Œ$S r—   )Ú
_ring_viewrS   )rX  r³   r@  rª  rŒ   r  s     €€€€r=   r¨  z_ring_view.<locals>.<dictcomp>l  s6   ø€ Ð(tÐ(tÐ(tÐfj¨­z½'À!ÀTÑ:JÔ:JÈDÐRYÐ[`Ñ/aÔ/aÐ(tÐ(tÐ(tr?   )r¹  rN   r^   rþ   rA  rÞ  rù   r,   r÷   r   rT  ré  r.  )r  r@  rª  rŒ   r  rÒ  r/  s   ````   r=   ré  ré  f  s  øøøø€ åˆA�w„w•%”,ÐÐØ˜ §¢¡¤Ô.Ñ.ˆØ�F˜6 A§G¢G¡I¤I°·²Ñ0@Ô0@Ñ$@Ñ@Ð@ÔA×FÒFÀqÄwÑOÔO×TÒTÐUVÔU\Ñ]Ô]Ð]Ø×&Ò&Ñ(Ô(�K€Eˆ4Ý�‰7Œ7×'Ò'Ð(tÐ(tÐ(tÐ(tÐ(tÐ(tÐ(tÐnsÐ(tÑ(tÔ(tÐvzÐ|}÷  }Cò  }Cñ  }Eô  }Eð  GH÷  GOò  GOñ  GQô  GQñ  Rô  Rð  Rr?   c                   óL   — e Zd ZdZd„ Zd„ Zd„ Zdd„Zdd„Zd	„ Z	d
„ Z
d„ Zd„ ZdS )Ú_StagingRinga  Pinned ring through which the blocks that are not pinned reach the GPU. A copier thread copies the next blocks into it, in their
    order of use and as far ahead as the ring holds them: this CPU copy, bound by the RAM bandwidth, overlaps the processing of the blocks
    before them, and their transfers then run at pinned speed. Each block takes one region of the ring, freed in block order once the
    transfer that read it has completed. The ring is normal RAM locked in place, much faster than allocating pinned memory.c                 ór  — || _         t          j        ¦   «         | _        t	          j        ¦   «         | _        t          j        ¦   «         | _        d| _	        t          j                             ¦   «         }t          ddt          j        j        |f¬¦  «        | _        t          t           d¬¦  «        | _        t          j        d¦  «        5  t'          j        |dz   t&          j        ¬¦  «        }|j        j         dz  }t          j        ||||z   …         ¦  «        | _        d d d ¦  «         n# 1 swxY w Y   t5          | j        | j                             ¦   «         ||¦  «        | _        	 | j                             | j        j        ¦  «                             ¦   «         }tA          |¦  «        d	k    r>tC          t          j         "                    ¦   «          #                    |¦  «        ¦  «        ‚d S # tH          $ r4 | j         %                    ¦   «          | j         %                    ¦   «          ‚ w xY w)
NFr   Ú	mmgp_ringr  Úmmgp_ring_copyr?  r	  r
  r   )&ré  r  rP  Úregionsr  Ú	ConditionÚcondr  ÚjobsÚ	cancelledrN   r  r  r   r  r  r¸  r;  r†  r  r  rû   r,  rœ  r  rç  r?  rþ   rB  r+  rC  r;  rõ  rò  ró  ÚcudaGetErrorStringÚBaseExceptionrJ  )rV   ré  r-   r  rŒ   rë  s         r=   r‰   z_StagingRing.__init__t  s=  € ØˆŒ	Ý"Ô(Ñ*Ô*ˆŒÝÔ'Ñ)Ô)ˆŒ	ÝÔ+Ñ-Ô-ˆŒ	ØˆŒÝ”×*Ò*Ñ,Ô,ˆÝ(°QÈ;ÕdiÔdnÔdyð  FLð  ENð  Oñ  Oô  OˆŒÝ)Õ6GÐ\lÐmÑmÔmˆŒÝÔ! %Ñ(Ô(ð 	Dð 	Dõ ”+˜d T™kµ´Ð=Ñ=Ô=ˆCØ”Z”_Ð$ tÑ+ˆEÝÔ*¨3¨u°U¸T±\Ð/AÔ+BÑCÔCˆDŒKð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dõ .¨d¬k¸4¼;×;OÒ;OÑ;QÔ;QÐSWÐY_Ñ`Ô`ˆÔð	Ø”K×&Ò& tÔ'8Ô'AÑBÔB×IÒIÑKÔKˆEÝ�5‰zŒz˜QŠˆÝ"¥5¤:×#4Ò#4Ñ#6Ô#6×#IÒ#IÈ%Ñ#PÔ#PÑQÔQÐQð ˆøåð 	ð 	ð 	ØŒK× Ò Ñ"Ô"Ð"ØŒL×!Ò!Ñ#Ô#Ð#Øð	øøøs    ÃAD0Ä0D4Ä7D4Å/BG8 Ç8>H6c                 óà   — | j         sdS | j         d         d         | j         d         d         | j         d         d         }}}||k    r||z   | j        k    r|n	||k    rdnd S ||z   |k    r|nd S )Nr   r¾   r   )rï  ré  )rV   r  r]  Ú
last_startÚlast_ends        r=   Ú_fitz_StagingRing._fitŽ  s�   € àŒ|ð 	Ø�1Ø&*¤l°1¤o°aÔ&8¸$¼,ÀrÔ:JÈ1Ô:MÈtÌ|Ð\^ÔO_Ð`aÔOb˜8ˆzˆØ˜ÒÐØ'¨&Ñ0°D´IÒ=Ð=�8�8ÈÐRWÊÈÀ1À1Ð]aÐaØ# fÑ,°Ò5Ð5ˆxˆx¸4Ð?r?   c                 óB  — | j         5  	 | j        rt          ¦   «         ‚| j        r�| j        d         d         �}| j        d         d                              ¦   «         rX| j                             ¦   «          | j        r8| j        d         d         �%| j        d         d                              ¦   «         °X|                      |¦  «        }|�0|||z   d g}| j                             |¦  «         |cd d d ¦  «         S | j        d         d         }|€| j                              ¦   «          nf| j          	                    ¦   «          	 | 
                    ¦   «          | j                              ¦   «          n# | j                              ¦   «          w xY w�ŒŠ# 1 swxY w Y   d S )NTr   rÙ   )rñ  ró  r˜  rï  Úqueryr[  rù  rž   r=  rK  rû  Úacquire)rV   r  rŒ   ÚregionÚtransfers        r=   Ú_reservez_StagingRing._reserve—  sÝ  € ØŒYð 	,ð 	,ð,Ø”>ð +Ý(Ñ*Ô*Ð*Ø”lð + t¤|°A¤°qÔ'9Ð'EÈ$Ì,ÐWXÌ/ÐZ[ÔJ\×JbÒJbÑJdÔJdÐ'EØ”L×(Ò(Ñ*Ô*Ð*ð ”lð + t¤|°A¤°qÔ'9Ð'EÈ$Ì,ÐWXÌ/ÐZ[ÔJ\×JbÒJbÑJdÔJdÐ'EàŸ	š	 &Ñ)Ô)�ØÐ$Ø# U¨V¡^°TÐ:�FØ”L×'Ò'¨Ñ/Ô/Ð/Ø!ð	,ð 	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð  œ<¨œ?¨1Ô-�ØÐ#Ø”I—N’NÑ$Ô$Ð$Ð$à”I×%Ò%Ñ'Ô'Ð'ð,Ø ×,Ò,Ñ.Ô.Ð.àœ	×)Ò)Ñ+Ô+Ð+Ð+ø˜œ	×)Ò)Ñ+Ô+Ð+Ð+øøøñ%,ð	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,s1   ˆC(FÃ=AFÅE4ÅFÅ4FÆFÆFÆFNr—   c           	      ó°  — |�|                      ¦   «         rd ||fS |€dn|d         }g }|D ]|\  }}}	}
|                     |	                     ¦   «         |	                     ¦   «         | t          z   t          z  |||
ff¦  «         |d         d         |	                     ¦   «         z   }Œ}|                      |¦  «        }|�<t          | j                             ¦   «         |d         z   |d         | j        ¦  «         |rUt          | j                             ¦   «         |d         z   || j        ¦  «         |                     d„ |D ¦   «         ¦  «         |||fS )Nr   rÙ   r¾   c                 ó.   — g | ]\  }}}\  }}}|||||f‘ŒS r—   r—   )rX  r!  ré  r  ÚringrF  Ú
generations          r=   rZ  z'_StagingRing._stage.<locals>.<listcomp>»  s7   € ÐzÐzÐzÑGqÀqÈ$ÐPVÑXqÐY]Ð_dÐfp˜D %¨°V¸TÐBÐzÐzÐzr?   )	r;  rž   rþ   rA  r  rÿ  r¿  rç  r;  )rV   r›   ÚlayoutÚpooledÚstater  r©  r  rF  r1  r  rý  s               r=   Ú_stagez_StagingRing._stage­  se  € ØÐ &§-¢-¡/¤/ÐØ˜ Ð&Ð&Ø�n��¨&°¬)ˆàˆØ/4ð 	2ð 	2Ñ+ˆD�%˜ Ø�KŠK˜ŸšÑ*Ô*¨F¯LªL©N¬N¸v¸gÍÑ>TÐ<UÕXcÑ<cÐfjÐlqÐs}Ðe~Ðñ  Aô  Að  AØ˜"”X˜a”[ 6§<¢<¡>¤>Ñ1ˆFˆFØ—’˜vÑ&Ô&ˆØÐÝ�t”{×+Ò+Ñ-Ô-°°q´	Ñ9¸6À!¼9ÀdÄlÑSÔSÐSØð 	|Ý�t”{×+Ò+Ñ-Ô-°°q´	Ñ9¸4ÀÄÑNÔNÐNØ�MŠMÐzÐzÐuyÐzÑzÔzÑ{Ô{Ð{Ø�u˜fÐ$Ð$r?   c                 ór   — || j         vr-| j                             | j        ||||¦  «        | j         |<   d S d S rd   )rò  r  r+  r  )rV   Ú
entry_namer›   r  r  r  s         r=   Úschedulez_StagingRing.schedule¾  sG   € ð ˜TœYÐ&Ð&Ø$(¤K×$6Ò$6°t´{ÀEÈ6ÐSYÐ[`Ñ$aÔ$aˆDŒI�jÑ!Ð!Ð!ð 'Ð&r?   c                 ó   — || j         vrd S 	 | j                              d¬¦  «        \  }}||k    r|                     ¦   «         S |                      |                     ¦   «         d         t          j                             ¦   «         ¦  «         Œƒ)NTFr8  r   )rò  r:  r;  rK  rN   r  rO  )rV   r	  r³   r3  s       r=   Útakez_StagingRing.takeÅ  s†   € ð ˜TœYÐ&Ð&Ø�4ð	AØœ9×,Ò,°%Ð,Ñ8Ô8‰LˆD�&Ø�zÒ!Ð!Ø—}’}‘”Ð&Ø�LŠL˜Ÿš™œ¨Ô+­U¬Z×-=Ò-=Ñ-?Ô-?Ñ@Ô@Ð@ð		Ar?   c                 óŠ   — |€d S | j         5  ||d<   | j                              ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )NrÙ   )rñ  Ú
notify_all)rV   rý  rþ  s      r=   rK  z_StagingRing.releaseÐ  s•   € Øˆ>ØˆFØŒYð 	#ð 	#Ø ˆF�1‰IØŒI× Ò Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#s   Œ8¸<¿<c                 ó  — | j         5  d| _        | j                              ¦   «          d d d ¦  «         n# 1 swxY w Y   | j                             ¦   «         D ]}|                     ¦   «          Œ| j                             ¦   «         D ]'}	 |                     ¦   «          Œ# t          $ r Y Œ$w xY w| j                             ¦   «          | j         5  | j	                             ¦   «          d| _        d d d ¦  «         d S # 1 swxY w Y   d S ©NTF)
rñ  ró  r  rò  ry  Úcancelr;  rã   r   rï  )rV   r3  s     r=   Úresetz_StagingRing.reset×  s’  € àŒYð 	#ð 	#Ø!ˆDŒNØŒI× Ò Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð ”i×&Ò&Ñ(Ô(ð 	ð 	ˆFØ�MŠM‰OŒOˆOˆOØ”i×&Ò&Ñ(Ô(ð 	ð 	ˆFðØ—’‘”��øÝð ð ð Ø�ðøøøàŒ	�ŠÑÔÐØŒYð 	#ð 	#ØŒL×ÒÑ Ô Ð Ø"ˆDŒNð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#s0   ˆ!5µ9¼9ÂB!Â!
B.Â-B.Ã!C?Ã?DÄDc                 ó   — | j         €d S |                      ¦   «          	 | j                             ¦   «         st	          d| j        j        › �¦  «        ‚	 | j                             d¬¦  «         | j                             d¬¦  «         n;# | j                             d¬¦  «         | j                             d¬¦  «         w xY wd | _         d S )Nz$Unable to release the staging ring: TrJ  )	rç  r  rB  rK  rò  rë  r  rJ  r;  rˆ   s    r=   rK  z_StagingRing.closeè  sÙ   € ØŒ;ÐØˆFØ�
Š
‰Œˆð	-ØÔ$×*Ò*Ñ,Ô,ð eÝ"Ð#cÈ$ÔJ[ÔJaÐ#cÐ#cÑdÔdÐdðeð ŒK× Ò  dÐ Ñ+Ô+Ð+ØŒL×!Ò! tÐ!Ñ,Ô,Ð,Ð,øð ŒK× Ò  dÐ Ñ+Ô+Ð+ØŒL×!Ò! tÐ!Ñ,Ô,Ð,Ð,øøøØˆŒˆˆs   Ÿ5B Â8C©Nr—   )rZ   r[   r\   r	  r‰   rù  rÿ  r  r
  r  rK  r  rK  r—   r?   r=   rë  rë  n  s»   € € € € € ðð ð
ð ð ð4@ð @ð @ð,ð ,ð ,ð,%ð %ð %ð %ð"bð bð bð bð	Að 	Að 	Að#ð #ð #ð#ð #ð #ð"
ð 
ð 
ð 
ð 
r?   rë  r	  l        é
   )Útext_encoderÚtext_encoder_2Úvaer¯   c            	       ó’   — e Zd Zdej        fdej        fdej        fdej        fdej        fdej        fdej        fdej        fgZd	S )
Ú_MemoryInformationÚBaseAddressÚAllocationBaseÚAllocationProtectÚPartitionIdÚ
RegionSizeÚStateÚProtectÚTypeN)	rZ   r[   r\   r,  Úc_void_pÚc_ulongÚc_ushortÚc_size_tÚ_fields_r—   r?   r=   r  r  û  s‰   € € € € € Ø" F¤OÐ4Ð7GÈÌÐ6YÐ\oÐqwÔqð  \Að  DQð  SYô  Sbð  CcØ! 6¤?Ð3°g¸v¼~Ð5NÐQZÐ\bÔ\jÐPkÐntÐv|ô  wEð  nFðGˆˆˆr?   r  Úkernel32)Úuse_last_errorc                 ó`   — t           j        dk    r| D ]\  }}t          |||z
  ¦  «         Œd S d S )Nr¯   )r±   r³   Ú_virtual_unlock)ÚrangesrŒ   rs  s      r=   r   r     sJ   € õ 
„w�$‚€Ø ð 	0ð 	0‰JˆE�3Ý˜E 3¨¡;Ñ/Ô/Ð/Ð/ð €ð	0ð 	0r?   c                 óö  — t           j        dk    rg S t          ¦   «         g d}}}t          | ¦  «        D �]9\  }}|d         |cxk    r|d         k     shn t	          |t          j        |¦  «        t          j        |¦  «        ¦  «        dk    }|r)|j        |j        |j	        z   |j
        dk    r|j        nd fnd}|d         �|dk    rŒ–|t          z  t          z  ||z   t          z   dz
  t          z  t          z  }}|rQ|d         d         |d         k    r9||d         d         k    r't          |d         d         |¦  «        |d         d<   �Œ|                     |||d         g¦  «         �Œ;d„ |D ¦   «         S )	Nr¯   )r   r   Nr   r   é   rÙ   r¾   c                 ó   — g | ]
\  }}}||f‘ŒS r—   r—   ©rX  rŒ   rs  r!  s       r=   rZ  z!_mapped_pages.<locals>.<listcomp>!  s"   € Ð5Ð5Ð5™]˜U C¨ˆU�CˆLÐ5Ð5Ð5r?   )r±   r³   r  r’  Ú_virtual_queryr,  ÚbyrefÚsizeofr  r  r"  r  Ú	PAGE_SIZEr  rž   )	r"  Úinfor,  rý  rè  r  ÚfoundrŒ   rs  s	            r=   r)  r)    s¬  € õ 
„w�$‚€Øˆ	Ý-Ñ/Ô/°°\�&ˆ&€DÝ! &™>œ>ð 
3ñ 
3‰ˆ�Ø�aŒy˜GÐ/Ð/Ò/Ð/ f¨Q¤iÒ/Ð/Ð/Ð/Ý" 7­F¬L¸Ñ,>Ô,>ÅÄÈdÑ@SÔ@SÑTÔTÐXYÒYˆEð GLð  ^�dÔ&¨Ô(8¸4¼?Ñ(JÐcgÔclÐpwÒcwÐcwÈDÔL_ÐL_ð  ~Bð  Cð  Cð  R^ˆFØ�!Œ9Ð ¨!¢ ØØ¥	Ñ)­IÑ5¸À&Ñ8HÍ9Ñ8TÐWXÑ8XÕ]fÑ7fÕirÑ7rˆsˆØð 	3�f˜R”j ”m v¨a¤yÒ0Ð0°U¸fÀR¼jÈ¼mÒ5KÐ5KÝ  r¤
¨1¤¨sÑ3Ô3ˆF�2ŒJ�q‰M‰Mà�MŠM˜5 # v¨a¤yÐ1Ñ2Ô2Ð2Ñ2Ø5Ð5¨fÐ5Ñ5Ô5Ð5r?   c                 ó,  ‡‡— t           j        dk    r¬t          ¦   «         g d}}}| D ]•}|d         |cxk    r|d         k     s_n t          |t	          j        |¦  «        t	          j        |¦  «        ¦  «        dk    }|r |j        |j        |j        z   |j	        dk    fnd}| 
                    |d         ¦  «         Œ–|S g Št          d¦  «        5 }|D ]`}|                     ¦   «         }d„ |d                              d	¦  «        D ¦   «         \  }	}
‰ 
                    |	|
|d
         dk    f¦  «         Œa	 d d d ¦  «         n# 1 swxY w Y   ‰                     ¦   «          d„ ‰D ¦   «         Šˆfd„| D ¦   «         }ˆfd„t          || ¦  «        D ¦   «         S )Nr¯   )r   r   Fr   r   r.  rÙ   z/proc/self/mapsc              3   ó6   K  — | ]}t          |d ¦  «        V — ŒdS )rj  N)rõ  ©rX  rz  s     r=   rc  z"_private_memory.<locals>.<genexpr>3  s*   è è € ÐKÐK¨U�#˜e R™.œ.ÐKÐKÐKÐKÐKÐKr?   ú-rk  Ú0c                 ó   — g | ]
}|d          ‘ŒS rL  r—   )rX  rý  s     r=   rZ  z#_private_memory.<locals>.<listcomp>6  s   € Ð.Ð.Ð.˜Fˆf�QŒiÐ.Ð.Ð.r?   c                 ó@   •— g | ]}t          j        ‰|¦  «        d z
  ‘ŒS râ  )ÚbisectÚbisect_right)rX  rè  Ústartss     €r=   rZ  z#_private_memory.<locals>.<listcomp>7  s+   ø€ ÐNÐNÐN¸'�VÔ  ¨Ñ1Ô1°AÑ5ÐNÐNÐNr?   c                 ób   •— g | ]+\  }}|d k    o|‰|         d         k     o‰|         d         ‘Œ,S )r   r   rÙ   r—   )rX  r¼  rè  rï  s      €r=   rZ  z#_private_memory.<locals>.<listcomp>8  sE   ø€ ÐxÐxÐxÑQ_ÐQVÐX_ˆE�QŠJÐL˜7 W¨U¤^°AÔ%6Ò6ÐL¸7À5¼>È!Ô;LÐxÐxÐxr?   )r±   r³   r  r1  r,  r2  r3  r  r  r"  rž   ÚopenrÁ   ÚsortÚzip)Úpointersr5  Úprivaterý  rè  r6  ÚmapsÚlineÚfieldsrŒ   rs  rï  r@  s              @@r=   Ú_private_memoryrJ  #  s  øø€ õ 
„w�$‚€Ý 2Ñ 4Ô 4°b¸-�vˆgˆØð 	&ð 	&ˆGØ˜!”9 Ð3Ð3Ò3Ð3¨&°¬)Ò3Ð3Ð3Ð3Ý& wµ´¸TÑ0BÔ0BÅFÄMÐRVÑDWÔDWÑXÔXÐ\]Ò]�Øinð  B˜$Ô*¨DÔ,<¸t¼Ñ,NÐPTÔPYÐ]dÒPdÐeÐeð  uB�Ø�NŠN˜6 !œ9Ñ%Ô%Ð%Ð%ØˆØ€GÝ	ÐÑ	 Ô	 ð ; DØð 	;ð 	;ˆDØ—Z’Z‘\”\ˆFØKÐK°f¸Q´i·o²oÀcÑ6JÔ6JÐKÑKÔK‰JˆE�3Ø�NŠN˜E 3¨¨q¬	°SÒ(8Ð9Ñ:Ô:Ð:Ð:ð	;ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð
 ‡L‚L�N„N€NØ.Ð. gÐ.Ñ.Ô.€FØNÐNÐNÐNÀXÐNÑNÔN€EØxÐxÐxÐxÕcfÐglÐnvÑcwÔcwÐxÑxÔxÐxs   ÃA$EÅEÅEc                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú
_PoolEntry©rË  ÚregistrationsÚsourcesr  r  Úin_placer"  c                 ón   — |||||||f\  | _         | _        | _        | _        | _        | _        | _        d S rd   rM  )rV   rË  rN  rO  r  r  rP  r"  s           r=   r‰   z_PoolEntry.__init__@  s`   € Øpxð  {Hð  JQð  SYð  [að  ckð  msð  qsÑmˆŒ�tÔ)¨4¬<¸¼ÀdÄkÐSWÔS`ÐbfÔbmÐbmÐbmr?   c                 ó`   — | j         D ]}|                     ¦   «          Œg d c| _         | _        d S rd   )rN  rK  rO  )rV   rB  s     r=   rK  z_PoolEntry.closeC  s>   € à Ô.ð 	!ð 	!ˆLØ×ÒÑ Ô Ð Ð Ø+-¨tÐ(ˆÔ˜DœL˜L˜Lr?   N)rZ   r[   r\   Ú	__slots__r‰   rK  r—   r?   r=   rL  rL  ;  s=   € € € € € ð c€Iðsð sð sð4ð 4ð 4ð 4ð 4r?   rL  Ú	_PoolPlanzBlayout ranges sources runs copy_nbytes pieces nbytes leaves mappedc                   óf   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Ze	d„ ¦   «         Z
d„ Zd	„ Zd
„ Zdd„Zd„ ZdS )Ú_PinnedPoolaè  Reserved RAM shared by the blocks that the running models stream at each pass (offload.all(pinPool=...)), instead of RAM pinned for
    good for each model, which a model keeps even while it does not run. A block enters when it is first transferred (or, during the short
    calls of cpuCompute, when the balance of the CPU and the PCIe link wants it streamed): the pages that its tensors in private RAM (made at
    load: concatenations, quantization) fill are locked in place, the rest (tensors mapped from a checkpoint file, whose locking in place is
    slow) copied into locked RAM of its own. Its transfers then read pinned memory: full speed, no copy through the staging ring. The pool takes the
    blocks out of VRAM spread evenly, up to the reserved RAM that the pinned models and the staging rings leave, while the system keeps
    POOL_RAM_FLOOR available; the blocks it cannot take cross the staging ring. Entries leave only at quiet points (unlocking waits for all
    the work queued on the GPU): when a model is loaded, the entries of the models that do not run go if its own needs and theirs exceed the
    room or the available RAM is short, and those of the other models of its offload object as far as they would make the object's entries
    larger than those of its largest model (pinning that model for good would lock as much); the models unloaded with the RAM short; an
    offload object released. Shared by the offload objects of the process (e.g. a language model and an image model).c                 ó(  — t          j        ¦   «         | _        t          j        ¦   «         | _        t          j        ¦   «         | _        i | _        t          j        ¦   «         | _        d x| _	        | _
        d| _        d| _        d| _        d| _        d S )Nr   F)ÚweakrefÚWeakKeyDictionaryrå  ÚusedÚwholesÚpendingr  r  rì  r  r;  ÚversionÚepochÚfullrƒ   rˆ   s    r=   r‰   z_PinnedPool.__init__^  sv   € ÝÔ0Ñ2Ô2ˆŒÝÔ-Ñ/Ô/ˆŒ	ÝÔ/Ñ1Ô1ˆŒØˆŒÝ”^Ñ%Ô%ˆŒ
Ø'+Ð+ˆŒ˜œØˆŒØˆŒ
ØˆŒ	ØˆŒ
ˆ
ˆ
r?   c                 óh   — | j                              |¦  «        }|€d n|                     |¦  «        S rd   )rå  ry   )rV   Úmanagerr	  rå  s       r=   r¡  z_PinnedPool.entryj  s1   € Ø”,×"Ò" 7Ñ+Ô+ˆØ�ˆtˆt¨G¯KªK¸
Ñ,CÔ,CÐCr?   c                 ób   — |                       ||¦  «        d upt          |¦  «        |f| j        v S rd   )r¡  rÆ  r\  )rV   ra  r	  s      r=   Úinvolvedz_PinnedPool.involvedn  s4   € Ø�zŠz˜' :Ñ.Ô.°dÐ:Ðg½rÀ'¹{¼{ÈJÐ>WÐ[_Ô[gÐ>gÐgr?   c                 ó®   — | j         5  t          j        d„ | j                             ¦   «         D ¦   «         ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nc              3   ó    K  — | ]	\  }}|V — Œ
d S rd   r—   )rX  r!  r  s      r=   rc  z'_PinnedPool.reserved.<locals>.<genexpr>s  s&   è è € ÐNÐN©9¨1¨f ÐNÐNÐNÐNÐNÐNr?   )rì  rd  rà  r\  ry  rˆ   s    r=   Úreservedz_PinnedPool.reservedq  s¬   € ØŒZð 	Oð 	OÝ”<ÐNÐN¸¼×8KÒ8KÑ8MÔ8MÐNÑNÔNÑNÔNð	Oð 	Oð 	Oð 	Oñ 	Oô 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oøøøð 	Oð 	Oð 	Oð 	Oð 	Oð 	Os   ˆ5A
Á
AÁAc                 óh  — i }| j         5  d„ t          | j                             ¦   «         ¦  «        D ¦   «         }d d d ¦  «         n# 1 swxY w Y   |D ]]}|                     |j        d¦  «        \  }}}|dz   ||j        z   |t          j        d„ |j	        D ¦   «         ¦  «        z   f||j        <   Œ^|S )Nc                 ó@   — g | ]}|                      ¦   «         D ]}|‘ŒŒS r—   )ry  )rX  rå  r¡  s      r=   rZ  z%_PinnedPool.stats.<locals>.<listcomp>y  s2   € ÐfÐfÐf ÐU\×UcÒUcÑUeÔUeÐfÐfÈE�uÐfÐfÐfÐfr?   r  r   c              3   ó&   K  — | ]\  }}||z
  V — Œd S rd   r—   )rX  rŒ   rs  s      r=   rc  z$_PinnedPool.stats.<locals>.<genexpr>|  sP   è è € ð  aOð  aOÑq{ÐqvÐx{ÐadÐglÑalð  aOð  aOð  aOð  aOð  aOð  aOr?   )
rì  r�   rå  ry  ry   rË  r  rd  rà  rP  )rV   r;  rå  r¡  r  r  rP  s          r=   Ústatsz_PinnedPool.statsu  s@  € àˆØŒZð 	gð 	gØfÐf­D°´×1DÒ1DÑ1FÔ1FÑ,GÔ,GÐfÑfÔfˆGð	gð 	gð 	gñ 	gô 	gð 	gð 	gð 	gð 	gð 	gð 	gøøøð 	gð 	gð 	gð 	gàð 	Pð 	PˆEØ'-§z¢z°%´.À)Ñ'LÔ'LÑ$ˆF�F˜HØ&,¨q¡j°&¸5¼<Ñ2GÈÕT\ÔT`ð  aOð  aOð  @Eô  @Nð  aOñ  aOô  aOñ  UOô  UOñ  JOð  &PˆF�5”>Ñ"Ð"Øˆs   Š1AÁAÁAc                 ó€  ‡‡— i }| D ]h\  }}t          |¦  «        D ]S}|                     |                     ¦   «         |                     ¦   «         |                     ¦   «         z  f|¦  «         ŒTŒit          |¦  «        }g g g g f\  }}}	}
t          j        |t          d„ |D ¦   «         ¦  «        ¦  «        D �]†\  }}|d         t          z   dz
  t          z  t          z  |d         |d         z   t          z  t          z  }}|r||k    rB|	 
                    |d         |d         |d         f¦  «         |s|
 
                    |¦  «         Œ”||                              ¦   «         }|r?||d         d         k    r-||d         d<   |d         d          
                    |¦  «         n| 
                    |||gg¦  «         | 
                    ‰d         |d                  |z   |d         z
  |||z
  |g¦  «         |	d„ |d         |d         ||d         z
  f|d         ||d         |d         z   |z
  ffD ¦   «         z  }	�Œˆt          d„ |	D ¦   «         ¦  «        \  }Š}d„ }t          j        d	¦  «        5  d
„  ||d„ ¦  «        D ¦   «         }ddd¦  «         n# 1 swxY w Y    |ˆˆfd„|	D ¦   «         d„ ¦  «        }|	r|t          z   dz
  t          z  t          z  nd}t          ‰d„ |D ¦   «         |||d„ |D ¦   «         t          j        d„ |D ¦   «         ¦  «        |z   t#          |¦  «        t%          |
¦  «        ¦	  «	        S )aß  How a block enters the pool (made once, at profile time: on the pool's thread or while a model runs, each Python or torch call waits
        for the GIL, a few ms). In place, the whole pages that a tensor in private RAM fills: a page it shares with other objects is never
        locked (its later tenants, e.g. short-lived tensors, would pass for pinned memory, and their copies to the GPU would no longer wait
        for the transfer before the memory is reused). Copied into locked RAM of its own: the tensors mapped from a checkpoint file (locking
        them in place is slow) and the ends of the others. Parts that lie the same distance apart in their source and in the block's VRAM
        buffer (layout) are copied together.c                 ó   — g | ]\  }}|‘ŒS r—   r—   )rX  rè  r!  s      r=   rZ  z$_PinnedPool.plan.<locals>.<listcomp>�  s   € Ð?_Ð?_Ð?_ÉJÈGÐUVÀÐ?_Ð?_Ð?_r?   r   r   r¾   rÙ   c                 ó"   — g | ]}|d          ¯
|‘ŒS ©rÙ   r—   )rX  rA  s     r=   rZ  z$_PinnedPool.plan.<locals>.<listcomp>›  s$   € Ð|Ð|Ð| ÐtxÐyzÔt{Ð|�tÐ|Ð|Ð|r?   c                 ó"   — i | ]\  }}}d ||fd“ŒS )r   Nr—   )rX  r!  rA  r  s       r=   r¨  z$_PinnedPool.plan.<locals>.<dictcomp>œ  s+   € Ð4kÐ4kÐ4kÑQ`ÐQRÐTXÐZ`°a¸¸vÐ5FÈÐ4kÐ4kÐ4kr?   c                 óf  — g }t          | d„ ¬¦  «        D ]›}|r|d         nd }|�v |||¦  «        rjd|d         |d         z
  |d         z
  cxk    r*|d         |d         z
  |d         z
  cxk    rt          k    r!n n|d         |d         z   |d         z
  |d<   Œ†|                     |¦  «         Œœ|S )Nc                 ó   — | d d…         S ©Nr  r—   )rB  s    r=   rº  z2_PinnedPool.plan.<locals>.merged.<locals>.<lambda>Ÿ  s   € ¸%ÀÀÀ¼)€ r?   r¢  r¾   r   r   rÙ   )r’  r¨  rž   )r»  rh  r×  rB  r9  s        r=   Úmergedz _PinnedPool.plan.<locals>.merged�  s  € ØˆCÝ Ð,CÐ,CÐDÑDÔDð &ð &�Ø"%Ð/�s˜2”w�w¨4�ØÐ#¨¨¨T°5Ñ(9Ô(9Ð#¸aÀ5ÈÄ8ÈdÐSTÌgÑCUÐX\Ð]^ÔX_ÑC_ð  ?Pð  ?Pò  ?Pð  ?PÐchÐijÔckÐnrÐstÔnuÑcuÐx|Ð}~ÔxÑcð  ?Pð  ?Pò  ?Pð  ?Põ  DPò  ?Pð  ?Pð  ?Pð  ?Pð  ?PØ# Aœh¨¨q¬Ñ1°D¸´GÑ;�D˜‘G�Gà—J’J˜uÑ%Ô%Ð%Ð%ØˆJr?   Fc           	      ó´   — g | ]U\  }}}}|t          j        d t           j        d¬¦  «                             |||                     ¦   «         z
  |f¦  «        f‘ŒVS ©r   rj  r[  )rN   r  rû   Úset_rþ   )rX  r  rC  r  r«  s        r=   rZ  z$_PinnedPool.plan.<locals>.<listcomp>§  s…   € ð ~ð ~ð ~Ù7˜6 3¨°ð ¥¤¨AµU´[ÈÐ OÑ OÔ O× TÒ TÐU\Ð^aÐdk×dtÒdtÑdvÔdvÑ^vÐyð  yBñ  !Cô  !Cð  Dð ~ð ~ð ~r?   c                 ón   — | d                               ¦   «         |d                               ¦   «         k    S rr  rW  ©r+  r,  s     r=   rº  z"_PinnedPool.plan.<locals>.<lambda>¨  s1   € ÐYZÐ[\ÔY]×YfÒYfÑYhÔYhÐlmÐnoÔlp×lyÒlyÑl{Ôl{ÒY{€ r?   Nc                 óT   •— g | ]$\  }}}‰d          |         |z   |z
  ‰|         |dg‘Œ%S ©r   Nr—   )rX  rè  rA  r  r  rª  s       €€r=   rZ  z$_PinnedPool.plan.<locals>.<listcomp>©  sV   ø€ ð  Að  Að  AÑ`uÐ`gÐimÐou˜& œ) GÔ,¨tÑ3°gÑ=¸wÀt¼}ÈfÐVZÐ[ð  Að  Að  Ar?   c                 ó   — dS rW  r—   rx  s     r=   rº  z"_PinnedPool.plan.<locals>.<lambda>©  s   € ð  PT€ r?   c                 ó    — g | ]\  }}}|||f‘ŒS r—   r—   )rX  rŒ   rs  Ústoragess       r=   rZ  z$_PinnedPool.plan.<locals>.<listcomp>«  s&   € Ð!\Ð!\Ð!\Ñ=Q¸UÀCÈ 5¨#¨xÐ"8Ð!\Ð!\Ð!\r?   c                 ó<   — g | ]}t          |d d…         ¦  «        ‘ŒS rr  r¦  )rX  rB  s     r=   rZ  z$_PinnedPool.plan.<locals>.<listcomp>«  sk   € ð  {að  {að  {að  QVõ  |Að  BGð  HJð  IJð  HJô  BKñ  |Lô  |Lð  {að  {að  {ar?   c              3   ó(   K  — | ]\  }}}||z
  V — Œd S rd   r—   r0  s       r=   rc  z#_PinnedPool.plan.<locals>.<genexpr>¬  s,   è è € Ð%NÐ%N±m°e¸SÀ! c¨E¡kÐ%NÐ%NÐ%NÐ%NÐ%NÐ%Nr?   )r!  rš  rþ   rA  rÞ  r’  rd  rD  rJ  r4  rž   r›  rœ  rN   r†  rT  rà  rÐ  r)  )r›   r  r"  r!  r  r`  rn  r,  rP  r&  r%  r£  rF  rŒ   rs  r«  r©  Úcopy_nbytesrs  rO  r»  rª  s    `                   @r=   Úplanz_PinnedPool.plan  sm  øø€ ð ˆØð 	_ð 	_‰DˆAˆqÝ'¨Ñ*Ô*ð _ð _�Ø×!Ò! 4§=¢=¡?¤?°D·J²J±L´LÀ4×CTÒCTÑCVÔCVÑ4VÐ"WÐY]Ñ^Ô^Ð^Ð^ð_å�f‰~Œ~ˆØ+-¨r°2°r¨>Ñ(ˆ�˜& &Ý$œL¨­Ð?_Ð?_ÐZ^Ð?_Ñ?_Ô?_Ñ/`Ô/`ÑaÔað 	}ñ 	}‰LˆC�Ø˜aœ&¥9Ñ,¨qÑ0µYÑ>ÅÑJÈSÐQRÌVÐVYÐZ[ÔV\É_ÕajÑLjÕmvÑLv�3ˆEØð ˜c Ušl˜lØ—’˜s 1œv s¨1¤v¨s°1¬vÐ6Ñ7Ô7Ð7Øð 'Ø—M’M #Ñ&Ô&Ð&ØØ˜S”k×1Ò1Ñ3Ô3ˆGØð 7˜% 6¨"¤:¨a¤=Ò0Ð0Ø #��r”
˜1‘Ø�r”
˜1”×$Ò$ WÑ-Ô-Ð-Ð-à—’˜u c¨G¨9Ð5Ñ6Ô6Ð6Ø�OŠO˜V AœY s¨1¤vÔ.°Ñ6¸¸Q¼Ñ?ÀÈÈeÉÐU\Ð]Ñ^Ô^Ð^ØÐ|Ð|¨#¨a¬&°#°a´&¸%À#ÀaÄ&¹.Ð)IÈCÐPQÌFÐTWÐY\Ð]^ÔY_ÐbeÐfgÔbhÑYhÐknÑYnÐKoÐ(pÐ|Ñ|Ô|Ñ|ˆF‰FÝ%3Ð4kÐ4kÐdjÐ4kÑ4kÔ4kÑ%lÔ%lÑ"ˆˆg�{ð	ð 	ð 	õ Ô! %Ñ(Ô(ð 	~ð 	~ð~ð ~Ø;A¸6À(ÐL{ÐL{Ñ;|Ô;|ð~ñ ~ô ~ˆGð	~ð 	~ð 	~ñ 	~ô 	~ð 	~ð 	~ð 	~ð 	~ð 	~ð 	~øøøð 	~ð 	~ð 	~ð 	~ð �ð  Að  Að  Að  Að  AÐyð  Añ  Aô  Að  CTð  CTñ  Uô  UˆØPVÐ]�{¥YÑ.°Ñ2µyÑ@Å9ÑLÐLÐ\]ˆÝ˜Ð!\Ð!\ÐU[Ð!\Ñ!\Ô!\Ð^eÐgkÐmxð  {að  {að  Z`ð  {añ  {aô  {aÝ!œÐ%NÐ%NÀvÐ%NÑ%NÔ%NÑNÔNÐQ\Ñ\Õ^cÐdhÑ^iÔ^iÕkxÐyñ  lAô  lAñBô Bð 	Bs   É2JÊJÊJc           	      óê  — t          |¦  «        |f}| j        5  | j                             |¦  «        }|€ | j        €_t          ddt          j        j        t          j         	                    ¦   «         f¬¦  «        | _        t          t          d¬¦  «        | _        | j                             | j        |||||j        ¦  «        |j        fx}| j        |<   ddd¦  «         n# 1 swxY w Y   |d         S )zxThe future of a block's entry, made on the pool's thread from its plan: True once it is in, False if it could not enter.Nr   Ú	mmgp_poolr  Úmmgp_pool_copyr?  r   )rÆ  rì  r\  ry   r  r   rN   r  r  r  r¸  r;  r+  Ú_preparer·   r  )rV   ra  rË  r	  r�  r£  r6  s          r=   Úpreparez_PinnedPool.prepare®  su  € å�'‰{Œ{˜JÐ'ˆØŒZð 	cð 	cØ”L×$Ò$ SÑ)Ô)ˆEØˆ}Ø”=Ð(Ý$6À1ÐYdÕrwÔr|ô  sHõ  TYô  T^÷  Tmò  Tmñ  Toô  Toð  Sqð  %rñ  %rô  %r�D”MÝ#5ÕBSÐhxÐ#yÑ#yÔ#y�D”LØ-1¬]×-AÒ-AÀ$Ä-ÐQXÐZbÐdnÐptÐv}ô  wTñ  .Uô  .Uð  W[ô  Wbð  -cð  c�˜œ SÑ)ð	cð 	cð 	cñ 	cô 	cð 	cð 	cð 	cð 	cð 	cð 	cøøøð 	cð 	cð 	cð 	cð �QŒxˆs   ™B=C"Ã"C&Ã)C&c           	      óâ  ‡— g t           j                             ¦   «         }}	 |dk    rt          |j        z   |k    �smdt
          cxk     rt          |j        z   k     �sMn t          j        ¦   «         j        |j	        z
  t          k    �r!|j        D ]W\  }}	}
t          |
||	|z
  |¦  «        }t          |                     ¦   «         ¦  «        dk    r nØ|                     |¦  «         ŒX|j	        r»t!          |j	        ¦  «        \  Š}t#          ‰                     ¦   «         |j        | j        ¦  «         t+          |j        ¦  «         t          |‰                     ¦   «         |j	        |¦  «        }t          |                     ¦   «         ¦  «        dk    r|                     |¦  «         t/          |¦  «        t/          |j        ¦  «        t1          |j	        ¦  «        z   k    �rt          j        d¦  «        5  |j        ˆfd„|j        D ¦   «         z   }d d d ¦  «         n# 1 swxY w Y   t9          ||||j        |j        d„ |j        D ¦   «         |j        ¦  «        }| j        5  || j          !                    |i ¦  «        |<   | xj"        dz  c_"        d d d ¦  «         n# 1 swxY w Y   	 | j        5  | j#        tI          |¦  «        |f= d d d ¦  «         dS # 1 swxY w Y   dS |D ]}| %                    ¦   «          Œ| j&        so|j'        dk    rdtQ          j)        dtU          j+        d„ |  ,                    ¦   «          -                    ¦   «         D ¦   «         ¦  «        t\          z  d	›d
|› d�¦  «         d| _&        	 | j        5  | j#        tI          |¦  «        |f= d d d ¦  «         dS # 1 swxY w Y   dS # | j        5  | j#        tI          |¦  «        |f= d d d ¦  «         w # 1 swxY w Y   w xY w)Nr   Fc                 ó6   •— g | ]\  }}}|‰|||z   …         f‘ŒS r—   r—   )rX  r  rŒ   r  rç  s       €r=   rZ  z(_PinnedPool._prepare.<locals>.<listcomp>Ð  s6   ø€ Ð-~Ð-~Ð-~ÑYnÐY_ÐafÐhn¨v°v¸eÀEÈFÁNÐ>RÔ7SÐ.TÐ-~Ð-~Ð-~r?   c                 ó   — g | ]
\  }}}||f‘ŒS r—   r—   r0  s       r=   rZ  z(_PinnedPool._prepare.<locals>.<listcomp>Ñ  sA   € ð  `Oð  `Oð  `OÑq~ÐqvÐx{Ð}~ÐafÐhkÐ`lð  `Oð  `Oð  `Or?   r   TzPinned pool full (c              3   ó&   K  — | ]}|d          V — ŒdS rz  r—   r9  s     r=   rc  z'_PinnedPool._prepare.<locals>.<genexpr>Ù  s&   è è € Ð<iÐ<iÈ%¸UÀ1¼XÐ<iÐ<iÐ<iÐ<iÐ<iÐ<ir?   ú0.0fz MB): the other blocks of 'z' cross the staging ring)/rN   r  r  r÷  r  Úmax_pinnable_bytesr  Úvirtual_memoryÚ	availabler€  ÚPOOL_RAM_FLOORr,  r?  rõ  rC  rž   r  r¿  rþ   r©  r;  r   r%  rÂ   Úboolr†  rO  r»  rL  r  r"  rì  rå  rš  r]  r\  rÆ  rK  r_  rª   r   Úwriterd  rà  rj  ry  rÿ  )rV   ra  rË  r	  r�  ÚcaprN  r-   rŒ   rs  r}  rB  rG  rO  r¡  rç  s                  @r=   r…  z_PinnedPool._prepareº  s»  ø€ ð !#¥E¤J×$=Ò$=Ñ$?Ô$?�vˆð 	<Ø˜!’G�GÕ 2°T´[Ñ @À3Ò FÑ FÈ!ÕN`ð  KDð  KDò  KDð  KDÕcuÐx|ô  yDñ  dDò  KDñ  KDð  KDð  KDÝÔ-Ñ/Ô/Ô9¸DÔ<LÑLÕP^Ò^Ñ^Ø,0¬Kð ?ð ?Ñ(�E˜3 Ý#4°X¸uÀcÈEÁkÐSYÑ#ZÔ#Z�LÝ˜<×0Ò0Ñ2Ô2Ñ3Ô3°qÒ8Ð8Ø˜Ø!×(Ò(¨Ñ6Ô6Ð6Ð6àÔ'ð ?Ý(5°dÔ6FÑ(GÔ(G™˜ Ý" 6§?¢?Ñ#4Ô#4°d´iÀÄÑNÔNÐNÝ*¨4¬;Ñ7Ô7Ð7Ý'8¸ÀÇÂÑ@QÔ@QÐSWÔScÐekÑ'lÔ'l˜Ý˜|×4Ò4Ñ6Ô6Ñ7Ô7¸1Ò<Ð<Ø)×0Ò0°Ñ>Ô>Ð>Ý�=Ñ!Ô!¥S¨¬Ñ%5Ô%5½¸TÔ=MÑ8NÔ8NÑ%NÒNÑNÝÔ)¨%Ñ0Ô0ð ð Ø"œlÐ-~Ð-~Ð-~Ð-~ÐrvÔr}Ð-~Ñ-~Ô-~Ñ~�Gðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å" 8¨]¸GÀTÄ[ÐRVÔR]ð  `Oð  `Oð  CGô  CNð  `Oñ  `Oô  `Oð  QUô  Q\ñ  ]ô  ]�Ø”Zð &ð &ØGL�D”L×+Ò+¨G°RÑ8Ô8¸ÑDØ�L”L AÑ%�L”Lð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð ð ”ð <ð <Ø”L¥" W¡+¤+¨zÐ!:Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <ð !.ð %ð %�Ø×"Ò"Ñ$Ô$Ð$Ð$Ø”9ð v Ô!5¸Ò!:Ð!:Ý”
ð  uµ´Ð<iÐ<iÐSW×S]ÒS]ÑS_ÔS_×SfÒSfÑShÔShÐ<iÑ<iÔ<iÑ0iÔ0iÕjpÑ0pð  uð  uð  uð  S[ð  uð  uð  uñ  vô  vð  vØˆDŒIØà”ð <ð <Ø”L¥" W¡+¤+¨zÐ!:Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <ø�”ð <ð <Ø”L¥" W¡+¤+¨zÐ!:Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <øøøs£   £GN6 Ç9H!ÈN6 È!H%È%N6 È(H%È)=N6 É&/J!ÊN6 Ê!J%Ê%N6 Ê(J%Ê)N6 Ê4KËKË KË&BN6 ÎN)Î)N-Î0N-Î6O.Î>O"ÏO.Ï"O&Ï&O.Ï)O&Ï*O.c                 óL  ‡— | j         5  | j                             |i ¦  «        Šˆfd„|D ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        ||¦  «        D ]4\  }}|                     ¦   «          |j                             |d ¦  «         Œ5| xj        dz  c_        d S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r—   )Úpop)rX  r	  rå  s     €r=   rZ  z'_PinnedPool.release.<locals>.<listcomp>ä  s%   ø€ ÐMÐMÐM°:�w—{’{ :Ñ.Ô.ÐMÐMÐMr?   r   )	rì  rå  ry   rd  rD  rK  Ústaged_entriesr•  r]  )rV   ra  Úentry_namesÚleavingr	  r¡  rå  s         @r=   rK  z_PinnedPool.releaseà  s   ø€ àŒZð 	Nð 	NØ”l×&Ò& w°Ñ3Ô3ˆGØMÐMÐMÐMÀÐMÑMÔMˆGð	Nð 	Nð 	Nñ 	Nô 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nøøøð 	Nð 	Nð 	Nð 	Nõ "*¤¨k¸7Ñ!CÔ!Cð 	9ð 	9ÑˆJ˜Ø�KŠK‰MŒMˆMØÔ"×&Ò& z°4Ñ8Ô8Ð8Ð8ØˆŒ˜ÑˆŒˆˆs   ‰*?¿AÁANr   c                 óV  ‡‡‡— d| j         dz   c| _        | _         t          j        }‰�õ| xj        dz  c_        | j        | j                             ‰i ¦  «        ‰<   | j                             ‰i ¦  «        }||‰<   t          j	        | 
                    ¦   «         ¦  «        }ˆˆfd„| j                             ‰i ¦  «                             ¦   «         D ¦   «         Š‰r@|                      ‰‰¦  «         ˆfd„‰j                             ¦   «         D ¦   «         ‰_        i }t!          | j                             ¦   «         ¦  «        D ]´\  }	}
|
                     ¦   «         D ]š\  }}|j        |	j        vr‡|	‰us|j        ‰k    rx|                     | j                             |	i ¦  «                             |j        d¦  «        t'          |	¦  «        f|	|j        g f¦  «        d                              |¦  «         Œ›Œµt          j        d„ | j                             ‰i ¦  «         
                    ¦   «         D ¦   «         ¦  «        }i }t-          |¦  «        D ]ñ}||         \  }	}}t/          |¦  «        D ]Ó}‰j        t2          z
  |                      ¦   «         z
  }|||z   k    r0t7          j        ¦   «         j        t<          k    r|	‰us	||z   |k    r nu| j        |	         |         j        }|                      |	|g¦  «         |                     t'          |	¦  «        |fd¦  «        |z   |t'          |	¦  «        |f<   ||	‰u r|ndz  }ŒÔŒò|r^‰j         dk    rUtC          j"        d	d
 #                    d„ |                     ¦   «         D ¦   «         ¦  «        › �‰�d‰› d�ndz   ¦  «         dS dS dS )aX  A quiet point (the GPU has finished the work of the models unloaded), before model_id runs if not None: the entries of the models
        that do not run leave, those of the models used least recently first and their last entered first (those left stay spread evenly),
        while the room left is short of need (the bytes the pool may still lock for model_id) and ring (those of the staging ring its blocks
        cross until they enter), the system's available RAM is under POOL_RAM_FLOOR or, for the other models of manager, its entries and need
        exceed the largest whole (the bytes of all the blocks the pool takes for a model, model_id's being whole): a text encoder's entries
        leave when its transformer runs, a few of the transformer's when the text encoder runs again. Entries whose block's tensors were
        replaced leave too.Fr   Nc                 ó†   •— g | ]=\  }}|j         ‰k    ¯t          |j        ¦  «        ‰                     |¦  «        k    °;|‘Œ>S r—   )rË  r‚  r"  Ú_pool_leaves)rX  r	  r¡  ra  rË  s      €€r=   rZ  z)_PinnedPool.make_room.<locals>.<listcomp>ú  s�   ø€ ð  |ð  |ð  |Ñ$5 J°ÐbgÔbpÐt|Òb|Ðb|õ  FIð  JOô  JVñ  FWô  FWð  [b÷  [oò  [oð  pzñ  [{ô  [{ò  F{ð  F{�Zð  F{ð  F{ð  F{r?   c                 ó0   •— i | ]\  }}|d          ‰v¯||“ŒS rL  r—   )rX  r£  r6  Ústales      €r=   r¨  z)_PinnedPool.make_room.<locals>.<dictcomp>ý  s1   ø€ Ð&wÐ&wÐ&w±j°c¸5ÐcfÐghÔciÐqvÐcvÐcv s¨EÐcvÐcvÐcvr?   r   rÙ   c              3   ó$   K  — | ]}|j         V — Œd S rd   r  )rX  r¡  s     r=   rc  z(_PinnedPool.make_room.<locals>.<genexpr>  s$   è è € Ð]Ð]¨U˜EœLÐ]Ð]Ð]Ð]Ð]Ð]r?   zPinned pool: released ú, c              3   óB   K  — | ]\  \  }}}|t           z  d ›d|› �V — ŒdS )r‹  ú MB of N)rÿ  )rX  r!  Úother_modelr  s       r=   rc  z(_PinnedPool.make_room.<locals>.<genexpr>  se   è è € ð  :Xð  :Xñ  kCÑjzÐklÐnyð  }C¸VÅF¹]Ð:eÐ:eÐ:eÐXcÐ:eÐ:eð  :Xð  :Xð  :Xð  :Xð  :Xð  :Xr?   z for 'ú'z (RAM short))$r^  r_  ÚmathÚinfrƒ   rZ  rš  r[  rd  r  ry  rå  ry   r›   rK  Úblock_itemsr�   rË  Úactive_models_idsrÆ  rž   rà  r’  r'  r·   r÷  rf  r  r�  rŽ  r�  r  rª   r   r‘  rå   )rV   ra  rË  ÚneedÚwholer  Úlargestr[  rˆ  Úotherrå  r	  r¡  rµ  Úreleasedr£  r¢  r—  Úroomr  r�  s    ``                 @r=   Ú	make_roomz_PinnedPool.make_roomê  s–  øøø€ ð !& t¤z°A¡~ÐˆŒ	�4”:Ý”(ˆØÐØˆJŒJ˜!‰OˆJŒJØ:>¼*ˆDŒI× Ò  ¨"Ñ-Ô-¨hÑ7Ø”[×+Ò+¨G°RÑ8Ô8ˆFØ$ˆF�8ÑÝ”l 6§=¢=¡?¤?Ñ3Ô3ˆGð |ð  |ð  |ð  |ð  |¸¼×9IÒ9IÈ'ÐSUÑ9VÔ9V×9\Ò9\Ñ9^Ô9^ð  |ñ  |ô  |ˆEØð xØ—’˜W eÑ,Ô,Ð,Ø&wÐ&wÐ&wÐ&wÀGÔDW×D]ÒD]ÑD_ÔD_Ð&wÑ&wÔ&w�Ô#ØˆÝ" 4¤<×#5Ò#5Ñ#7Ô#7Ñ8Ô8ð 	Uð 	U‰NˆE�7Ø%,§]¢]¡_¤_ð Uð UÑ!�
˜EØ”>¨Ô)@Ð@Ð@ÀeÐSZÐFZÐFZÐ^cÔ^lÐpxÒ^xÐ^xØ—O’O T¤Y§]¢]°5¸"Ñ%=Ô%=×%AÒ%AÀ%Ä.ÐRSÑ%TÔ%TÕVXÐY^ÑV_ÔV_Ð$`ÐchÐjoÔjxÐz|Ðb}Ñ~Ô~ð  @Aô  B÷  Iò  Ið  JTñ  Uô  Uð  UøðUõ Œ|Ð]Ð]°d´l×6FÒ6FÀwÐPRÑ6SÔ6S×6ZÒ6ZÑ6\Ô6\Ð]Ñ]Ô]Ñ]Ô]ˆØˆÝ˜$‘<”<ð 		:ð 		:ˆCØ.2°3¬iÑ+ˆE�; Ý& {Ñ3Ô3ð :ð :�
ØÔ4Õ7IÑIÈDÏMÊMÉOÌOÑ[�Ø˜4 $™;Ò&Ð&­6Ô+@Ñ+BÔ+BÔ+LÕP^Ò+^Ð+^ÐdiÐqxÐdxÐdxð  }Að  DHñ  }Hð  LSò  }Sð  }SØ�EØœ eÔ,¨ZÔ8Ô?�Ø—’˜U Z LÑ1Ô1Ð1Ø5=·\²\Å2ÀeÁ9Ä9ÈkÐBZÐ\]Ñ5^Ô5^ÐagÑ5g��"˜U™)œ) [Ð1Ñ2Ø %¨7Ð"2Ð"2˜˜¸Ñ9��øØð 	`˜Ô,°Ò1Ð1ÝŒJð  Z°·	²	ð  :Xð  :Xð  GO÷  GUò  GUñ  GWô  GWð  :Xñ  :Xô  :Xñ  1Xô  1Xð  Zð  Zð  v~ð  vJð  ^rð  goð  ^rð  ^rð  ^rð  ^rð  P^ñ  _ñ  `ô  `ð  `ð  `ð  `ð	`ð 	`Ð1Ð1r?   c                 ó  ‡— | j         5  ˆfd„| j                             ¦   «         D ¦   «         }d d d ¦  «         n# 1 swxY w Y   |D ]}|                     ¦   «          Œ| j         5  | j                             ‰i ¦  «        }d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         D ]}|                     ¦   «          Œ| j                             ‰d ¦  «         | j	                             ‰d ¦  «         | xj
        dz  c_
        d S )Nc                 óL   •— g | ] \  \  }}\  }}|t          ‰¦  «        k    ¯|‘Œ!S r—   ©rÆ  )rX  rG  r!  r3  ra  s       €r=   rZ  z%_PinnedPool.close.<locals>.<listcomp>  s;   ø€ ÐjÐjÐjÑ"9¡* 5¨!©k¨v°qÐUZÕ^`ÐahÑ^iÔ^iÒUiÐUi�vÐUiÐUiÐUir?   r   )rì  r\  r›   r;  rå  r•  ry  rK  rZ  r[  r]  )rV   ra  r2  r3  r˜  r¡  s    `    r=   rK  z_PinnedPool.close  s’  ø€ àŒZð 	kð 	kØjÐjÐjÐj¸T¼\×=OÒ=OÑ=QÔ=QÐjÑjÔjˆGð	kð 	kð 	kñ 	kô 	kð 	kð 	kð 	kð 	kð 	kð 	køøøð 	kð 	kð 	kð 	kàð 	ð 	ˆFØ�MŠM‰OŒOˆOˆOØŒZð 	4ð 	4Ø”l×&Ò& w°Ñ3Ô3ˆGð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4à—^’^Ñ%Ô%ð 	ð 	ˆEØ�KŠK‰MŒMˆMˆMØŒ	�Š�g˜tÑ$Ô$Ð$ØŒ�Š˜ Ñ&Ô&Ð&ØˆŒ˜ÑˆŒˆˆs   ‰&;»?Á?Á&BÂBÂB)Nr   r   r   )rZ   r[   r\   r	  r‰   r¡  rc  rf  rj  Ústaticmethodr�  r†  r…  rK  r®  rK  r—   r?   r=   rV  rV  Q  sé   € € € € € ð
yð 
yð
ð 
ð 
ðDð Dð Dðhð hð hðOð Oð Oðð ð ð ð,Bð ,Bñ „\ð,Bð\
ð 
ð 
ð$<ð $<ð $<ðLð ð ð&`ð &`ð &`ð &`ðPð ð ð ð r?   rV  c                 ó|   — | d         d u o2t          | ¦  «        dk     p| d                              dd¦  «        dk    S )Nr  é   r¹   r¹  ÚloraÚlokr)rÂ   ry   )Ú	lora_datas    r=   Ú_plain_lorar¸  #  sA   € à�QŒ<˜4ÐÐf¥S¨¡^¤^°aÒ%7Ð%e¸9ÀQ¼<×;KÒ;KÈFÐTZÑ;[Ô;[Ð_eÒ;eÐfr?   c                 óÚ   — t          j        | ¦  «        5  t          j        |¦  «        5   ||Ž cd d d ¦  «         cd d d ¦  «         S # 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S rd   )rN   r†  Úset_grad_enabled)r†  Úgrad_enabledÚfnre   s       r=   Ú_run_in_grad_modesr½  (  s  € Ý	Ô	˜nÑ	-Ô	-ð ð ­uÔ/EÀlÑ/SÔ/Sð ð Øˆr�4ˆyðð ð ð ñ ô ð ð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s3   •A ªA¯A ÁA	ÁA ÁA	ÁA Á A$Á'A$c                 óÂ   — t          | ¦  «        }|rd„ |D ¦   «         n)t          | ¦  «        t          j        j        u r| j        n| g}t          d„ |D ¦   «         ¦  «        S )Nc                 ó   — g | ]\  }}|‘ŒS r—   r—   rß  s      r=   rZ  z$_pageable_nbytes.<locals>.<listcomp>.  s   € Ð)Ð)Ð)‘T�Q˜ˆqÐ)Ð)Ð)r?   c              3   ó�   K  — | ]A}|                      ¦   «         °|                     ¦   «         |                     ¦   «         z  V — ŒBd S rd   )r^  rA  rÞ  ©rX  r  s     r=   rc  z#_pageable_nbytes.<locals>.<genexpr>/  sF   è è € ÐRÐR°ÀAÇKÂKÁMÄMÐRˆq�wŠw‰yŒy˜1Ÿ>š>Ñ+Ô+Ñ+ÐRÐRÐRÐRÐRÐRr?   )rØ  r¹  rN   rO   r‹  rœ  rà  )r{  r©  Útensorss      r=   Ú_pageable_nbytesrÃ  ,  sk   € Ý+¨AÑ.Ô.€KØ-8ÐnÐ)Ð)˜[Ð)Ñ)Ô)Ð)ÍÈaÉÌÕTYÔT\ÔTfÐIfÐIf¸q¼v¸vÐlmÐ>n€GÝÐRÐR°WÐRÑRÔRÑRÔRÐRr?   c                 ó   — i }d}d}d }i }|                       ¦   «         D ]Œ\  }}	t          |	¦  «        }
|                     |
d ¦  «        }|d k    r"|\  }}|dz  }||z  }|dk    r|› d|› �}|||<   ŒRt          j        |	j        ¦  «        |	j                             ¦   «         z  }||f||
<   Œ�|dk    rL|dk    rF|dk    rt          d|t          z  d›d|› �¦  «         n!t          d|› d	|t          z  d›d
|› �¦  «         |S )Nr   r   ú <-> rÙ   úTied weights of ú0.2fú MB detected: úFound ú tied weights for a total of ú MB, last : )	r›   rä  ry   rN   rA  rœ  rÞ  rþ  rÿ  )rr  Úsd_namerª   Útied_weightsÚtied_weights_countÚtied_weights_totalÚtied_weights_lastÚ	ref_cacherã  r{  rã  ÚmatchÚ
match_nameÚ
match_sizer  s                  r=   Ú_extract_tie_weights_from_sdrÕ  1  sŠ  € Ø€LØÐØÐØÐØ€Ià—’‘
”
ð )ð )‰ˆˆ1Ý˜aÑ Ô ˆØ—’˜c 4Ñ(Ô(ˆØ�DŠ=ˆ=Ø%*Ñ"ˆJ˜
Ø !Ñ#ÐØ *Ñ,ÐØ˜aÒÐØ'1Ð$;Ð$;¸Ð$;Ð$;Ð!Ø(ˆL˜‰OˆOå”[ ¤Ñ(Ô(¨1¬6×+>Ò+>Ñ+@Ô+@Ñ@ˆFØ ˜[ˆI�c‰NˆNà�aÒÐÐ.°Ò2Ð2Ø Ò"Ð"ÝÐfÐ%7½Ñ%>ÐfÐfÐfÐSdÐfÐfÑgÔgÐgÐgåð  LÐ-ð  Lð  LÐL^Õ_eÑLeð  Lð  Lð  Lð  yJð  Lð  Lñ  Mô  Mð  MØÐr?   c           	      ó`
  — t          | t          ¦  «        r|n|g}t          dk    r>t          t          k    r.|dk    r&t	          dd                     |¦  «        › d�¦  «         d S t          | t          ¦  «        rNi }t          | ¦  «        D ]7\  }}|                     ¦   «         D ]\  }	}
|
|t          |¦  «        dz   |	z   <   ŒŒ8|} ~d }t          |t          ¦  «        rai }t          |¦  «        D ]J\  }}|                     ¦   «         D ]0\  }	}
t          |¦  «        dz   |
z   |t          |¦  «        dz   |	z   <   Œ1ŒK|}~d }d}d}g }g }d}|                      ¦   «         D ]ª\  }}|d k    s||vr›t          j
        |j        ¦  «        |j                             ¦   «         z  }||z   |k    r|                     |¦  «         d}|dz  }|j        j        j        }||z  r||||z  z
  z  }|                     |||f¦  «         ||z  }||z  }Œ«|                     |¦  «         g }d}d}d}	 t          j        t"          t          j        dd	¬
¦  «        }n'#  t	          d¦  «         d }t'          ¦   «          Y d S xY w|D ]~}	 t          j        |t          j        dd	¬
¦  «        }|                     |¦  «         n9#  d}d }t	          d|› d|t(          z  d›d�¦  «         t'          ¦   «          Y  nxY w|dz  }||z  }Œ~d}d }|                      ¦   «         D ]ê\  }}|d k    r|                     |d ¦  «        }|d k    r2| |         }|j        |_        |j                             ¦   «         sJ ‚d }n�||         \  }} }|dk    ry||k     rs||         }t          j
        |j        ¦  «        |j                             ¦   «         z  }t/          |j        || |¦  «        }t          j                             ||¦  «         ~|dz  }~Œët5          j        ¦   «          t          j                             ¦   «          |dk    rÿ|rt=          |¦  «        dk    r6t	          dd                     |¦  «        › d|› d|t(          z  d›d�¦  «         n´t	          dd                     |¦  «        › d|› d|t(          z  d›d�¦  «         n~t=          |¦  «        dk    r6t	          dd                     |¦  «        › d|› d|t(          z  d›d�¦  «         n5t	          dd                     |¦  «        › d|› d|t(          z  d›d�¦  «         d S )Nr   r   úUnable to pin data of 'ú,zg' to reserved RAM as there is no reserved RAM left. Transfer speed from RAM to VRAM will may be slower.ú#FTrj  r  z²There isn't any Reserved RAM left, you may need to choose a profile with a higher number that requires less Reserved RAM or set OS env 'perc_reserved_mem_max' to a value less 0.3z Unable to pin more tensors for 'z5' as the maximum reservable memory has been reached (r”   z1). Transfer speed from RAM to VRAM may be slower.r£  z)' were partially pinned to reserved RAM: ú large blocks spread across ú MBz(' was partially pinned to reserved RAM: z(' were pinned entirely to reserved RAM: z'' was pinned entirely to reserved RAM: )r™   r�   rŒ  r÷  rþ  rå   r¹  r›   rý  rN   rA  rœ  rÞ  rž   r,   Úitemsizer  ÚRESERVED_RAM_MIN_AVAILABLErû   Úflush_torch_cachesrÿ  ry   r^  r  rx  ry  ÚgcÚcollectr  Úempty_cacherÂ   )!rr  rÌ  rÍ  Úgig_tensor_sizerª   Ú
names_listÚnew_sdÚiÚsub_sdr¢   r£   Únew_tied_weightsÚsub_tied_weightsÚcurrent_big_tensor_sizeÚbig_tensor_noÚbig_tensors_sizesÚtensor_map_indexesÚtotal_tensor_bytesrã  r{  r  rÜ  Úbig_tensorsÚlast_big_tensorÚtotalÚincomplete_pinningÚdummy_pinned_tensorré  Úcurrent_big_tensorÚ	tensor_noÚq_namer|  r  s!                                    r=   Ú_pin_sd_to_memoryrö  M  sH  € õ ' r­4Ñ0Ô0Ð?��°w°i€Jå˜AÒÐÕ#5Õ9KÒ#KÐ#KØ˜!ŠOˆOÝð  j¨C¯HªH°ZÑ,@Ô,@ð  jð  jð  jñ  kô  kð  kØˆõ �"•dÑÔð ØˆÝ$ R™=œ=ð 	,ð 	,‰JˆAˆvØŸš™œð ,ð ,‘��1Ø*+�•s˜1‘v”v ‘| aÑ'Ñ(Ð(ð,àˆØØˆå�,¥Ñ%Ô%ð  ØÐÝ%.¨|Ñ%<Ô%<ð 	Fð 	FÑ ˆAÐØ(×.Ò.Ñ0Ô0ð Fð F‘��1Ý58¸±V´V¸c±\ÀAÑ5EÐ ¥ Q¡¤¨#¡°Ñ!1Ñ2Ð2ðFà'ˆØØÐàÐØ€MØÐØÐØÐà—’‘
”
ð )ð )‰ˆˆ1Ø˜4ÒÐ q¨LÐ'8Ð'8Ý”[ ¤Ñ(Ô(¨1¬6×+>Ò+>Ñ+@Ô+@Ñ@ˆFà&¨Ñ/°/ÒAÐAØ!×(Ò(Ð)@ÑAÔAÐAØ*+Ð'Ø Ñ"�à”v”|Ô,ˆHØ&¨Ñ1ð YØ'¨8Ð6MÐPXÑ6XÑ+XÑXÐ'Ø×%Ò% }Ð6MÈvÐ&XÑYÔYÐYØ# vÑ-Ð#à &Ñ(Ðøà×ÒÐ4Ñ5Ô5Ð5à€KØ€OØ€EØÐðÝ#œkÕ+EÍeÌkÐfjÐsxÐyÑyÔyÐÐøðÝð  Cñ  	Dô  	Dð  	DØ"ÐÝÑÔÐØˆˆøøøà!ð ð ˆð	Ý!&¤¨d½5¼;ÐSWÐ`eÐ!fÑ!fÔ!fÐØ×ÒÐ1Ñ2Ô2Ð2Ð2øð	Ø!%ÐØ!%ÐÝð  w°Wð  wð  wÐsxÕyÑsð  wð  wð  wð  wñ  xô  xð  xÝÑ Ô Ð ØˆEˆEøøøà˜1ÑˆØ�‰ˆˆØð €Ià€FØ—’‘”ð ð ‰ˆˆ1Ø˜4ÒÐØ!×%Ò% a¨Ñ-Ô-ˆFØ�TŠ>ˆ>Ø�6”
ˆAØ”VˆAŒFØ”6×#Ò#Ñ%Ô%Ð%Ð%Ð%ØˆAˆAà,>¸yÔ,IÑ)ˆM˜6 6à˜aÒÐ M°OÒ$CÐ$CØ%0°Ô%?Ð"Ýœ Q¤VÑ,Ô,¨q¬v×/BÒ/BÑ/DÔ/DÑD�Ý*¨1¬6Ð3EÀvÈvÑVÔV�Ý”×(Ò(¨¨AÑ.Ô.Ð.ØØ˜‰NˆIØˆAõ „J�L„L€LÝ	„J×ÒÑÔÐð �aÒÐØð 		[Ý�:‰Œ Ò"Ð"Ýð  \˜#Ÿ(š( :Ñ.Ô.ð  \ð  \ÐYhð  \ð  \ð  GLõ  MSñ  GSð  \ð  \ð  \ð  \ñ  ]ô  ]ð  ]ð  ]åð  [˜#Ÿ(š( :Ñ.Ô.ð  [ð  [ÐXgð  [ð  [ð  FKõ  LRñ  FRð  [ð  [ð  [ð  [ñ  \ô  \ð  \ð  \å�:‰Œ Ò"Ð"Ýð  [˜#Ÿ(š( :Ñ.Ô.ð  [ð  [ÐXgð  [ð  [ð  FKõ  LRñ  FRð  [ð  [ð  [ð  [ñ  \ô  \ð  \ð  \åð  Z˜#Ÿ(š( :Ñ.Ô.ð  Zð  ZÐWfð  Zð  Zð  EJõ  KQñ  EQð  Zð  Zð  Zð  Zñ  [ô  [ð  [ð €Fs   È$'I É!I0É87J0Ê03K&c	           	      ó4  ‡‡‡‡4‡5‡6‡7‡8‡9‡:— t           dk    r+t          t           k    r|dk    rt          d‰› d�¦  «         d S |r‰€t          | ¦  «        \  }	}
t	          |¦  «        }t          |¦  «        }d}d}g }g }d}i }|                      ¦   «         D ]ž\  Š6}d}|r‰€t          ˆ6fd„|	D ¦   «         ¦  «        }|r|sd‰6v rd}|rl|                     ˆ6ˆfd	„| 	                    d¬
¦  «        D ¦   «         ¦  «         |                     ˆ6ˆfd„| 
                    d¬
¦  «        D ¦   «         ¦  «         ŒŸ‰�3t          t          |                     ¦   «         ˆfd„¬¦  «        ¦  «        }|dk    rP|r;t          |¦  «        dk    rt          d‰› d�¦  «         n't          d‰› d�¦  «         nt          d‰› d�¦  «         t          |¦  «        dk    rd S i }i }d}d}d }|                     ¦   «         D �]a\  }\  }}
t          |¦  «        }|                     |d ¦  «        }|d k    r"|\  }}|dz  }||z  }|dk    r|› d|› �}|||<   ŒVt#          |¦  «        }|rDt%          j        d„ |D ¦   «         ¦  «        rd||<   ~ŒŒt%          j        d„ |D ¦   «         ¦  «        } nR|j                             ¦   «         rd||<   ŒÊt/          j        |j        ¦  «        |j                             ¦   «         z  } || f||<   || z   |k    r"|dk    r|                     |¦  «         d}|dz  }~t7          |¦  «        }|                     ||| f¦  «         || z  }|| z  }�Œc|dk    rL|dk    rF|dk    rt          d|t8          z  d›d|› �¦  «         n!t          d|› d|t8          z  d›d|› �¦  «         |                     |¦  «         |dk    rd S dŠ8t          }!|D ]-}"|!t;          |"t<          ¦  «        z  }!|dk    r|!|k    r n‰8dz  Š8Œ.g Š4dŠ:dŠ9d}#‰�‰                     ¦   «          tA          j!        ¦   «          	 t/          j"        tF          t.          j$        dd¬¦  «        }$nA# tJ          tL          f$ r-}%d }$tO          ¦   «          t          d|%› �¦  «         Y d }%~%d S d }%~%ww xY w‰�‰8r‰ (                    d d‰8‰¦  «         d!}&d}'tS          ¦   «         Š5g Š7ˆ4ˆ5ˆˆˆ7ˆ8ˆ9ˆ:fd"„}(	 |                     ¦   «         D �]ã\  }\  }})|€Œ|                     |d ¦  «        }*|*d k    rK||*         \  }+}
t#          |+¦  «        }|rd#„ |D ¦   «         },tU          ||,¦  «         ~,~n|+j        |_        d }+�no||'         \  }}-} |&|k     �rk‰�‰                     ¦   «          |&dz  }&t;          ||&         t<          ¦  «        }"	 |dk    r(t          ‰:z   ‰9z
  |"z   |k    rd }$d}#t          ‰:z   ‰9z
  a  �nú |(‰5 +                    d¬$¦  «        ¦  «         	 tY          |"¦  «        \  }.}/n8# tJ          tL          f$ r$}%t[          d%|"t8          z  d&›d'|%› �¦  «        |%‚d }%~%ww xY w‰4                     |.¦  «         ‰7                     |/¦  «         ‰5 .                    |&¦  «         nV# tZ          $ rI}%t          d(‰:t8          z  d&›d)|%› �¦  «         d }$d}#t          ‰:z   ‰9z
  a tO          ¦   «          Y d }%~% �nd }%~%ww xY w‰:|"z  Š:‰4|         }.|)rt_          |¦  «         t#          |¦  «        }|rr|-}0i }1|D ]X\  }2}3t/          j        |3¦  «        |3                     ¦   «         z  } ta          |3|.|0| ‰5¦  «        |1|2<   |0t7          | ¦  «        z  }0d }3ŒYtU          ||1¦  «         ~1~nPt/          j        |j        ¦  «        |j                             ¦   «         z  } ta          |j        |.|-| ‰5¦  «        |_        |'dz  }'~�Œå	  |(‰5 +                    ¦   «         ¦  «         nD# tZ          $ r7}%t          d*‰:t8          z  d&›d)|%› �¦  «         d}#t          ‰:z   ‰9z
  a Y d }%~%nd }%~%ww xY w‰5 1                    ¦   «          n# ‰5 1                    ¦   «          w xY w~$~~td          r‰9n‰:| _3        td          | _4        td          s)tj          5  t          ‰:z  ad d d ¦  «         n# 1 swxY w Y   ~tA          j!        ¦   «          |dk    rI|s|#r#t          d+|&dz   › d,‰:t8          z  d&›d-�¦  «         n"t          d.|&dz   › d,‰:t8          z  d&›d-�¦  «         d| _6        d S )/Nr   r   r×  zb' to reserved RAM as there is no reserved RAM left. Transfer speed from RAM to VRAM may be slower.Tc              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rd   ©rÀ   )rX  rÒ   r¢   s     €r=   rc  z!_pin_to_memory.<locals>.<genexpr>è  s/   øè è € ÐDÐD°˜!Ÿ,š, sÑ+Ô+ÐDÐDÐDÐDÐDÐDr?   ú.lora_Fc                 óp   •— i | ]2\  }}‰�t          |¦  «        ‰v ¯t          |¦  «        °'‰dz   |z   |df“Œ3S )Nr¼   F)rÆ  r±  )rX  rã  r{  r¢   Úrankss      €€r=   r¨  z"_pin_to_memory.<locals>.<dictcomp>í  sž   ø€ ð  !pð  !pð  !pÁÀÀ1Ðw|ð  xEõ  IKð  LMñ  INô  INð  RWð  IWð  IWõ  akð  lmñ  anô  anð  IW ! c¡'¨A¡+°°U°ð  IWð  IWð  IWr?   rÌ  c                 óR   •— i | ]#\  }}‰�t          |¦  «        ‰v ¯‰dz   |z   |df“Œ$S )Nr¼   Tr±  )rX  rã  r,  r¢   rü  s      €€r=   r¨  z"_pin_to_memory.<locals>.<dictcomp>î  sw   ø€ ð  !Tð  !Tð  !T¹t¸qÀ!ÐrwÐrõ  DFð  GHñ  DIô  DIð  MRð  DRð  DR ! c¡'¨A¡+°°T°
ð  DRð  DRð  DRr?   c                 óF   •— ‰t          | d         d         ¦  «                 S )Nr   r   r±  )rx  rü  s    €r=   rº  z _pin_to_memory.<locals>.<lambda>ð  s   ø€ ÈÍbÐQUÐVWÔQXÐYZÔQ[ÉnÌnÔH]€ r?   r¢  zUnable to apply Partial of 'z+' as no isolated main structures were foundzPartial pinning of data of 'z' to reserved RAMzPinning data of 'rÅ  c              3   óD   K  — | ]\  }}|                      ¦   «         V — Œd S rd   r]  rß  s      r=   rc  z!_pin_to_memory.<locals>.<genexpr>  s.   è è € ÐFÐF±$°!°Q §¢¡¤ÐFÐFÐFÐFÐFÐFr?   r„  c              3   óˆ   K  — | ]=\  }}t          |                     ¦   «         |                     ¦   «         z  ¦  «        V — Œ>d S rd   r¯  rß  s      r=   rc  z!_pin_to_memory.<locals>.<genexpr>  sH   è è € Ð%kÐ%kÑW[ÐWXÐZ[¥n°Q·W²W±Y´YÀÇÂÑAQÔAQÑ5QÑ&RÔ&RÐ%kÐ%kÐ%kÐ%kÐ%kÐ%kr?   rÆ  rÇ  rÈ  rÉ  rÊ  rË  rj  r  z+Unable to allocate the reserved RAM probe: ÚPinningr¾   c                 óB  •— | D ]š}‰|         �s‰                      ‰|         ‰|         ¦  «        s4‰	‰|                              ¦   «         z  Š	t          d‰j        › �¦  «        ‚‰‰|                              ¦   «         z  Š‰�‰                     d|dz   ‰‰¦  «         Œ›d S )NzcudaHostRegister failed: r  r   )rH  rA  r  rD  Úreport)
r  r5  rî  r  Úloading_callbackrË  ÚownersÚpinning_totalrE  rð  s
     €€€€€€€€r=   Úreport_pinnedz%_pin_to_memory.<locals>.report_pinnedS  sÆ   ø€ àð 	wð 	wˆHØ�hÔÐ+Ø—{’{ ;¨xÔ#8¸&ÀÔ:JÑKÔKð _Ø˜[¨Ô2×8Ò8Ñ:Ô:Ñ:�EÝ-Ð.]È&ÔJ[Ð.]Ð.]Ñ^Ô^Ð^Ø˜k¨(Ô3×9Ò9Ñ;Ô;Ñ;�
ØÐ+Ð-=×-DÒ-DÀYÐPXÐ[\ÑP\Ð^kÐmuÑ-vÔ-vÐ-vøð	wð 	wr?   c                 ó   — i | ]\  }}||“Œ	S r—   r—   r§  s      r=   r¨  z"_pin_to_memory.<locals>.<dictcomp>d  s   € ÐLÐLÐL±°°f˜t VÐLÐLÐLr?   ©r<  zallocation of r”   z MB failed: z+Unable to pin more tensors for this model (z MB): z(Unable to lock more RAM for this model (z0The model was partially pinned to reserved RAM: rÚ  rÛ  z,The whole model was pinned to reserved RAM: )7rŒ  r÷  rþ  rÕ   r´   r¸   r¿   rÎ  ÚupdateÚnamed_parametersÚnamed_buffersrš   r’  r›   rÂ   rä  ry   rØ  rd  re  rà  rœ  r^  rN   rA  rÞ  rž   r  rÿ  r  ÚBIG_TENSOR_MIN_SIZEÚcheck_abortrß  rà  r  rÝ  rû   ÚMemoryErrorrò  rÞ  r  rN  rÛ  r=  r  r  r6  r}  r  rK  r  Ú_pinned_bytesÚ_pinned_bytes_by_ownerrö  Ú_already_pinned);rÆ   rË  ÚpartialPinningÚpinnedPEFTLoraÚbig_tensor_sizer®   rª   r  rü  rË   r!  r·   ré  rê  rë  rì  rí  Úparams_dictró   ÚincluderÑ  rÍ  rÎ  rÏ  rÐ  rã  r{  rã  rÒ  rÓ  rÔ  r©  r  Úplanned_bytesré  Úfailed_planned_allocationrò  rë  Úlast_allocated_big_tensorrô  r  Ú	is_bufferrõ  r|  rª  r  ró  rG  Ú
sub_offsetÚnew_subsr³   r‰  rî  r  r¢   r  r  rE  rð  s;    `     ``                                           @@@@@@@r=   Ú_pin_to_memoryr  Í  s  øøøøøøøøøø€ õ ˜AÒÐÕ#5Õ9KÒ#KÐ#Kà˜!ŠOˆOÝð  Y¨Hð  Yð  Yð  Yñ  Zô  Zð  ZØˆàð 5˜%˜-Ý-¨eÑ4Ô4‰ˆ�aõ 7Ð7LÑMÔMÐÝ6Ð7LÑMÔMÐàÐØ€MØÐØÐØÐà€KØ×,Ò,Ñ.Ô.ð 	Wð 	W‰ˆˆ:ØˆØð 	E˜e˜mÝÐDÐDÐDÐD°|ÐDÑDÔDÑDÔDˆGØð 	˜>ð 	¨h¸!¨m¨mØˆGàð 	WØ×Òð  !pð  !pð  !pð  !pð  !pÈ
×HcÒHcÐlqÐHcÑHrÔHrð  !pñ  !pô  !pñ  sô  sð  sØ×Òð  !Tð  !Tð  !Tð  !Tð  !TÀz×G_ÒG_ÐhmÐG_ÑGnÔGnð  !Tñ  !Tô  !Tñ  Wô  Wð  WøØÐÝ�6 +×"3Ò"3Ñ"5Ô"5Ð;]Ð;]Ð;]Ð;]Ð^Ñ^Ô^Ñ_Ô_ˆà�aŠˆØð 	CÝ�;ÑÔ 1Ò$Ð$ÝÐj°XÐjÐjÐjÑkÔkÐkÐkåÐP°XÐPÐPÐPÑQÔQÐQÐQåÐA hÐAÐAÐAÑBÔBÐBå
ˆ;ÑÔ˜1ÒÐØˆà€IØ€LØÐØÐØÐà ×&Ò&Ñ(Ô(ð #)ñ #)‰	ˆ‰6ˆAˆqÝ˜aÑ Ô ˆØ—’˜c 4Ñ(Ô(ˆØ�DŠ=ˆ=Ø%*Ñ"ˆJ˜
Ø !Ñ#ÐØ *Ñ,ÐØ˜aÒÐØ'1Ð$;Ð$;¸Ð$;Ð$;Ð!Ø(ˆL˜‰OˆOå3°AÑ6Ô6ˆKØð 
EÝ”<ÐFÐF¸+ÐFÑFÔFÑFÔFð Ø%2�K ‘NØ#ØÝ!œÐ%kÐ%kÐ_jÐ%kÑ%kÔ%kÑkÔk��à”6×#Ò#Ñ%Ô%ð Ø%2�K ‘NØÝœ Q¤VÑ,Ô,¨q¬v×/BÒ/BÑ/DÔ/DÑD�à ˜[ˆI�c‰NØ&¨Ñ/°/ÒAÐAÐF]Ð`aÒFaÐFaØ!×(Ò(Ð)@ÑAÔAÐAØ*+Ð'Ø Ñ"�àÝ&4Ð5LÑ&MÔ&MÐ#Ø×%Ò% }Ð6MÈvÐ&XÑYÔYÐYØ# vÑ-Ð#à &Ñ(ÐÑØ�aÒÐÐ.°Ò2Ð2Ø !Ò#Ð#ÝÐfÐ%7½Ñ%>ÐfÐfÐfÐSdÐfÐfÑgÔgÐgÐgåð  LÐ-ð  Lð  LÐL^Õ_eÑLeð  Lð  Lð  Lð  yJð  Lð  Lñ  Mô  Mð  Mð ×ÒÐ4Ñ5Ô5Ð5à˜QÒÐØˆà€MÝ&€MØ!ð ð ˆØ�˜TÕ#6Ñ7Ô7Ñ7ˆØ  1Ò$Ð$¨Ð:OÒ)OÐ)OØˆEØ˜Ñˆˆà€KØ€EØ€Jð !&ÐØÐ#Ð%5×%AÒ%AÑ%CÔ%CÐ%CÝ„J�L„L€LðÝ#œkÕ+EÍeÌkÐfjÐsxÐyÑyÔyÐÐøÝ�Ð&ð ð ð Ø"ÐÝÑÔÐÝÐC¸EÐCÐCÑDÔDÐDØˆˆˆˆˆøøøøð	øøøð Ð#¨Ð#Ø×Ò 	¨1¨m¸XÑFÔFÐFà "ÐØ€IÝ$Ñ&Ô&€FØ€Fðwð wð wð wð wð wð wð wð wð wð wð wðJØ!,×!2Ò!2Ñ!4Ô!4ð A	ñ A	ÑˆA‰~��9Øˆy˜(Ø!×%Ò% a¨Ñ-Ô-ˆFØ˜Š~ˆ~Ø# FÔ+‘��AÝ7¸Ñ:Ô:�Øð $ØLÐLÀÐLÑLÔL�GÝ-¨a°Ñ9Ô9Ð9Ø  àœV�A”FØ�‘ð 1CÀ9Ô0MÑ-�˜v vØ,°Ò=Ñ=Ø'Ð3Ð5E×5QÒ5QÑ5SÔ5SÐ5SØ-°Ñ2Ð-ÝÐ0Ð1JÔKÕM`ÑaÔa�DðØ0°1Ò4Ð4Õ<NÐQVÑ<VÐYcÑ<cÐfjÑ<jð  pEò  <Eð  <EØ26Ð/Ø8<Ð5Ý1CÀeÑ1KÈjÑ1XÐ.Ø!™Eà%˜ f§k¢k°q kÑ&9Ô&9Ñ:Ô:Ð:ðxÝ8EÀdÑ8KÔ8KÑ5Ð.°°øÝ +­\Ð:ð xð xð xÝ"5Ð6kÀtÍFÁ{Ð6kÐ6kÐ6kÐdiÐ6kÐ6kÑ"lÔ"lÐrwÐwøøøøðxøøøà#×*Ò*Ð+=Ñ>Ô>Ð>ØŸš eÑ,Ô,Ð,Ø×*Ò*Ð+DÑEÔEÐEÐEøÝ.ð ð ð ÝÐkÈEÕRXÉLÐkÐkÐkÐdiÐkÐkÑlÔlÐlØ.2Ð+Ø48Ð1Ý-?À%Ñ-GÈ*Ñ-TÐ*Ý*Ñ,Ô,Ð,Ø˜˜˜˜™øøøøðøøøð ˜T‘M�Eà%0°Ô%?Ð"àð *Ý& qÑ)Ô)Ð)Ý7¸Ñ:Ô:�Øð hØ!'�JØ!�HØ(3ð &ð &™˜˜fÝ!&¤¨VÑ!4Ô!4°v×7JÒ7JÑ7LÔ7LÑ!L˜Ý)?ÀÐHZÐ\fÐhnÐpvÑ)wÔ)w˜ ™Ø"¥n°VÑ&<Ô&<Ñ<˜
Ø!%˜˜Ý-¨a°Ñ:Ô:Ð:Ø  + +å"œ[¨¬Ñ0Ô0°1´6×3FÒ3FÑ3HÔ3HÑH�FÝ3°A´FÐ<NÐPVÐX^Ð`fÑgÔg�A”Fà˜Q‘�	Ø‘ð	IØˆM˜&Ÿ+š+™-œ-Ñ(Ô(Ð(Ð(øÝ"ð 	Ið 	Ið 	IÝÐ\¸UÅ6¹\Ð\Ð\Ð\ÐUZÐ\Ð\Ñ]Ô]Ð]Ø(,Ð%Ý!3°eÑ!;¸jÑ!HÐÐÐÐÐÐøøøøð	Iøøøð
 	�Š‰Œˆˆøˆ�Š‰ŒˆˆøøøØ˜L¨)Ý(5Ð@˜*˜*¸5€EÔÝ#0€EÔ Ýð (Ýð 	(ð 	(Ý %Ñ'Ðð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àÝ„J�L„L€Là�aÒÐØð 	SÐ6ð 	SÝð  VÐE^ÐabÑEbð  Vð  Vð  AFõ  GMñ  AMð  Vð  Vð  Vð  Vñ  Wô  Wð  Wð  Wåð  RÐAZÐ]^ÑA^ð  Rð  Rð  }Bõ  CIñ  }Ið  Rð  Rð  Rð  Rñ  Sô  Sð  Sà €EÔð €Fs½   Ð/'Q ÑRÑ("RÒRÓCa Ö&+Y?×a ×Y?×4XØY?ØX<ØX7Ø7X<Ø<AY?Ù>a Ù?
[Ú	=[Ûa Û[ÛC<a ß_- ß,a ß-
`.ß7-`)à$a à)`.à.a áaâb#â#b'â*b'c                 óü  — |                       ¦   «         D ]æ\  }}t          |d¦  «        rŒ|                     d¬¦  «        D ]Y\  }}t          |t          ¦  «        st          |¦  «        rŒ*|j        j        |k    r|j                             |¦  «        |_        ŒZ|s^| 	                    d¬¦  «        D ]G}t          |t          ¦  «        rŒ|j        j        |k    r|j                             |¦  «        |_        ŒHŒç| S )NÚ_lock_dtypeFrÌ  )
r¿   rH   r  r™   r&   r±  rœ  r,   rU   rÂ  )rÆ   Ú	new_dtypeÚexclude_buffersrÎ   rÏ   rã  r{  s          r=   Úchange_dtyper#  º  s
  € Ø%*×%8Ò%8Ñ%:Ô%:ð 2ð 2Ñ!ˆ˜	Ý�9˜mÑ,Ô,ð 	ØØ×.Ò.¸Ð.Ñ?Ô?ð 	.ð 	.‰DˆAˆqÝ˜!�WÑ%Ô%ð ­°A©¬ð ØØŒvŒ|˜yÒ(Ð(ØœŸš 9Ñ-Ô-�”øàð 	2Ø×&Ò&¨uÐ&Ñ5Ô5ð 2ð 2�Ý˜a¥Ñ)Ô)ð ØØ”6”< 9Ò,Ð,ØœVŸYšY yÑ1Ô1�A”Føøà€Lr?   c                 ó  — t          | ¦  «        }t          |¦  «        D ]S}| | dz
  d …                              ¦   «         s1|dk    r| dfc S | d | …         t          | | d …         ¦  «        fc S ŒTd|dk    rdnt          | ¦  «        fS )Nr   r   r¾   r»   )rÂ   r*  Ú	isnumericrõ  )Ú
num_in_strré  rå  s      r=   rÃ   rÃ   Í  s°   € Ýˆz‰?Œ?€DÝ�4‰[Œ[ð ?ð ?ˆØ˜1˜"˜Q™$˜%˜%Ô ×*Ò*Ñ,Ô,ð 	?Ø�AŠvˆvØ! 2�~Ð%Ð%Ð%à! $ Q B $Ô'­#¨j¸!¸¸¸¬oÑ*>Ô*>Ð>Ð>Ð>Ð>ð		?ð
 �d˜a’i�i��¥S¨¡_¤_Ð4Ð4r?   c           
      óÎ   ‡‡— t          | d| j        ¦  «         ddlmŠ dd lŠˆˆfd„}t          | dt          j        t          j        || ¦  «        | j        ¦  «        ¦  «         d S )NÚ_real_state_dictr   rh  c                 ó  •— |                       ¦   «         }d} ‰	j        d d¬¦  «        }|D ]}d|j        v rd} nŒ|s|S  ‰¦   «         }|D ]>}||         }|                     d¦  «        r|d t	          |¦  «        dz
  …         }|||<   Œ?|S )NFr¹   )rs  ÚlimitÚ_lora_Tú._datar´  )r(  Úextract_stackr³   ÚendswithrÂ   )
rV   Úreal_sdÚfakeitÚstackÚframerr  r¢   r£   r  Ú	tracebacks
           €€r=   Ústate_dict_for_loraz1_quantize_dirty_hack.<locals>.state_dict_for_loraÝ  sÈ   ø€ Ø×'Ò'Ñ)Ô)ˆØˆØ'�	Ô'¨$°aÐ8Ñ8Ô8ˆØð 	ð 	ˆEØ˜5œ:Ð%Ð%Ø�Ø�ð &ð ð 	ØˆNØˆ[‰]Œ]ˆØð 	ð 	ˆAØ˜”
ˆAØ�zŠz˜(Ñ#Ô#ð !Ø�i•s˜1‘v”v˜a‘x�i”L�ØˆBˆq‰EˆEØˆ	r?   Ú
state_dict)Úsetattrr5  r  r  r3  Ú	functoolsÚupdate_wrapperÚpartial)rÆ   r4  r  r3  s     @@r=   Ú_quantize_dirty_hackr:  ×  s�   øø€ åˆUÐ&¨Ô(8Ñ9Ô9Ð9Ø'Ð'Ð'Ð'Ð'Ð'ØÐÐÐðð ð ð ð ð õ& ˆE�<¥Ô!9½)Ô:KÐL_ÐafÑ:gÔ:gÐinÔiyÑ!zÔ!zÑ|Ô|Ð|Ð|Ð|r?   c                 ó$   — ddl m}  || ¦  «        S )Nr   )Úquantization_map)Úoptimum.quantor<  )rÆ   r<  s     r=   Ú_quantization_mapr>  ò  s%   € Ø/Ð/Ð/Ð/Ð/Ð/ØÐ˜EÑ"Ô"Ð"r?   c                 ó  — |                      d¦  «        }t          |¦  «        dk    rt          | ||¦  «         d S |d |                     d¦  «        …         }|                      |¦  «        } t          | |d         |¦  «         d S )Nr¼   r   r¾   )rÁ   rÂ   r6  ÚrindexrÅ  )Úparent_moduler³   Úchild_moduleÚmodule_namesÚparent_module_names        r=   Ú_set_module_by_namerE  ö  sŠ   € Ø—:’:˜c‘?”?€LÝ
ˆ<ÑÔ˜AÒÐÝ�˜t \Ñ2Ô2Ð2Ð2Ð2à!Ð"4 D§K¢K°Ñ$4Ô$4Ð"4Ô5ÐØ%×3Ò3Ð4FÑGÔGˆÝ�˜|¨BÔ/°Ñ>Ô>Ð>Ð>Ð>r?   rÆ   r³   r<   c                 ó¼   — t          ||||¬¦  «        }|�Dt          | ||¦  «         ||_        |                     ¦   «         D ]\  }}t	          ||d ¦  «         ~Œd S d S )N)r.   r/   r0   )r'   rE  r³   r  r6  )rÆ   r³   r<   r.   r/   r0   rI   Úparams           r=   Ú_quantize_submodulerH  ÿ  s‚   € õ ˜f¨gÀ;ÐZcÐdÑdÔd€GØÐÝ˜E 4¨Ñ1Ô1Ð1ØˆŒØ!×2Ò2Ñ4Ô4ð 	ð 	‰KˆD�%å�F˜D $Ñ'Ô'Ð'Ø�ð Ðð	ð 	r?   r5  r<  c                 ó   ‡— t          |                     ¦   «         ¦  «        Šˆfd„}|                      ¦   «         D ]ƒ\  }} ||¦  «        s||vrŒ||         }|j        j        j        s|j        j        j        sŒ@|j        j        |j        j        k    r)|j                             |j        j        ¦  «        |_        Œ„|                      ¦   «         D ]“\  }}	| 	                    |d ¦  «        }
|
�v|
d         }|dk    rd }|
d         }|dk    rd }t          | ||	||¬¦  «         |�@|                      |¦  «        }t          |dd ¦  «        }t          |¦  «        r ||¦  «         Œ”|| _        t          | ¦  «         d S )Nc                 óX   •— | ‰v rdS d| v r|                       dd¦  «        d         ‰v S dS )NTr¼   r   r   F)Úrsplit)Ú
param_nameÚquantized_namess    €r=   Ú_is_quantized_paramz(_requantize.<locals>._is_quantized_param  sC   ø€ Ø˜Ð(Ð(Ø�4Ø�*ÐÐØ×$Ò$ S¨!Ñ,Ô,¨QÔ/°?ÐBÐBØˆur?   r.   Únoner/   )r.   r/   Úset_default_dtype)r‚  rn  r  rœ  r,   Úis_floating_pointÚ
is_complexrU   r¿   ry   rH  rÅ  rS   ÚcallableÚ_quanto_mapr:  )rÆ   r5  r<  Údefault_dtyperN  r¢   r{  Ú	p_in_filer³   ÚmÚqconfigr.   r/   Ú
new_modulerÚ  rM  s                  @r=   Ú_requantizerZ    sÂ  ø€ ÝÐ*×/Ò/Ñ1Ô1Ñ2Ô2€Oðð ð ð ð ð ×&Ò&Ñ(Ô(ð 5ð 5‰ˆˆ1ØÐ˜qÑ!Ô!ð 	 Q¨jÐ%8Ð%8ØØ˜q”Mˆ	Ø”Ô$Ô6ð 	¸)¼.Ô:NÔ:Yð 	ØØŒ6Œ<˜9œ>Ô/Ò/Ð/Ø”V—Y’Y˜yœ~Ô3Ñ4Ô4ˆAŒFøð ×&Ò&Ñ(Ô(ð *ð *‰ˆˆaØ"×&Ò& t¨TÑ2Ô2ˆØÐØ˜iÔ(ˆGØ˜&Ò Ð Ø�Ø! -Ô0ˆKØ˜fÒ$Ð$Ø"�Ý  t¨Q¸È[ÐYÑYÔYÐYØÐ(Ø"×0Ò0°Ñ6Ô6�
Ý  Ð-@À$ÑGÔG�Ý˜FÑ#Ô#ð *Ø�F˜=Ñ)Ô)Ð)øà(€EÔå˜ÑÔÐÐÐr?   c                 ó¾  ‡	‡
— |€g S t          |t          ¦  «        r|g}g }d„ |D ¦   «         }|                      ¦   «         D ]™\  Š
}‰
dk    rŒ‰
g}|ˆ
fd„|                     d¬¦  «        D ¦   «         z  }|ˆ
fd„|                     d¬¦  «        D ¦   «         z  }d}|D ]$Š	t          ˆ	fd„|D ¦   «         ¦  «        rd|‰	<   d}Œ%|r|                     ‰
¦  «         Œš|d	k    r3t          |¦  «        d
k    r t          dt          |¦  «        › d�¦  «         |dk    rCd„ | 	                    ¦   «         D ¦   «         }t          |¦  «        d
k    rt          d|› �¦  «         |S )Nc                 ó   — i | ]}|d “ŒS ©Fr—   )rX  Úpatterns     r=   r¨  z-_quantize_exclude_modules.<locals>.<dictcomp>C  s   € ÐFÐFÐF¨'�w ÐFÐFÐFr?   r»   c                 ó$   •— g | ]\  }}‰› d |› �‘ŒS ©r¼   r—   ©rX  r³   r!  rÎ   s      €r=   rZ  z-_quantize_exclude_modules.<locals>.<listcomp>H  s+   ø€ ÐkÐkÐk±g°d¸A˜.Ð1Ð1¨4Ð1Ð1ÐkÐkÐkr?   FrÌ  c                 ó$   •— g | ]\  }}‰› d |› �‘ŒS r`  r—   ra  s      €r=   rZ  z-_quantize_exclude_modules.<locals>.<listcomp>I  s+   ø€ ÐhÐhÐh±g°d¸A˜.Ð1Ð1¨4Ð1Ð1ÐhÐhÐhr?   c              3   óB   •K  — | ]}t          j        |‰¦  «        V — Œd S rd   )ÚfnmatchÚfnmatchcase)rX  Ú	candidater^  s     €r=   rc  z,_quantize_exclude_modules.<locals>.<genexpr>L  s0   øè è € ÐWÐW¸y•7Ô& y°'Ñ:Ô:ÐWÐWÐWÐWÐWÐWr?   Tr   r   zUser excluded z modules from quantizationrÙ   c                 ó   — g | ]	\  }}|°|‘Œ
S r—   r—   )rX  r^  Ú	did_matchs      r=   rZ  z-_quantize_exclude_modules.<locals>.<listcomp>U  s#   € Ð^Ð^Ð^Ñ1˜w¨	ÐT]Ð^�7Ð^Ð^Ð^r?   z0User quantization exclude patterns not matched: )
r™   rý  r¿   r  r  rÎ  rž   rÂ   rþ  r›   )Úmodel_to_quantizeÚquantize_excluderª   ÚmatchedÚpattern_matchesrÏ   rÉ  Úmodule_matchesÚmissingr^  rÎ   s            @@r=   Ú_quantize_exclude_modulesro  <  sÒ  øø€ ØÐØˆ	ÝÐ"¥CÑ(Ô(ð .Ø,Ð-Ðà€GØFÐFÐ5EÐFÑFÔF€OØ%6×%DÒ%DÑ%FÔ%Fð +ð +Ñ!ˆ˜	Ø˜RÒÐØØ$Ð%ˆ
ØÐkÐkÐkÐkÀ×A[ÒA[ÐdiÐA[ÑAjÔAjÐkÑkÔkÑkˆ
ØÐhÐhÐhÐhÀ×AXÒAXÐafÐAXÑAgÔAgÐhÑhÔhÑhˆ
ØˆØ'ð 	&ð 	&ˆGÝÐWÐWÐWÐWÈJÐWÑWÔWÑWÔWð &Ø+/� Ñ(Ø!%�øØð 	+Ø�NŠN˜>Ñ*Ô*Ð*øà�qÒÐ�S ™\œ\¨AÒ-Ð-ÝÐG�s 7™|œ|ÐGÐGÐGÑHÔHÐHØ�qÒÐØ^Ð^°_×5JÒ5JÑ5LÔ5LÐ^Ñ^Ô^ˆÝˆw‰<Œ<˜!ÒÐÝÐNÀWÐNÐNÑOÔOÐOØ€Nr?   c                 óŒ   — g }t          ¦   «         }| D ]0}||vr*|                     |¦  «         |                     |¦  «         Œ1|S rd   )r‚  rž   r�  )ry  ÚuniqueÚseenrz  s       r=   Ú_unique_listrs  [  sQ   € Ø€FÝ‰5Œ5€DØð ð ˆØ˜ÐÐØ�MŠM˜%Ñ Ô Ð Ø�HŠH�U‰OŒOˆOøØ€Mr?   l        ÚUnknownc           	      óâ  ‡+— d}d}g }d}	g }
d }d }t          | d¦  «        rT| j                             ¦   «         D ]%\  }}|d         }t          d|› d|› d�¦  «          dS t          d|› d�¦  «         dS t          d	|› d
|› d�¦  «         t	          | ¦  «        \  }}d„ |D ¦   «         }i }i }i }|                      ¦   «         D �]ã\  Š+}t          |t          ¦  «        r|dk    rt          d¦  «          dS d}|                     d¬¦  «        D ]‡\  }}t          |¦  «        }| 
                    |d ¦  «        }|d k    r,|f|z   |‰+<   | 
                    |g ¦  «        }||‰+|fgz   ||<   Œ\‰+|f||<   |t          j        |j        ¦  «        t          z  z  }Œˆ|                     d¬¦  «        D ]&}|t          j        |j        ¦  «        t          z  z  }Œ'd}t          |d¦  «        r|	|z  }	|
                     ‰+¦  «         d}t#          ˆ+fd„|D ¦   «         ¦  «        s…d}|d k    s‰+                     |¦  «        s‰+dz   }d}|rA|	|k    r7||
z  }|dk    r'|	dk    r!t          d|	t&          z  d›d|› d|
› �¦  «         ||	z  }d}	g }
|}|s|	|z  }	|
                     ‰+¦  «         ||z  }�Œå|	dk    r1||
z  }|dk    r!t          d|	t&          z  d›d|› d|
› �¦  «         ||	z  }|dk    r||z  nd}|dk    rR|dk    rt          d|t&          z  d›d�¦  «         n/t          d|t&          z  d›d|t&          z  d›d|dz  d›d�¦  «         |d k    r|dk    rt          d!¦  «         d }t)          | ||¬"¦  «        }|d#„ |                      ¦   «         D ¦   «         z  }|€t+          |¦  «        |z   }n|t+          |¦  «        |z   z  }t-          |¦  «        }t/          | ||¬$¦  «         d%„ |                      ¦   «         D ¦   «         }|                     ¦   «         D �]d\  } }!t          |!t          ¦  «        s*t          |!d&¦  «        rFt          |!j        t          ¦  «        r,t          |!d'¦  «        r|!j        �t5          |!j        ¦  «         nÊ| 
                    | d ¦  «        }"|!                     d¬¦  «        D ]�\  }}t7          |¦  «        rŒ|"d k    r?||"d         k    r3t          ||"d                  t          ¦  «        rt9          |!|d ¦  «         nBt5          |¦  «         | 
                    | |fg ¦  «        }|D ]\  }#}$}%||%k    r|j        |#_        Œ~Œž|!                     d¬¦  «        D ]}&t;          |&¦  «         ~&Œ�Œft=          | ¦  «         t          j                              ¦   «          tC          j"        ¦   «          |                     ¦   «         D ]K\  }'\  }#}(})tG          ||(         |)¦  «        }t          |tH          ¦  «        rt9          ||'         |#|¦  «         ŒL~tK          | ¦  «        }*|*| _        t          | d(¦  «        rtM          | d(¦  «         tO          | ¦  «         t          d	|› d)�¦  «         dS )*Nr   rT  r.   úModel 'z"' is already quantized to format 'r£  Fz' is already quantizedzQuantization of model 'z' started to format 'c                 ó"   — g | ]}|d d…         ‘ŒS r½   r—   )rX  rã  s     r=   rZ  z_quantize.<locals>.<listcomp>z  s    € Ð0Ð0Ð0˜q�A�c�r�c”FÐ0Ð0Ð0r?   r   z3No quantization to do as model is already quantizedrÌ  r   Tc              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rd   rù  )rX  rÒ   rÎ   s     €r=   rc  z_quantize.<locals>.<genexpr>œ  s1   øè è € ÐIÐI°c�>×,Ò,¨SÑ1Ô1ÐIÐIÐIÐIÐIÐIr?   r¼   rÙ   zExcluded size ú.1fz MB: z : z@Can't find any module to exclude from quantization, full model (z MB) will be quantizedzTotal Excluded r¡  z	 that is éd   r”   ú%çš™™™™™É?zmToo many modules are excluded, there is something wrong with the selection, switch back to full quantization.©rª   c                 ó|   — g | ]9\  }}t          j        d „ |                     d¬¦  «        D ¦   «         ¦  «        ¯7|‘Œ:S )c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rd   )r±  ©rX  r{  s     r=   rc  z'_quantize.<locals>.<listcomp>.<genexpr>Æ  sM   è è € ð  e^ð  e^ÐwxÕeoÐpqÑerÔerð  e^ð  e^ð  e^ð  e^ð  e^ð  e^r?   FrÌ  )rd  rÎ  rÁ  ©rX  r³   r<   s      r=   rZ  z_quantize.<locals>.<listcomp>Æ  sœ   € ð  _ð  _ð  _¡< 4¨ÕX`ÔXdð  e^ð  e^ð  }C÷  }Nò  }Nð  W\ð  }Nñ  }]ô  }]ð  e^ñ  e^ô  e^ñ  Y^ô  Y^ð  _˜$ð  _ð  _ð  _r?   )r.   Úexcludec                 ó   — i | ]\  }}||“Œ	S r—   r—   )rX  rã  rW  s      r=   r¨  z_quantize.<locals>.<dictcomp>Ø  s   € ÐFÐFÐF™S˜Q˜q�Q�qÐFÐFÐFr?   Ú
base_layerr2   r  z' done)(rH   rT  r›   rþ  rÕ   r¿   r™   r$   r  rä  ry   rN   rA  rœ  ÚsizeofhalffloatrÂ  rž   rÎ  rÀ   rÿ  ro  r�   rs  r#   r„  r2   r‚  r±  r6  r}  r   r  rá  rß  rà  rS   r&   r>  Údelattrr:  ),ri  r.   rª   Ú	thresholdrË  rj  Ú
total_sizeÚtotal_excludedÚexclude_listÚsubmodule_sizeÚsubmodule_namesrÉ   Úprev_blocks_prefixr¢   r¡  Útower_namesr!  Ú	cache_refrÍ  Úreversed_tied_weightsrÏ   ré  rã  r{  rã  rÒ  rå  Úalready_addedÚflushÚperc_excludedÚuser_exclude_listr¿   Úmodule_namer<   Útied_wÚtied_weightÚtied_module_nameÚtied_weight_namer,  Útied_moduleÚ
src_moduleÚ
src_weightr<  rÎ   s,                                              @r=   Ú	_quantizer�  e  sU  ø€ à€JØ€NØ€LØ€NØ€OØÐØÐåÐ  -Ñ0Ô0ð Ø)Ô5×;Ò;Ñ=Ô=ð 	ð 	‰HˆAˆuØ˜iÔ(ˆGÝÐR˜HÐRÐRÈÐRÐRÐRÑSÔSÐSØ�5�5ÝÐ8˜Ð8Ð8Ð8Ñ9Ô9Ð9Øˆuå	Ð
M HÐ
MÐ
MÀ7Ð
MÐ
MÐ
MÑNÔNÐNå)Ð*;Ñ<Ô<�N€K�Ø0Ð0 KÐ0Ñ0Ô0€Kð €IØ€LØÐà%6×%DÒ%DÑ%FÔ%Fð .ñ .Ñ!ˆ˜	Ý�i¥Ñ.Ô.ð 	Ø˜QŠˆÝÐKÑLÔLÐLØ�5�5àˆØ×.Ò.¸Ð.Ñ?Ô?ð 		?ð 		?‰DˆAˆqÝ! !Ñ$Ô$ˆCØ—M’M # tÑ,Ô,ˆEØ˜Š}ˆ}Ø01¨u°u©}�˜^Ñ,Ø/×3Ò3°U¸BÑ?Ô?�Ø/6¸A¸~ÈaÐ;PÐ9QÑ/QÐ% eÑ,Ð,à"0°!Ð!4�	˜#‘Ø�œ Q¤VÑ,Ô,­Ñ>Ñ>��à×"Ò"¨5Ð"Ñ1Ô1ð 	;ð 	;ˆAØ•U”[ ¤Ñ(Ô(­?Ñ:Ñ:ˆDˆDàˆÝ�9˜mÑ,Ô,ð 	!Ø˜dÑ"ˆNØ×"Ò" >Ñ2Ô2Ð2Ø ˆMåÐIÐIÐIÐI¸[ÐIÑIÔIÑIÔIð 	7ØˆEØ  DÒ(Ð(°×0IÒ0IÐJ[Ñ0\Ô0\Ð(Ø$2°SÑ$8Ð!Ø�àð %Ø! YÒ.Ð.Ø  OÑ3�LØ# aÒ'Ð'¨N¸AÒ,=Ð,=ÝÐw¨~½fÑ/DÐwÐwÐwÐOaÐwÐwÐfuÐwÐwÑxÔxÐxØ" nÑ4�Nà!"�Ø"$�Ø!2ÐØ ð 7Ø $Ñ&�Ø×&Ò& ~Ñ6Ô6Ð6Ø�dÑˆ
‰
à�qÒÐØ˜Ñ'ˆØ˜!ÒÐÝÐk >µ&Ñ#8ÐkÐkÐkÐCUÐkÐkÐZiÐkÐkÑlÔlÐlØ˜.Ñ(ˆð 2<¸Q²°�> :Ñ-Ð-ÀA€MØ�aÒÐØ˜QÒÐÝð  CÐU_Õ`fÑUfð  Cð  Cð  Cð  Cñ  Dô  Dð  Dð  DåÐ~ Nµ6Ñ$9Ð~Ð~Ð~ÀjÕQWÑFWÐ~Ð~Ð~ÐfsÐtwÑfwÐ~Ð~Ð~Ð~ÑÔÐØ˜ÒÐØ˜!ÒÐÝð  Cñ  Dô  Dð  DØˆõ 2Ð2CÐEUÐdpÐqÑqÔqÐàð  _ð  _Ð3D×3RÒ3RÑ3TÔ3Tð  _ñ  _ô  _ñ  _ÐØÐÝ˜LÑ)Ô)Ð,=Ñ=ˆˆà�˜\Ñ*Ô*Ð->Ñ>Ñ>ˆÝ Ñ-Ô-€LÝÐ¨¸<ÐHÑHÔHÐHð GÐFÐ$5×$CÒ$CÑ$EÔ$EÐFÑFÔF€Mà,×2Ò2Ñ4Ô4ð ñ Ñˆ�Vå�f�lÑ+Ô+ð 	­w°v¸|Ñ/LÔ/Lð 	ÕR\Ð]cÔ]nÕp|ÑR}ÔR}ð 	Ý�v˜vÑ&Ô&ð 3¨6¬;Ð+BÝ% f¤kÑ2Ô2Ð2øà!×%Ò% k°4Ñ8Ô8ˆFØ×/Ò/¸%Ð/Ñ@Ô@ð ð ‘��1Ý˜a‘=”=ð ØØ˜T’>�> a¨6°!¬9¢n nÝ! =°¸´Ô#;½\ÑJÔJð 1Ý ¨¨4Ñ0Ô0Ð0øõ *¨!Ñ,Ô,Ð,Ø4×8Ò8¸;ÈÐ:JÈBÑOÔO�GØKRð 7ð 7ÑG˜Ð%5Ð7GØÐ 0Ò0Ð0Ø01´˜[Ô-øà�AØ—’¨%�Ñ0Ô0ð 	ð 	ˆAÝ˜qÑ!Ô!Ð!Ø�ñ	õ
 ÐÑÔÐÝ	„J×ÒÑÔÐÝ„J�L„L€Là>J×>PÒ>PÑ>RÔ>Rð Að AÑ:ˆÑ:�k :¨zÝ�M *Ô-¨zÑ:Ô:ˆÝ�a�Ñ!Ô!ð 	AÝ�M +Ô.°¸QÑ@Ô@Ð@øàå(Ð):Ñ;Ô;Ðà$4ÐÔ!åÐ Ð"3Ñ4Ô4ð 6ÝÐ!Ð#4Ñ5Ô5Ð5åÐ*Ñ+Ô+Ð+å	Ð
4 HÐ
4Ð
4Ð
4Ñ5Ô5Ð5àˆ4r?   r¾   c                 óÆ'  ‡‡y‡z‡{— t          |
¦  «        }
t          | dd ¦  «        }|d k    rài }i }i }|                      ¦   «         D ]š\  }}|| u rŒ
t          |dd ¦  «        }|r/| |_        |||<   |                     ¦   «         D ]\  }}||vr|||<   Œt          |dd ¦  «        }|r;|r|› d�nd}|                     ¦   «         D ]\  }}|}|r|r|› |› �}n|}||vr|||<   ŒŒ›|r|| _        |r|| _        || _        |}nt          d¦  «        ‚|st          | ¦  «         d„ |                      ¦   «         D ¦   «         }d„ |                     ¦   «         D ¦   «         }dŠyd}ˆyfd	„}d
„ }d„ }d„ Š{d„ Šzˆzˆ{ˆfd„}d„ }d„ }d„ } t          |t          ¦  «        s|g}|€d„ |D ¦   «         }	 t          |¦  «        }!n# t          $ r d}!Y nw xY w|!€d}!d}"g }#g }$g }%g }&i }'d}(g })g }*g }+t          |¦  «        D �]©\  },}-t          |(¦  «        }.d}t          j                             |-¦  «        s-d|-› d�}|&                     |-|f¦  «         t'          |¦  «         Œcd}/d}0d }1t)          |-d¬¦  «        \  }2}3|3�Ðd|3v rÌ	 t          |3d         ¦  «        }4t+          j        |4¦  «        st/          d¦  «        ‚	 t          |2¦  «        D ]L}5t1          j        d|5¦  «        }6|6�3|6d         dz   }7|7|2vr$t5          j        |4t4          j        d¬ ¦  «        |2|7<   ŒMn5# t:          t.          t<          f$ r t?          j         d!|-› d"�¦  «         Y nw xY w|	d k    r |	|2¦  «        }2d}8tC          tE          |2¦  «        d ¦  «        }9|9€d#|-› d$�}: |||:¦  «        }d%}/nñd&};|9 #                    d¦  «        }<|9d|<dz   …         }||;v rWi }=|2                     ¦   «         D ]=\  }}|;D ]0}>| $                    |>¦  «        r|tK          |>¦  «        d …         } nŒ1||=|<   Œ>|=}2~=d'}?d(}@i }A|2                     ¦   «         D ]R\  }}tM          |?|@¦  «        D ]7\  }B}C| '                    |B¦  «        r|d tK          |B¦  «         …         |Cz   } nŒ8||A|<   ŒS|A}2~A~~|/�sri }D‰d k    �r=i }=g d)¢}E|2                     ¦   «         D �]\  }F}G|F '                    d*¦  «        s|F '                    d+¦  «        r ||F|G|2|=|D¦  «        }F|F�|G|=|F<   ŒG|F (                    d¦  «        }H|ED ]º\  }I}<}J|F '                    |I¦  «        r‰ )                    |H|<         d ¦  «        x}K€Œ:d *                    |Hd |<…         ¦  «        }L|Jrt5          j(        |G|Kd,         d¬-¦  «        n|GftK          |Kd.         ¦  «        z  }MtM          |Kd.         |M¦  «        D ]\  }N}O|O|=|Ldz   |Nz   |Iz   <   Œ n|G|=|F<   �Œ |=}2~=d%}8t          |2 +                    ¦   «         ¦  «        }Pi }Qi }R|PD ]f}| '                    d¦  «        rO|2 ,                    |¦  «        }St5          j-        |S¦  «        r!t          |S .                    ¦   «         ¦  «        }S|S|R|<   Œgg }Tg }Ui }=d}Vd}Wt          |2 +                    ¦   «         ¦  «        D �]^}|2 ,                    |¦  «        }d x}Xx}Yx}Zx}[x}\x}]x}^}_d/}`| '                    d0¦  «        r|}[|d d1…         }Fd2}`nþ| '                    d3¦  «        r|}Z|d d4…         }Fd/}`nÚ| '                    d5¦  «        r|}]|d d6…         }Fd7}`n¶| '                    d*¦  «        r|}^|d d8…         }Fd9}`n’| '                    d+¦  «        r|}_|d d8…         }Fd9}`nn| /                    d:¦  «        }<|<dk    r|T                     |¦  «         �Œ|d |<…         }F||<dz   d …         }\|\d;v r|}Xn|\d<v r|}Yn|T                     |¦  «         �ŒL| )                    |Fd ¦  «        }a|ad k    r|U                     |¦  «         �Œ|aj0        j1        }bd }c|Xd k    r…|Xj1        d         }c|bd         |j1        d         k    rF|rd%}0n>d|-› d=|F› d>te          | ¦  «        › d?|bd         › d@|j1        d         › dA�}: |||:¦  «        }d%}/ �nc | |X|aj0        j3        |Q¦  «        x}}X�ni|Yd k    r…|Yj1        d         }c|bd         |j1        d         k    rF|rd%}0n>d|-› d=|F› dBte          | ¦  «        › d?|bd         › dC|j1        d         › dA�}: |||:¦  «        }d%}/ �nØ | |Y|aj0        j3        |Q¦  «        x}}Y�nÞ|[d k    rb|[}Y|b|j1        k    r:|rd%}0n2d|-› d=|F› dDte          | ¦  «        › d?|b› dE|j1        › dA�}: |||:¦  «        }d%}/ �np | |Y|aj0        j3        |Q¦  «        x}}Y�nv|Zd k    r¹|Zj1        d         }cti          |adF¦  «        s	 |aj5        d k    rd|-› dGte          | ¦  «        › dH�}:d%}/ �n|aj5        j1        }b|b|j1        k    rC|rd%}0n;d|-› dIte          | ¦  «        › d?|bd         › dJ|j1        d         › dA�	}: |||:¦  «        }d%}/ �n± | |Z|aj0        j3        |Q¦  «        x}}Z�n·|]d k    r‚|]j1        d         }c|bd         |j1        d         k    rC|rd%}0n;d|-› dKte          | ¦  «        › d?|bd         › dL|j1        d         › dM�	}: |||:¦  «        }d%}/ �n) | |]|aj0        j3        |Q¦  «        x}}]�n/|^��tm          |bd         ¦  «        tm          |bd         ¦  «        }e}dtm          |^j1        d         ¦  «        tm          |^j1        d         ¦  «        }g}f|D )                    |Fd ¦  «        }h|h€|fdk    p|gdk    p|d|fz  dk    p|e|gz  dk    }in*|fdk    p#|gdk    p|hd         |hd         z
  |dk    p|e|gz  dk    }i|ir:|rd%}0n2d|-› d=|F› dNte          | ¦  «        › d?|b› dO|j1        › dP�}: |||:¦  «        }d%}/ �n | |^|aj0        j3        |Q¦  «        x}}^�n|_��tm          |bd         ¦  «        tm          |bd         ¦  «        }e}dtm          |_j1        d         ¦  «        tm          |_j1        d         ¦  «        }k}j|D )                    |Fd ¦  «        }h|h€|jdk    p|kdk    p|d|jz  dk    p|e|kz  dk    }in*|jdk    p#|kdk    p|hd         |hd         z
  |dk    p|e|kz  dk    }i|ir9|rd%}0n2d|-› d=|F› dQte          | ¦  «        › d?|b› dR|j1        › dP�}: |||:¦  «        }d%}/ nø | |_|aj0        j3        |Q¦  «        x}}_|sÛ||=|<   d }| )                    |ad ¦  «        }l|l€J ‚ ||l|.¦  «        \  }m}n|`dSv r|`|ndT<   n	dT|nvrd/|ndT<   |`d9k    r
d%}W|h�|h|ndU<   n|`d7k    rd%}V|Xd k    r|X|md<   n-|Yd k    r|Y|md<   n!|]d k    r|]|mdV<   n|^�|^|md<   n|_�|_|md<   n|Z|mdW<   |cd k    rA|\�?d/|\v r;|d tK          |\¦  «         …         dz   }7|R )                    |7d ¦  «        }o|o�|o|cz  |mdX<   �Œ`d x}Xx}Yx}[x}Zx}x}lx}mx}Rx}]x}^x}_}QtK          |T¦  «        dk    r!d|-› dY ||TdZ¦  «        › d$�}: |||:¦  «        }d%}/tK          |U¦  «        dk    r!d|-› d[ ||UdZ¦  «        › d$�}: |||:¦  «        }d%}/|/s|s|Vr|Wrd|-› d\�}: |||:¦  «        }d%}/|/�si|W�rf|                     ¦   «         D �]P\  }a}l|.|lvrŒ ||l|.¦  «        \  }m}n|n )                    dTd/¦  «        }`|`d9k    rŒ7|md         |md         }q}p|p��|q��|n )                    dUd ¦  «        }h|h�|hn6dtm          |pj1        d         ¦  «        tm          |qj1        d         ¦  «        z  f}r ||rtm          |qj1        d         ¦  «        ¦  «        |nd]<   |aj0        j1        }b|h€™tm          |bd         ¦  «        tm          |pj1        d         ¦  «        tm          |qj1        d         ¦  «        z  k    pKtm          |bd         ¦  «        tm          |pj1        d         ¦  «        tm          |qj1        d         ¦  «        z  k    }inttm          |bd         ¦  «        |hd         |hd         z
  k    pKtm          |bd         ¦  «        tm          |pj1        d         ¦  «        tm          |qj1        d         ¦  «        z  k    }i|irn| )                    |ato          |a¦  «        j8        ¦  «        }Fd|-› d=|F› d^|b› dOts          |pj1        ¦  «        › dRts          |qj1        ¦  «        › dP�}: |||:¦  «        }d%}/ n�ŒR|/sá|sßi }s|                     ¦   «         D ]È\  }a}l|l )                    |.d ¦  «        }m|m€Œ| )                    |ad ¦  «        }F|F€Œ7tu          tw          dXtK          |m¦  «        ¦  «        ¦  «        D ]f}t|m|t         }ut5          j-        |u¦  «        sŒ|tty          |u¦  «        f}5|s )                    |5d ¦  «        }v|v€|F|s|5<   ŒN|vd_z   t          |t¦  «        z   |m|t<   ŒgŒÉ|/s$|s"|r t{          |=|-t}          d|
¦  «        ¬`¦  «        }1|/s|0rO|/r&|&                     |-|f¦  «         t'          |¦  «         |8r#|s!|                     ¦   «         D ]\  }w}l|.|lv r|l|.= Œ�ŒO|s |rž|!dk     r@|)                     |=¦  «         |*                     |-¦  «         |+                     |1¦  «         nX ||=¦  «        }x|"|xz   |!k    rD|)                     |=¦  «         |*                     |-¦  «         |+                     |1¦  «         |"|xz  }"~2|-|'|.<   |#                     |.¦  «         |%                     |-¦  «         |$                     |,tK          |¦  «        dz
  k    rdan||,         ¦  «         |(dz  }(|
dk    rJ|r%t'          d|-› dbte          | ¦  «        › d$�¦  «         �Œ†t'          d|-› dcte          | ¦  «        › d$�¦  «         �Œ«|&| _?        |s-|r$tK          |)¦  «        dk    rt�          |)|*|+¦  «         |'| _A        |rt…          | |#|$¦  «         |%S )dNÚ_loras_model_dataÚ_loras_model_shortcutsr¼   r»   zYNo Loras has been declared for this model while creating the corresponding offload objectc                 ó   — i | ]\  }}||“Œ	S r—   r—   ©rX  r¢   r£   s      r=   r¨  z)load_loras_into_model.<locals>.<dictcomp>6	  s   € Ð:Ð:Ð:™S˜Q˜q�A�qÐ:Ð:Ð:r?   c                 ó   — i | ]\  }}||“Œ	S r—   r—   r¢  s      r=   r¨  z)load_loras_into_model.<locals>.<dictcomp>7	  s   € Ð:Ð:Ð:™T˜Q �A�qÐ:Ð:Ð:r?   ú
c                 ó>   •— t          | ¦  «        dk    r|S | ‰z   |z   S r…   ©rÂ   )r1  ÚtextÚCrLfs     €r=   rž   z%load_loras_into_model.<locals>.append;	  s(   ø€ Ýˆv‰;Œ;˜!ÒÐØˆKà˜D‘= 4Ñ'Ð'r?   c                 ód   — t          | ¦  «        } t          | ¦  «        |k     r| S | d|…         dz   S )Nr   z...)rý  rÂ   )r§  Úszs     r=   Útruncz$load_loras_into_model.<locals>.truncA	  s4   € Ý�4‰yŒyˆÝˆt‰9Œ9�rŠ>ˆ>ØˆKà˜˜"˜”: Ñ%Ð%r?   c                 ó¾   — d}|                       ¦   «         D ]B}t          j        |¦  «        r,||                     ¦   «         |                     ¦   «         z  z  }ŒC|dz  S )Nr   r�   )ry  rN   rT   rA  rÞ  )r5  Útotal_bytesr£   s      r=   Ú_state_dict_size_mbz2load_loras_into_model.<locals>._state_dict_size_mbH	  sa   € ØˆØ×"Ò"Ñ$Ô$ð 	<ð 	<ˆAÝŒ˜qÑ!Ô!ð <Ø˜qŸwšw™yœy¨1¯>ª>Ñ+;Ô+;Ñ;Ñ;�øØ˜kÑ*Ð*r?   c                 ój  — |�|€d S t          |j        d         ¦  «        }|dk    rd S t          |j        d         ¦  «        |z  }t          | ¦  «        |k    rd S g }| D ]&}||z  dk    r d S |                     ||z  ¦  «         Œ't          |¦  «        t          |j        d         ¦  «        k    rd S |S r…   )rõ  r÷   rà  rž   )Úsplit_sizesÚw1Úw2Úrows2Úout_rowsÚreducedrª  s          r=   Ú_split_lokr_output_sizesz7load_loras_into_model.<locals>._split_lokr_output_sizesO	  sË   € Øˆ:˜˜Ø�4Ý�B”H˜Q”KÑ Ô ˆØ�AŠ:ˆ:Ø�4Ý�r”x ”{Ñ#Ô# eÑ+ˆÝˆ{ÑÔ˜xÒ'Ð'Ø�4ØˆØð 	(ð 	(ˆBØ�E‰z˜QŠˆØ�t�tØ�NŠN˜2 ™;Ñ'Ô'Ð'Ð'Ýˆw‰<Œ<�3˜rœx¨œ{Ñ+Ô+Ò+Ð+Ø�4Øˆr?   c                 ó:  — |�|€dS t          |j        d         ¦  «        t          |j        d         ¦  «        z  }t          |¦  «        |k    rdS d}t          ||¦  «        D ]7\  }	}
| |	z   }|dz   |vr|||dz   <   |dz   |vr|||dz   <   |||
z   f||<   ||
z  }Œ8dS )NFr   ú.lokr_w1ú.lokr_w2T)rõ  r÷   rà  rD  )Úparent_prefixÚmapped_modulesr°  r±  r²  Únew_state_dictÚlokr_split_chunksr´  rŒ   Úsub_nameÚsub_sizeÚtarget_bases               r=   Ú_split_lokr_chunked_if_neededz<load_loras_into_model.<locals>._split_lokr_chunked_if_neededa	  sß   € Øˆ:˜˜Ø�5Ý�r”x ”{Ñ#Ô#¥c¨"¬(°1¬+Ñ&6Ô&6Ñ6ˆÝˆ{ÑÔ˜xÒ'Ð'Ø�5ØˆÝ"% n°kÑ"BÔ"Bð 	ð 	ÑˆH�hØ'¨(Ñ2ˆKØ˜ZÑ'¨~Ð=Ð=Ø;=�˜{¨ZÑ7Ñ8Ø˜ZÑ'¨~Ð=Ð=Ø;=�˜{¨ZÑ7Ñ8Ø.3°U¸XÑ5EÐ-FÐ˜kÑ*Ø�XÑˆEˆEØˆtr?   c           	      óâ  •— |                       d¦  «        }t          |¦  «        dk     r| S ‰                     |d         d ¦  «        }|€| S |                     dd ¦  «        }|                     dd ¦  «        }|r|s| S d                     |d d…         ¦  «        }	|                      d¦  «        }
|
rdnd}|                     |	|z   d ¦  «        }|
r|n|}|
r|n|} ‰|||¦  «        }|	d t          |d         ¦  «         …         }|€ ‰|||||||¦  «        rd S | S |
rt          j         ||d	¬
¦  «        }d}n|gt          |¦  «        z  }d}t          ||¦  «        D ]\  }}||||z   |z   <   Œd S )Nr¼   rÙ   éþÿÿÿr»  r°  r¾   r¸  r¹  r   ©Údim)rÁ   rÂ   ry   rå   r.  rN   rD  )r•  Úmodule_datar5  r¼  r½  Ú
name_partsÚ	split_mapr»  r°  rD  Úis_w1Úsibling_suffixÚsibling_tensorr±  r²  Úreduced_splitrº  ÚchunksÚsuffixr¾  Úsub_datarÁ  r¶  Úsplit_linear_modules_maps                        €€€r=   Ú_split_lokr_keyz.load_loras_into_model.<locals>._split_lokr_keyr	  sé  ø€ Ø ×&Ò& sÑ+Ô+ˆ
Ýˆz‰?Œ?˜QÒÐØÐØ,×0Ò0°¸B´ÀÑFÔFˆ	ØÐØÐØ"ŸšÐ'7¸Ñ>Ô>ˆØ—m’m M°4Ñ8Ô8ˆØð 	 [ð 	ØÐà ŸXšX j°°"°¤oÑ6Ô6ÐØ×$Ò$ ZÑ0Ô0ˆØ',Ð<˜˜°*ˆØ#ŸšÐ(:¸^Ñ(KÈTÑRÔRˆØ!Ð5ˆ[ˆ[ ~ˆØ$Ð5ˆ^ˆ^¨+ˆØ0Ð0°¸bÀ"ÑEÔEˆØ*Ð+@­S°¸B´Ñ-@Ô-@Ð,@Ð+@ÔAˆØÐ Ø,Ð,¨]¸NÈKÐY[Ð]_Ðaoð  rCñ  Dô  Dð Ø�tØÐàð 	 Ý”[ ¨mÀÐCÑCÔCˆFØˆFˆFà!�]¥S¨Ñ%8Ô%8Ñ8ˆFØˆFÝ"% n°fÑ"=Ô"=ð 	Ið 	IÑˆH�hØ@HˆN˜=¨8Ñ3°fÑ<Ñ=Ð=Øˆtr?   c                 óÀ  — t          | d         ¦  «        t          | d         ¦  «        }}||k    s|dk    rg S t          ||¦  «        \  }}t          ||¦  «        \  }}||k    r
||dz   ||fgS g }|}	|dk    r!|                     ||dz   ||f¦  «         |	dz  }	|	|dz
  k    r|                     |	|d|f¦  «         |dk    r|                     ||dz   d|f¦  «         |S rö   )rõ  Údivmodrž   )
ÚchunkÚm2rŒ   rs  Ús_rowÚs_colÚe_rowÚe_colÚspecsÚmid_start_rows
             r=   Ú_build_lokr_chunk_specsz6load_loras_into_model.<locals>._build_lokr_chunk_specs•	  s  € Ý˜˜qœ‘]”]¥C¨¨a¬¡M¤MˆsˆØ�%Š<ˆ<˜2 š7˜7ØˆIÝ˜e RÑ(Ô(‰ˆˆuÝ˜c 2‘”‰ˆˆuØ�EŠ>ˆ>Ø˜E A™I u¨eÐ4Ð5Ð5àˆØˆØ�1Š9ˆ9Ø�LŠL˜% ¨¡¨E°2Ð6Ñ7Ô7Ð7Ø˜QÑˆMØ˜E A™IÒ%Ð%Ø�LŠL˜-¨°°2Ð6Ñ7Ô7Ð7Ø�1Š9ˆ9Ø�LŠL˜% ¨¡¨A¨uÐ5Ñ6Ô6Ð6Øˆr?   c                 ó`   — |                       |d ¦  «        }|€d d d d di g}|| |<   ||d         fS )Nç      ð?r¹   )ry   )Úloras_module_dataÚadapter_namerœ  s      r=   Ú_ensure_adapter_metaz3load_loras_into_model.<locals>._ensure_adapter_meta©	  sG   € Ø ×$Ò$ \°4Ñ8Ô8ˆØˆ<Ø˜$  d¨B°Ð3ˆDØ.2Ð˜lÑ+Ø�T˜!”Wˆ}Ðr?   c                 óª   — | �| j         |k    r| S t          | ¦  «        |f}|                     |d ¦  «        }|€|                      |¦  «        }|||<   |S rd   )r,   rä  ry   rU   )r‰  r,   Ú
cast_cacher£  Úcacheds        r=   Ú_to_dtype_cachedz/load_loras_into_model.<locals>._to_dtype_cached°	  sa   € Øˆ>˜Vœ\¨UÒ2Ð2ØˆMÝ˜vÑ&Ô&¨Ð.ˆØ—’  TÑ*Ô*ˆØˆ>Ø—Y’Y˜uÑ%Ô%ˆFØ$ˆJ�s‰OØˆr?   c                 ó   — g | ]}d ‘ŒS ©rÞ  r—   ©rX  r!  s     r=   rZ  z)load_loras_into_model.<locals>.<listcomp>¾	  s   € Ð,Ð,Ð,˜Q�bÐ,Ð,Ð,r?   r¾   g        r   zLora 'z' was not foundF©rl  ÚalphazNon-finite alphaz7(.*)\.lora[._](?:[AB]|down|up)(?:(?:\.[^.]+)?\.weight)?r   ú.alpharj  r[  z'Ignoring invalid LoRA header alpha in 'z'.zEmpty Lora 'r£  T)zdiffusion_model.ztransformer.)z.default.weightz.lora.A.weightz.lora.B.weightz.lora.down.weightz.lora.up.weight)ú.weightú.lora_A.weightú.lora_B.weightú.lora_down.weightú.lora_up.weight))rë  rÃ  F)rî  éýÿÿÿT)rí  rñ  F)rð  rñ  T)rï  rñ  F)ú.dora_scalerÃ  Fr¸  r¹  r°  rÄ  r»  rµ  z.difféûÿÿÿÚdiffz.diff_biùÿÿÿrò  iõÿÿÿÚdoraiøÿÿÿr¶  rú  )zlora_A.weightzlora_down.weight)zlora_B.weightzlora_up.weightrÛ   z2': Lora A dimension is not compatible with model 'z' (model = z, lora A = zJ). It is likely this Lora has been made for another version of this model.z2': Lora B dimension is not compatible with model 'z, lora B = z,': Lora shape is not compatible with model 'z	, lora = r2   z9': Lora Basis is defined while it doesnt exist in model 'zJ'. It is likely this Lora has been made for another version of this model.z6': Lora Basis dimension is not compatible with model 'z, lora Basis = z6': Dora Scale dimension is not compatible with model 'z, dora scale = zJ). It is likely this Dora has been made for another version of this model.z3': LoKr W1 dimension is not compatible with model 'z, lokr_w1 = z).z3': LoKr W2 dimension is not compatible with model 'z, lokr_w2 = )rõ  r¶  rô  r¹  Ú
lokr_chunkr  rÙ   rk  z' contains non Lora keys 'éÈ   z[' contains unexpected module keys, it is likely that this Lora is for a different model : 'z5': LoKr cannot be mixed with DoRA on the same module.Ú
lokr_specsz=': LoKr factors are not compatible with model shape (model = rÙ  r}  rÞ  z' was found for model 'z' was loaded in model ')Cr¬   rS   r¿   Ú_lora_ownerr›   rŸ  r   Ú	_sublorasrã   Úunload_loras_from_modelr™   r�   r°   r¹  rý  r±   rß   rà   rž   rþ  rt  r¤  ÚisfiniterÑ  ÚreÚ	fullmatchrN   r‰  Úfloat64rŸ   ÚOverflowErrorr   r‘  rñ   rò   ÚfindrÀ   rÂ   rD  r.  rÁ   ry   rå   rn  r•  rT   rx  Úrfindr:   r÷   r§   r,   rH   r2   rõ  r¹  rZ   rÐ  r*  r.  rä  rÕ  r  Ú_loras_errorsrö  Ú_loras_adaptersÚactivate_loras)|rÆ   Ú	lora_pathÚ
lora_multiÚactivate_all_lorasÚ
check_onlyÚignore_model_variationsÚ
pinnedLoraÚmaxReservedLorasrÐ  Úpreprocess_sdrª   Úloras_model_dataÚmerged_loras_model_dataÚmerged_loras_shortcutsÚ	sub_lorasrÎ   rÏ   Úsub_model_datar¢   r£   Úsub_shortcutsÚprefixÚ
merged_keyÚmodules_dictrC  Ú	error_msgrž   r«  r®  rÑ  rÜ  rá  rå  Úmax_reserved_loras_mbÚpinned_total_mbÚ	loras_nosÚloras_multiÚnew_lora_pathÚerrorsÚadaptersÚ
adapter_noÚpinned_sd_listÚpinned_names_listÚpinned_tied_weights_listrå  rß   rà  Úfailr‡  rÍ  r5  rp  Úheader_alphar£  rÒ  Ú	alpha_keyÚclean_upÚ	first_keyÚmsgÚprefixesÚposr¼  rf  Úsrc_suffixesÚtgt_suffixesrä  rC  Útgtr½  Úsuffixesr•  rÆ  rÇ  rÎ  Ú	any_splitr¾  rD  rÏ  r¾  Úsubdatarn  Údtype_cast_cacheÚlora_alphasÚalpha_valueÚinvalid_keysÚunexpected_keysÚ
dora_foundÚ
lokr_foundÚlora_AÚlora_BÚdiff_brô  Úlora_keyÚ
dora_scaleÚlokr_w1Úlokr_w2Úadapter_typer<   Úmodule_shapeÚrankÚout_dimÚin_dimÚm1Ún1rö  ÚinvalidrÕ  Ún2rß  Úloras_adapter_datar/  rê  r±  r²  Úeffective_chunkÚalias_ownersrU  r‰  Ú
owner_namer!  Úlora_size_mbr¨  rÁ  r¶  s|           `                                                                                                                @@@r=   Úload_loras_into_modelrM  	  sc  øøøø€ Ý)¨,Ñ7Ô7€Lå˜uÐ&9¸4Ñ@Ô@ÐØ˜4ÒÐØ"$ÐØ!#ÐØˆ	Ø).×)<Ò)<Ñ)>Ô)>ð 	?ð 	?Ñ%ˆN˜IØ˜EÐ!Ð!ØÝ$ YÐ0CÀTÑJÔJˆNØð 7Ø(-�	Ô%Ø,5�	˜.Ñ)Ø*×0Ò0Ñ2Ô2ð 7ð 7‘D�A�qØÐ 7Ð7Ð7Ø56Ð/°Ñ2øÝ# IÐ/GÈÑNÔNˆMØð 
?Ø1?ÐG˜NÐ-Ð-Ð-Ð-ÀR�Ø)×/Ò/Ñ1Ô1ð ?ð ?‘D�A�qØ!"�JØð 8Øð 8Ø,2¨°A¨¨˜J˜Jà)7˜JØ!Ð)?Ð?Ð?Ø=>Ð.¨zÑ:øøØ"ð 	zØ&=ˆEÔ#Ø%ð FØ/E�Ô,Ø'ˆEŒOØ6ÐÐåÐxÑyÔyÐyàð 'Ý Ñ&Ô&Ð&à:Ð: E×$7Ò$7Ñ$9Ô$9Ð:Ñ:Ô:€LØ:Ð: \×%7Ò%7Ñ%9Ô%9Ð:Ñ:Ô:€Là€DØ€Ið(ð (ð (ð (ð (ð&ð &ð &ð+ð +ð +ðð ð ð$ð ð ð"!ð !ð !ð !ð !ð !ð !ðFð ð ð(ð ð ðð ð õ �i¥Ñ&Ô&ð  Ø�Kˆ	àÐØ,Ð, )Ð,Ñ,Ô,ˆ
ð#Ý %Ð&6Ñ 7Ô 7ÐÐøÝð #ð #ð #Ø "ÐÐÐð#øøøàÐ$Ø "ÐØ€OØ€IØ€KØ€MØ€FØ€HØ€JØ€NØÐØ!ÐÝ˜YÑ'Ô'ð t\ñ t\‰ˆˆ4Ý˜:‘”ˆØˆ	ÝŒw�~Š~˜dÑ#Ô#ð 	Ø6 Ð6Ð6Ð6ˆIØ�MŠM˜4 Ð+Ñ,Ô,Ð,Ý�)ÑÔÐØØˆØˆØˆÝ5°dÈUÐSÑSÔSÑˆ
�HØÐ G¨xÐ$7Ð$7ðrÝ$ X¨gÔ%6Ñ7Ô7�Ý”} \Ñ2Ô2ð 9Ý$Ð%7Ñ8Ô8Ð8ð9õ   
Ñ+Ô+ð rð r�CÝœLÐ)cÐehÑiÔi�EØÐ(Ø$)¨!¤H¨xÑ$7˜	Ø$¨JÐ6Ð6Ý49´LÀÕUZÔUbÐkpÐ4qÑ4qÔ4q˜J yÑ1øðrøõ �z­=Ð9ð Oð Oð OÝ”
ÐMÀTÐMÐMÐMÑNÔNÐNÐNÐNðOøøøð ˜DÒ Ð Ø&˜ zÑ2Ô2ˆJàˆÝ�˜jÑ)Ô)¨4Ñ0Ô0ˆ	ØÐØ( Ð(Ð(Ð(ˆCØ˜˜y¨#Ñ.Ô.ˆIØˆDˆDà;ˆHØ—.’. Ñ%Ô%ˆCØ˜q  Q¡˜wÔ'ˆFØ˜Ð!Ð!Ø!#�Ø&×,Ò,Ñ.Ô.ð *ð *‘D�A�qØ%-ð "ð "˜	ØŸ<š<¨	Ñ2Ô2ð "Ø !¥# i¡.¤.Ð"2Ð"2Ô 3˜AØ!˜Eð"ð )*�N 1Ñ%Ð%Ø+�
Ø"àzˆLØrˆLØˆFØ!×'Ò'Ñ)Ô)ð ð ‘��!Ý # L°,Ñ ?Ô ?ð ð ‘H�C˜Ø—z’z #‘”ð Ø˜j¥ C¡¤˜y˜jœM¨CÑ/˜Ø˜ðð ��q‘	�	ØˆJØ�q˜àñ N	uØ "ÐØ'¨4Ò/Ñ/Ø!#�ð Mð  Mð  M�Ø0:×0@Ò0@Ñ0BÔ0Bð Fñ FÑ,�K Ø"×+Ò+¨JÑ7Ô7ð F¸;×;OÒ;OÐPZÑ;[Ô;[ð FØ&5 o°kÀ;ÐPZÐ\jÐl}Ñ&~Ô&~˜Ø&Ð2ÐR]°NÀ;Ñ4Oøà%0×%6Ò%6°sÑ%;Ô%;˜
Ø6>ð 	Fð 	FÑ2˜F C¨Ø#.×#7Ò#7¸Ñ#?Ô#?ð )ÐKc×KgÒKgÐhrÐsvÔhwÐy}ÑK~ÔK~ÐD~ÀCð  DHØ (Ø14·²¸*ÀTÀcÀTÔ:JÑ1KÔ1KÐ.Ø^gð  (Y¥u¤{°;ÀÀMÔ@RÐXYÐ'ZÑ'ZÔ'ZÐ'ZÐnyÐm{õ  Bð  CFð  GWô  CXñ  Yô  Yñ  nY˜HÝ58¸Ð=MÔ9NÐPXÑ5YÔ5Yð gð gÑ 1 ¨'Ø_f Ð/AÀCÑ/GÈ(Ñ/RÐU[Ñ/[Ñ \Ð \Ø!˜Eà:E˜N¨;Ñ7ùØ+�
Ø"ØˆHå˜
ŸšÑ)Ô)Ñ*Ô*ˆDØ!ÐàˆKØð 1ð 1�Ø—:’:˜hÑ'Ô'ð 1Ø",§.¢.°Ñ"3Ô"3�KÝ” {Ñ3Ô3ð @Ý&+¨K×,<Ò,<Ñ,>Ô,>Ñ&?Ô&?˜Ø%0�K ‘NøàˆLØ ˆOØˆNØˆJØˆJÝ˜*Ÿ/š/Ñ+Ô+Ñ,Ô,ð lSñ lS�Ø—N’N 1Ñ%Ô%�Ø^bÐb�Ðb˜Ðb &Ðb¨4Ðb°(Ðb¸ZÐbÈ'ÐT[Ø%�Ø—:’:˜gÑ&Ô&ð !!Ø�DØ"# T r T¤(�KØ#)�L�LØ—Z’Z 	Ñ*Ô*ð !Ø�FØ"# T r T¤(�KØ#)�L�LØ—Z’Z Ñ.Ô.ð !Ø!"�JØ"# U s U¤)�KØ#)�L�LØ—Z’Z 
Ñ+Ô+ð !Ø�GØ"# T r T¤(�KØ#)�L�LØ—Z’Z 
Ñ+Ô+ð !Ø�GØ"# T r T¤(�KØ#)�L�LàŸ'š' (Ñ+Ô+�CØ˜Q’w�wØ$×+Ò+¨AÑ.Ô.Ð.Ù Ø"# U s U¤)�KØ  # a¡% & &œz�HØÐ#HÐHÐHØ!"˜˜Ø!Ð%HÐHÐHØ!"˜˜à$×+Ò+¨AÑ.Ô.Ð.Ù à&×*Ò*¨;¸Ñ=Ô=�Ø˜T’>�>Ø#×*Ò*¨1Ñ-Ô-Ð-ÙØ%œ}Ô2�Ø�Ø˜T’>�>Ø!œ<¨œ?�DØ# A”¨!¬'°!¬*Ò4Ð4Ø2ð (Ø#'˜D˜Dð #H¨4ð  #Hð  #H°+ð  #Hð  #Hõ  rBð  CHñ  rIô  rIð  #Hð  #Hð  Vbð  cdô  Veð  #Hð  #Hð  rsô  ryð  z{ô  r|ð  #Hð  #Hð  #H˜CØ(.¨¨y¸#Ñ(>Ô(>˜IØ#'˜DØ™Ø!1Ð!1°&¸&¼-Ô:MÐO_Ñ!`Ô!`Ð`�A˜™Ø˜t’^�^Ø!œ<¨œ?�DØ# A”¨!¬'°!¬*Ò4Ð4Ø2ð (Ø#'˜D˜Dð #H¨4ð  #Hð  #H°+ð  #Hð  #Hõ  rBð  CHñ  rIô  rIð  #Hð  #Hð  Vbð  cdô  Veð  #Hð  #Hð  rsô  ryð  z{ô  r|ð  #Hð  #Hð  #H˜CØ(.¨¨y¸#Ñ(>Ô(>˜IØ#'˜DØ™Ø!1Ð!1°&¸&¼-Ô:MÐO_Ñ!`Ô!`Ð`�A˜™Ø˜T’\�\Ø!�FØ# q¤wÒ.Ð.Ø2ð (Ø#'˜D˜Dð #z¨4ð  #zð  #z°+ð  #zð  #zÕk{ð  }Bñ  lCô  lCð  #zð  #zð  P\ð  #zð  #zð  ghô  gnð  #zð  #zð  #z˜CØ(.¨¨y¸#Ñ(>Ô(>˜IØ#'˜DØ™Ø!1Ð!1°&¸&¼-Ô:MÐO_Ñ!`Ô!`Ð`�A˜™Ø˜t’^�^Ø!œ<¨œ?�DÝ" 6¨6Ñ2Ô2ð ØØ”{ dÒ*Ð*ð J tð  Jð  JÕfvÐw|Ñf}Ôf}ð  Jð  Jð  J˜Ø#˜Ø™à'-¤{Ô'8˜Ø'¨1¬7Ò2Ð2Ø6ð ,Ø'+  ð 'F¨tð  'Fð  'FÕk{ð  }Bñ  lCô  lCð  'Fð  'Fð  P\ð  ]^ô  P_ð  'Fð  'Fð  pqô  pwð  xyô  pzð  'Fð  'Fð  'F Ø,2¨F°9¸cÑ,BÔ,B 	Ø'+ Ø!™EØ!1Ð!1°&¸&¼-Ô:MÐO_Ñ!`Ô!`Ð`�A˜™Ø 4Ò'Ð'Ø%Ô+¨AÔ.�DØ# A”¨!¬'°!¬*Ò4Ð4Ø2ð (Ø#'˜D˜Dð #B¨4ð  #Bð  #BÕgwÐx}Ñg~Ôg~ð  #Bð  #Bð  LXð  YZô  L[ð  #Bð  #Bð  lmô  lsð  tuô  lvð  #Bð  #Bð  #B˜CØ(.¨¨y¸#Ñ(>Ô(>˜IØ#'˜DØ™Ø%5Ð%5°jÀ&Ä-ÔBUÐWgÑ%hÔ%hÐh�A˜
™
ØÑ(Ý&)¨,°q¬/Ñ&:Ô&:½CÀÈQÄÑ<PÔ<P˜V�GÝ  ¤¨qÔ!1Ñ2Ô2µC¸¼ÀaÔ8HÑ4IÔ4I˜�BØ!2×!6Ò!6°{ÀDÑ!IÔ!I�JØ!Ð)Ø"$¨¢'Ð"]¨R°1ªWÐ"]¸À"¹ÈÒ8IÐ"]ÈVÐVXÉ[Ð\]ÒM]˜˜à"$¨¢'Ð"v¨R°1ªWÐ"v¸ÀA¼ÈÐTUÌÑ9VÐ[bÒ8bÐ"vÐflÐoqÑfqÐuvÒfv˜Øð Ø2ð (Ø#'˜D˜Dð #|¨4ð  #|ð  #|°+ð  #|ð  #|õ  sCð  DIñ  sJô  sJð  #|ð  #|ð  Wcð  #|ð  #|ð  qrô  qxð  #|ð  #|ð  #|˜CØ(.¨¨y¸#Ñ(>Ô(>˜IØ#'˜DØ™Ø"2Ð"2°7¸F¼MÔ<OÐQaÑ"bÔ"bÐb�A˜™ØÑ(Ý&)¨,°q¬/Ñ&:Ô&:½CÀÈQÄÑ<PÔ<P˜V�GÝ  ¤¨qÔ!1Ñ2Ô2µC¸¼ÀaÔ8HÑ4IÔ4I˜�BØ!2×!6Ò!6°{ÀDÑ!IÔ!I�JØ!Ð)Ø"$¨¢'Ð"]¨R°1ªWÐ"]¸À"¹ÈÒ8IÐ"]ÈVÐVXÉ[Ð\]ÒM]˜˜à"$¨¢'Ð"v¨R°1ªWÐ"v¸ÀA¼ÈÐTUÌÑ9VÐ[bÒ8bÐ"vÐflÐoqÑfqÐuvÒfv˜Øð Ø2ð (Ø#'˜D˜Dð #|¨4ð  #|ð  #|°+ð  #|ð  #|õ  sCð  DIñ  sJô  sJð  #|ð  #|ð  Wcð  #|ð  #|ð  qrô  qxð  #|ð  #|ð  #|˜CØ(.¨¨y¸#Ñ(>Ô(>˜IØ#'˜DØ˜Ø"2Ð"2°7¸F¼MÔ<OÐQaÑ"bÔ"bÐb�A˜Ø!ð SØ()�N 1Ñ%Ø�AØ(8×(<Ò(<¸VÀTÑ(JÔ(JÐ%Ø,Ð8Ð8Ð8Ø/CÐ/CÐDUÐWcÑ/dÔ/dÑ,Ð&¨Ø#Ð'?Ð?Ð?Ø'3˜˜V™˜Ø tÐ+Ð+Ø'-˜˜V™Ø# vÒ-Ð-Ø%)˜
Ø%Ð1È
°4¸Ñ3EøØ%¨Ò/Ð/Ø%)˜
Ø ’~�~Ø06Ð*¨1Ñ-Ð-Ø 4š˜Ø06Ð*¨1Ñ-Ð-Ø# tÒ+Ð+Ø0:Ð*¨1Ñ-Ð-Ø Ð,Ø07Ð*¨1Ñ-Ð-Ø Ð,Ø07Ð*¨1Ñ-Ð-à06Ð*¨1Ñ-Ø˜t’|�|¨Ð(<ÀÈ8ÐASÐASØ$% o­¨H©¬ ~ oÔ$6¸Ñ$@˜	Ø +§¢°	¸4Ñ @Ô @˜Ø Ð,ÀeÈdÁlÐ.@ÀÑ.Cùð ^bð  bˆFð  b�Vð  b˜dð  b Vð  b¨að  bÐ2Cð  bÐFXð  bÐ[fð  bÐisð  bÐv}ð  bð  AHð  K[å�<Ñ Ô  AÒ%Ð%ØY˜tÐYÐY¸u¸uÀ\ÐRUÑ?VÔ?VÐYÐYÐY�Ø"˜F 9¨cÑ2Ô2�	Ø�Ý�?Ñ#Ô# qÒ(Ð(ð ^˜tð  ^ð  ^ð  AFð  AFð  GVð  WZñ  A[ô  A[ð  ^ð  ^ð  ^�Ø"˜F 9¨cÑ2Ô2�	Ø�Øð  :ð °:ð À*ð ØZ˜tÐZÐZÐZ�Ø"˜F 9¨cÑ2Ô2�	Ø�Øñ "˜jñ "Ø1A×1GÒ1GÑ1IÔ1Ið "ñ "Ñ-�FÐ-Ø#Ð+<Ð<Ð<¸hØ/CÐ/CÐDUÐWcÑ/dÔ/dÑ,Ð&¨Ø#'§8¢8¨F°FÑ#;Ô#;�LØ# vÒ-Ð-¨xØ/°Ô2Ð4FÀqÔ4I˜�BØ‘~¨"©.Ø%)§X¢X¨l¸DÑ%AÔ%A˜
Ø8BÐ8N¨*¨*ÐUVÕX[Ð\^Ô\dÐefÔ\gÑXhÔXhÕknÐoqÔowÐxyÔozÑk{Ôk{ÑX{ÐT|˜Ø-DÐ-DÀ_ÕVYÐZ\ÔZbÐcdÔZeÑVfÔVfÑ-gÔ-g˜˜\Ñ*Ø'-¤}Ô':˜Ø%Ð-Ý&)¨,°q¬/Ñ&:Ô&:½cÀ"Ä(È1Ä+Ñ>NÔ>NÕQTÐUWÔU]Ð^_ÔU`ÑQaÔQaÑ>aÒ&að  'aÕehÐiuÐvwÔixÑeyÔeyõ  ~Að  BDô  BJð  KLô  BMñ  ~Nô  ~Nõ  QTð  UWô  U]ð  ^_ô  U`ñ  Qaô  Qañ  ~aò  fa˜G˜Gå&)¨,°q¬/Ñ&:Ô&:¸zÈ!¼}ÈzÐZ[Ì}Ñ?\Ò&]ð  ']ÕadÐeqÐrsÔetÑauÔauÕy|Ð}ô  ~Fð  GHô  ~Iñ  zJô  zJõ  MPð  QSô  QYð  Z[ô  Q\ñ  M]ô  M]ñ  z]ò  b]˜GØ"ð "Ø*6×*:Ò*:¸6Å4ÈÁ<Ä<ÔCXÑ*YÔ*Y˜Kð #G¨4ð  #Gð  #G°+ð  #Gð  #Gð  }Ið  #Gð  #Gõ  W\ð  ]_ô  ]eñ  Wfô  Wfð  #Gð  #Gõ  tyð  z|ô  zBñ  tCô  tCð  #Gð  #Gð  #G˜CØ(.¨¨y¸#Ñ(>Ô(>˜IØ#'˜DØ!˜EùØð T :ð TØ!�Ø1A×1GÒ1GÑ1IÔ1Ið Tð TÑ-�FÐ-Ø):×)>Ò)>¸|ÈTÑ)RÔ)RÐ&Ø)Ð1Ø Ø".×"2Ò"2°6¸4Ñ"@Ô"@�KØ"Ð*Ø Ý %¥c¨!­SÐ1CÑ-DÔ-DÑ&EÔ&EÑ FÔ Fð 	Tð 	T˜Ø!3°DÔ!9˜Ý$œ¨vÑ6Ô6ð %Ø$Ø#¥_°VÑ%<Ô%<Ð=˜Ø%1×%5Ò%5°c¸4Ñ%@Ô%@˜
Ø%Ð-Ø0;˜L¨Ñ-Ð-à7AÀCÑ7GÍ#ÈdÉ)Ì)Ñ7SÐ.¨tÑ4Ð4ð	Tð ð u :ð u°:ð uÝ;¸NÈDÕ_bÐcdÐfrÑ_sÔ_sÐtÑtÔt�Øð %	\�4ð %	\Øð !Ø—’˜t YÐ/Ñ0Ô0Ð0Ý�iÑ Ô Ð Øð < 
ð <Ø,<×,BÒ,BÑ,DÔ,Dð <ð <Ñ(�AÐ(Ø#Ð'8Ð8Ð8Ø-¨lÐ;øùð ð <àð <Ø,¨qÒ0Ð0Ø&×-Ò-¨nÑ=Ô=Ð=Ø)×0Ò0°Ñ6Ô6Ð6Ø0×7Ò7¸ÑEÔEÐEÐEà':Ð':¸>Ñ'JÔ'J˜Ø*¨\Ñ9Ð=RÒRÐRØ*×1Ò1°.ÑAÔAÐAØ-×4Ò4°TÑ:Ô:Ð:Ø4×;Ò;¸LÑIÔIÐIØ+¨|Ñ;˜Oàð &*ˆH�\Ñ"Ø×Ò˜\Ñ*Ô*Ð*Ø× Ò  Ñ&Ô&Ð&Ø×Ò a­3¨z©?¬?¸AÑ+=Ò&>Ð&>˜s˜sÀJÈqÄMÑRÔRÐRØ˜!‰OˆJØ˜aÒÐØð \ÝÐZ 4ÐZÐZÕ@PÐQVÑ@WÔ@WÐZÐZÐZÑ[Ô[Ð[Ñ[åÐZ 4ÐZÐZÕ@PÐQVÑ@WÔ@WÐZÐZÐZÑ[Ô[Ð[ùà €EÔØð )Øð 	[�#˜nÑ-Ô-°Ò1Ð1Ý˜nÐ.?ÐAYÑZÔZÐZØ (ˆÔØð 6Ý�u˜i¨Ñ5Ô5Ð5ØÐs$   Æ$F4 Æ4GÇGÉ18LÌ/L9Ì8L9c                 óæ   — |                       ¦   «         D ][\  }}t          |t          ¦  «        r<||vst          ||         t          ¦  «        s|||<   Œ?t          |||         ¦  «         ŒV|||<   Œ\d S rd   )r›   r™   rš   Úmerge_dicts)ÚAÚBr£  rz  s       r=   rO  rO  O  s�   € Ø—g’g‘i”ið ð ‰
ˆˆUÝ�e�TÑ"Ô"ð 	Ø˜!ˆ|ˆ|¥:¨a°¬fµdÑ#;Ô#;ˆ|Ø��#‘�å˜E 1 S¤6Ñ*Ô*Ð*Ð*àˆAˆc‰FˆFðð r?   c                 ó‚   — t          | j        |j        ¦  «         | j        |_        | j        |_        | j        |_        d S rd   )rO  r   Ú_loras_active_adaptersr  Ú_loras_scaling)rÆ   Úmodel2s     r=   Úsync_models_lorasrV  Z  s?   € Ý�Ô,¨vÔ/LÑMÔMÐMØ$)Ô$@€FÔ!Ø"Ô2€FÔØ!Ô0€FÔÐÐr?   c                 ó‚  — | €d S t          | d¦  «        sd S | j                             ¦   «         D ]\  }}|                     ¦   «          Œ| j                             ¦   «         D ]\  }}|                     ¦   «          Œg | _        t          ¦   «         | _        t          ¦   «         | _        d | _	        d | _
        d | _        d S )NrŸ  )rH   rŸ  r›   r   r   rS  rš   rT  Ú_loras_tied_weightsr  r  )rÆ   r!  r£   s      r=   rû  rû  `  sÀ   € Ø€}�f�fÝ�5Ð-Ñ.Ô.Ð6°°ØÔ'×-Ò-Ñ/Ô/ð ð ‰ˆˆ1Ø	�Š‰	Œ	ˆ	ˆ	ØÔ,×2Ò2Ñ4Ô4ð ð ‰ˆˆ1Ø	�Š‰	Œ	ˆ	ˆ	à#%€EÔ Ý™6œ6€EÔÝ $¡¤€EÔØ€EÔØ €EÔØ€EÔÐÐr?   c                 ó  — t          | dd ¦  «        }|�|| ur|} t          | dd ¦  «        }|�|| u°|| _        t          | dd ¦  «        }|r<t          |t          ¦  «        r|                     ¦   «         n|}|D ]}|| u rŒ||_        Œd S d S )Nrù  rú  )rS   Ú_lora_step_nor™   rš   ry  )rÆ   Ústep_norr  r  Ú
submodulesrÏ   s         r=   Úset_step_no_for_lorar]  p  sÏ   € Ý�U˜M¨4Ñ0Ô0€FØ
Ð
 ¨uÐ!4Ð!4ØˆÝ˜ ¨tÑ4Ô4ˆð Ð
 ¨uÐ!4Ð!4ð "€EÔÝ˜˜{¨DÑ1Ô1€IØð .Ý+5°iÅÑ+FÔ+FÐU�Y×%Ò%Ñ'Ô'Ð'ÈIˆ
Ø#ð 	.ð 	.ˆIØ˜EÐ!Ð!ØØ&-ˆIÔ#Ð#ð.ð .ð	.ð 	.r?   c                 óì  — t          | dd ¦  «        }|�|| ur|} t          | dd ¦  «        }|�|| u°t          |t          ¦  «        s|g}d„ |D ¦   «         }|€d„ |D ¦   «         }i }t          ||¦  «        D ]
\  }}|||<   Œd| _        || _        || _        t          | dd ¦  «        }|rJt          |t          ¦  «        r|                     ¦   «         n|}|D ]}	|	| u rŒd|	_        ||	_        ||	_        Œd S d S )Nrù  c                 ó,   — g | ]}t          |¦  «        ‘ŒS r—   )rý  )rX  Úls     r=   rZ  z"activate_loras.<locals>.<listcomp>†  s   € Ð)Ð)Ð)˜1•�A‘”Ð)Ð)Ð)r?   c                 ó   — g | ]}d ‘ŒS rç  r—   rè  s     r=   rZ  z"activate_loras.<locals>.<listcomp>‰  s   € Ð+Ð+Ð+˜Q�bÐ+Ð+Ð+r?   r   rú  )	rS   r™   r�   rD  rZ  rS  rT  rš   ry  )
rÆ   Úlora_nosr  rr  Úlora_scaling_dictÚnoÚmultir  r\  rÏ   s
             r=   r  r  ~  se  € Ý�U˜M¨4Ñ0Ô0€FØ
Ð
 ¨uÐ!4Ð!4ØˆÝ˜ ¨tÑ4Ô4ˆð Ð
 ¨uÐ!4Ð!4õ �h¥Ñ%Ô%ð Ø�:ˆØ)Ð) Ð)Ñ)Ô)€HàÐØ+Ð+ (Ð+Ñ+Ô+ˆ
àÐÝ˜ :Ñ.Ô.ð &ð &‰	ˆˆEØ %Ð˜"ÑÐà€EÔØ#+€EÔ Ø,€EÔÝ˜˜{¨DÑ1Ô1€IØð 9Ý+5°iÅÑ+FÔ+FÐU�Y×%Ò%Ñ'Ô'Ð'ÈIˆ
Ø#ð 	9ð 	9ˆIØ˜EÐ!Ð!ØØ&'ˆIÔ#Ø/7ˆIÔ,Ø'8ˆIÔ$Ð$ð9ð 9ð	9ð 	9r?   rj  c                 óà   — t          | d¦  «        r*| j        D ] }t          t          | |¦  «        |¦  «         Œ!d S |                      ¦   «         D ]\  }}d|v r|                     |¦  «         Œd S )NÚ_lora_loadable_modulesrú  )rH   rg  Úmove_loras_to_devicerS   r¿   rU   )rÆ   r-   r¢   rW  s       r=   rh  rh  �  s‹   € Ý�Ð/Ñ0Ô0ð ØÔ-ð 	;ð 	;ˆAÝ ¥¨¨qÑ!1Ô!1°6Ñ:Ô:Ð:Ð:Øˆà×#Ò#Ñ%Ô%ð ð ‰ˆˆ1Ø�qˆ=ˆ=Ø�DŠD�‰LŒLˆLøðð r?   rç   c                 ó
	  — t          ddd| ¦  «         ddl}t          | t          ¦  «        s| g} t	          j        d„ | D ¦   «         ¦  «        st          d| › d�¦  «        ‚d„ | D ¦   «         } t          d	„ | D ¦   «         ¦  «        rt          d
| › �¦  «        ‚t          |
¦  «        }
| d          	                    d¦  «        s| d          	                    d¦  «        rIt          j        | d         |	¬¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   nd}|€d}n|                     dd¦  «        }|dk    s|dk    rÅ|dk    r|}nA|dk    r9|j                             |j                             | d         ¦  «        d¦  «        n|}|j                             |¦  «        st          d¦  «        ‚t%          |dd¬¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   t)          j        |¦  «        }|                     |¦  «         d|v �r:|d         }|d         }|dk    r|}n9t/          d¦  «        }ddi} |                      ||¦  «        }t1          ||¦  «        }ddlm}! ddl}"|"                     ddd¬¦  «        5 }#|#                     t)          j        |¦  «        ¦  «         |#                     ¦   «          |!                      |#j!        ¦  «        }$ddd¦  «         n# 1 swxY w Y    |j"        |#j!        ¦  «         t          ddd| ¦  «         tG          ¦   «         5   ||$¦  «        }%ddd¦  «         n# 1 swxY w Y   n‹|dk    r|}n5d|v r"d }t/          d!¦  «        }t1          ||¦  «        }nt          d"¦  «        ‚t          ddd| ¦  «         tG          ¦   «         5  | $                    |¦  «        }%ddd¦  «         n# 1 swxY w Y   |% %                    ¦   «          &                    d¦  «         ||%_'        tQ          |%| fi d#|“d$|“d%|“d&|“d'|“d(|“d)|	“d*|“d+|“d,|“d-|“d.|“d/|“d0|
“d1|“d2|“Ž |% %                    ¦   «          &                    d¦  «         |%S )3z›
    quick version of .LoadfromPretrained of  the transformers library
    used to build a model and load the corresponding weights (quantized or not)
    zReading Configurationr   rÙ   Nc              3   ó
  K  — | ]~}|                      d ¦  «        pd|                      d¦  «        pO|                      d¦  «        p:|                      d¦  «        p%|                      d¦  «        pt          |¦  «        duV — ŒdS )ú.sftú.safetensorsz.ptz.binz.ckptN)r.  r   )rX  Ú	file_names     r=   rc  z/fast_load_transformers_model.<locals>.<genexpr>´  s  è è € ð  @ð  @ð  hq˜	×*Ò*¨6Ñ2Ô2ð  c°i×6HÒ6HÈÑ6XÔ6Xð  cÐ\e×\nÒ\nÐotÑ\uÔ\uð  cð  zC÷  zLò  zLð  MSñ  zTô  zTð  cð  Xa÷  Xjò  Xjð  krñ  Xsô  Xsð  cõ  wLð  MVñ  wWô  wWð  _cð  wcð  @ð  @ð  @ð  @ð  @ð  @r?   zFile Extension of file z is not supportedc                 ó,   — g | ]}t          |¦  «        ‘ŒS r—   )rì   ©rX  rú  s     r=   rZ  z0fast_load_transformers_model.<locals>.<listcomp>·  s    € Ð;Ð;Ð;¨•:˜dÑ#Ô#Ð;Ð;Ð;r?   c              3   ó"   K  — | ]
}|d k    V — Œd S rd   r—   ro  s     r=   rc  z/fast_load_transformers_model.<locals>.<genexpr>¸  s&   è è € Ð
0Ð
0˜TˆD�DŠLÐ
0Ð
0Ð
0Ð
0Ð
0Ð
0r?   úUnable to find file r¾   rk  rl  ré  rî   úconfig.jsonzpa 'config.json' that describes the model is required in the directory of the model or inside the safetensor fileÚrúutf-8©ÚencodingÚarchitecturesÚtransformersÚT5WithLMHeadModelÚT5EncoderModel)Ú
AutoConfigÚwF)Údeleterv  ÚBuildingr   Ú_class_nameÚTransformer3DModelÚ	diffuserszclass not definedÚdo_quantizeÚquantizationTyperj  ÚpinToMemoryr  ÚmodelPrefixrl  r  Úfused_split_mapr´  Úreturn_shared_modulesrU  Úignore_unused_weightsrª   Úpre_load_callbackÚ
fp32_dtype))Ú_report_loadingÚos.pathr™   r�   rd  re  rã   rÎ  r¬   r.  r   rm  rp  ry   rß   rå   Údirnamerà   rB  ÚreadÚjsonÚloadsr
  Ú
__import__rS   rx  r{  ÚtempfileÚNamedTemporaryFiler‘  ÚdumpsrK  Úfrom_pretrainedr³   Úremover   Úfrom_configÚevalÚrequires_grad_Ú_configÚload_model_data)&rç   r‚  rƒ  r„  r  ÚforcedConfigPathÚdefaultConfigPathÚ
modelClassr…  rl  rª   r  r†  r´  r‡  rU  rˆ  ÚconfigKwargsrj  r‰  rŠ  r±   rs  rp  Útransformer_configÚconfig_fullpathÚreaderr§  rw  Ú
class_nameÚtransfomer_classr<   r¾  r{  r’  ÚfpÚ
config_objrÆ   s&                                         r=   Úfast_load_transformers_modelr§  §  sF  € õ Ð+¨Q°°:Ñ>Ô>Ð>Ø€N€N€NÝ�j¥$Ñ'Ô'ð "Ø �\ˆ
õ Œ<ð  @ð  @ð  uð  @ñ  @ô  @ñ  @ô  @ð QÝÐO°*ÐOÐOÐOÑPÔPÐPà;Ð;°
Ð;Ñ;Ô;€JÝ
Ð
0Ð
0 ZÐ
0Ñ
0Ô
0Ñ0Ô0ð =ÝÐ;¨zÐ;Ð;Ñ<Ô<Ð<å)¨,Ñ7Ô7€LØ�"„~×Ò˜vÑ&Ô&ð ¨*°R¬.×*AÒ*AÀ.Ñ*QÔ*Qð ÝÔ# J¨r¤NÐFVÐWÑWÔWð 	$Ð[\Ø—z’z‘|”|ˆHð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$øð ˆàÐØ!ÐÐà%Ÿ\š\¨(°DÑ9Ô9Ðà˜TÒ!Ð!Ð%5¸Ò%=Ð%=Ø˜tÒ#Ð#Ø.ˆOˆOà_pÐtxÒ_xÐ_x˜rœwŸ|š|¨B¬G¯OªO¸JÀr¼NÑ,KÔ,KÈ]Ñ[Ô[Ð[ð  PˆOàŒw�~Š~˜oÑ.Ô.ð 	PÝð  Oñ  Pô  Pð  På�/ 3°Ð9Ñ9Ô9ð 	!¸VØ—;’;‘=”=ˆDð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!å œJ tÑ,Ô,Ðà×Ò˜|Ñ-Ô-Ð-àÐ,Ð,Ñ,Ø*¨?Ô;ˆØ" 1Ô%ˆ
Ø˜ÒÐØ)ÐÐå Ñ/Ô/ˆFØ(Ð+;Ð<ˆCØŸš ¨ZÑ8Ô8ˆJÝ& v¨zÑ:Ô:ÐØ+Ð+Ð+Ð+Ð+Ð+àˆˆˆØ×(Ò(¨°uÈÐ(ÑQÔQð 	=ÐUWØ�HŠH•T”ZÐ 2Ñ3Ô3Ñ4Ô4Ð4Ø�HŠH‰JŒJˆJØ#×3Ò3°B´GÑ<Ô<ˆJð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	ˆŒ	�"”'ÑÔÐå˜
 A q¨*Ñ5Ô5Ð5ÝÑ!Ô!ð 	1ð 	1Ø$Ð$ ZÑ0Ô0ˆEð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1øð ˜ÒÐØ)ÐÐØÐ0Ð0Ð0Ø.ˆJÝ Ñ,Ô,ˆFÝ& v¨zÑ:Ô:ÐÐåÐ/Ñ0Ô0Ð0å˜
 A q¨*Ñ5Ô5Ð5ÝÑ!Ô!ð 	Fð 	FØ$×0Ò0Ð1CÑEÔEˆEð	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Føøøð 	Fð 	Fð 	Fð 	Fð 
‡J‚J�L„L×Ò Ñ&Ô&Ð&à&€E„Må�E˜*ð  qð  qð  q°K°Kð  qÐTdÐTdð  qð  zJð  zJð  qð  Ydð  Ydð  qð  vDð  vDð  qð  T_ð  T_ð  qð  sCð  sCð  qð  Ubð  Ubð  qð  vEð  vEð  qð  QXð  QXð  qð  sHð  sHð  qð  Zgð  Zgð  qð  AVð  AVð  qð  eqð  eqð  qð  EVð  EVð  qð  eoð  eoð  qð  qØ	‡J‚J�L„L×Ò Ñ&Ô&Ð&à€Ls[   Ã8DÄDÄ DÇG4Ç4G8Ç;G8Ê!ALÌLÌ
LÍMÍMÍ"MÏO'Ï'O+Ï.O+c                  óZ  — t          j        ¦   «          t          j                             ¦   «         rX	 t          j                             ¦   «          n# t          j        j        $ r Y nw xY wt          j                             ¦   «          	 t          j         	                    ¦   «          n# t          $ r Y nw xY wt          j        dk    r	 ddlm} |j        spddlm}	  |	¦   «         5  	 t;          d	¦  «        D ]$}
t          j                             d
d¦  «        }d }Œ%n# t.          $ r Y nw xY wd }d d d ¦  «         n# 1 swxY w Y   t          j                             ¦   «         r1t          j        ¦   «          t          j                             ¦   «          |                      ¦   «          d S )Nr¯   Fr   rl  i   r   )r  r   r  i€é )!rß  rà  rN   r  Úis_availablerû  Ú	CudaErrorrá  Ú_CÚ_host_emptyCacheÚAttributeErrorr±   r³   r,  Úctypes.wintypesÚwintypesÚwindllr(  ÚpsapiÚOpenProcessÚgetpidÚEmptyWorkingSetÚCloseHandlerã   Ú	allocatorr  ÚactiveÚ
accelerater   r*  rO   Ú	EmbeddingrK  )r,  r¯  Ú_osÚPROCESS_SET_QUOTAÚPROCESS_QUERY_INFORMATIONr(  r±  Úhandler  r   r!  Údummy_tensors               r=   rÞ  rÞ    s  € Ý„J�L„L€LÝ„z×ÒÑ Ô ð !ð	ÝŒJ×"Ò"Ñ$Ô$Ð$Ð$øÝŒzÔ#ð 	ð 	ð 	ØˆDð	øøøõ 	Œ
×ÒÑ Ô Ð ðÝŒ×!Ò!Ñ#Ô#Ð#Ð#øÝð ð ð Øˆðøøøå	„w�$‚€€ð ÐÐÐÐÐØŒ:ð 	 Ø1Ð1Ð1Ð1Ð1Ð1ØÐÑ!Ô!ð 	 ð 	 ðÝ˜q™œð (ð (�AÝ#(¤8×#5Ò#5°f¸dÑ#CÔ#C�LØ#'�L�Lð(øõ ð ð ð Ø�ðøøøàˆLð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 õ „z×ÒÑ Ô ð !Ý
Œ
‰ŒˆÝŒ
×ÒÑ Ô Ð Ø‡K‚K�M„M€M€M€MsY   ³A ÁA)Á(A)ÂB* Â*
B7Â6B7Ã(D=Ã*4DÄD=Ä
D,Ä)D=Ä+D,Ä,D=Ä=EÅEc                 ól   ‡‡— ˆfd„Št          | t          ¦  «        rˆfd„| D ¦   «         S  ‰| ¦  «        S )Nc                 ó4  •— | €d S ‰
                      ¦   «         D ]ý\  }}i }t          |¦  «        }|dz   }|                       ¦   «         D ]Ë\  }}|                     |¦  «        r¬|�©t          |¦  «        dk    r||dz   d …         }n|||d …         z   }t          |t          ¦  «        rag }|D ]Z}	|	                     |¦  «        r.t          |¦  «        dk    r|	|dz   d …         }	n||	|d …         z   }	|                     |	¦  «         Œ[|}|||<   ŒÆ|||<   ŒÌ|} Œþ| S )Nr¼   r   r   )r›   rÂ   rÀ   r™   r�   rž   )rr  ÚruleÚreplrä  Ú	new_startr  r¢   r£   Únew_vÚsubÚruless             €r=   Ú
map_one_sdz"map_state_dict.<locals>.map_one_sd6  sT  ø€ Øˆ:˜d˜dØŸ+š+™-œ-ð 	ð 	‰JˆD�$ØˆFÝ˜D™	œ	ˆIØ˜C‘ZˆFØ—x’x‘z”zð "ð "‘��!Ø—<’< Ñ'Ô'ð "ØÐ'Ý˜t™9œ9¨š>˜>Ø  ¨1¡  œ˜A˜Aà $ q¨¨¨¤}Ñ 4˜AÝ% a­Ñ.Ô.ð 	&Ø$&˜EØ'(ð 2ð 2 Ø#&§>¢>°&Ñ#9Ô#9ð !EÝ'*¨4¡y¤y°A¢~ ~Ø-0°¸1±°°Ô->¨¨à.2°S¸¸¸´_Ñ.D¨Ø %§¢¨SÑ 1Ô 1Ð 1Ð 1Ø %˜Aà$%˜˜q™	øà !�F˜1‘I�IØˆBˆBØˆ	r?   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r—   r—   )rX  rr  rÇ  s     €r=   rZ  z"map_state_dict.<locals>.<listcomp>U  s!   ø€ Ð4Ð4Ð4 2�
�
˜2‘”Ð4Ð4Ð4r?   )r™   r�   )r5  rÆ  rÇ  s    `@r=   Úmap_state_dictrÉ  4  s[   øø€ ðð ð ð ð õ< �*�dÑ#Ô#ð &Ø4Ð4Ð4Ð4¨Ð4Ñ4Ô4Ð4àˆz˜*Ñ%Ô%Ð%r?   c                 ó   — i }d}|r5|                       ¦   «         D ]\  }}|                     |¦  «        r|||<   Œ n’|                       ¦   «         D ]}\  }}|                     |¦  «        rt          |¦  «        }n4|                     d|z   ¦  «        }|dk     rŒI|t          |¦  «        z   dz   }|dk    r
||k    r| } n|}||||d …         <   Œ~|S )Nr¾   r¼   r   r   )r›   rÀ   rÂ   r  )	r5  Úbase_model_prefixÚkeep_prefixr¼  rŒ   r¢   r£   rÃ  r*  s	            r=   Úfilter_state_dict_basicrÍ  Y  s  € Ø€NØ€EØð +Ø×#Ò#Ñ%Ô%ð 	&ð 	&‰CˆAˆaØ�|Š|Ð-Ñ.Ô.ð &Ø$%�˜qÑ!øð	&ð ×#Ò#Ñ%Ô%ð 	+ð 	+‰CˆAˆaØ�|Š|Ð-Ñ.Ô.ð =åÐ 1Ñ2Ô2�	�	à—f’f˜SÐ#4Ñ4Ñ5Ô5�Ø˜’7�7ØØ¥#Ð&7Ñ"8Ô"8Ñ8¸1Ñ<�	Ø˜Š{ˆ{˜u¨	Ò1Ð1Ø",�Ø�ØˆEØ)*ˆN˜1˜e˜f˜fœ:Ñ&Ð&ØÐr?   c                 ó  — t          | |¬¦  «        \  }}d }d }|d k    r,|                     dd ¦  «        }|                     dd ¦  «        }|�»t          |t          ¦  «        s|g}i }i }	i }
|D ]r}|                     t          |||¦  «        ¦  «         |�$|	                     t          |||¦  «        ¦  «         |�$|
                     t          |||¦  «        ¦  «         Œs|}t          |	¦  «        r|	nd }t          |
¦  «        r|
nd }|||fS )Nré  r<  Útied_weights_map)rt  ry   r™   r�   r
  rÍ  rÂ   )rq  ÚfiltersÚkeep_prefixesrl  r5  rp  r<  rÏ  rä  Únew_quantization_mapÚnew_tied_weights_mapÚ
one_filters               r=   Úload_sdrÕ  q  sW  € Ý1°)ÐO_Ð`Ñ`Ô`Ñ€J�ØÐØÐØ�DÒÐØ#Ÿ<š<Ð(:¸DÑAÔAÐØ#Ÿ<š<Ð(:¸DÑAÔAÐàÐÝ˜'¥4Ñ(Ô(Ð=°W°I¨'ØˆØ!ÐØ!ÐØ!ð 	rð 	rˆJØ�MŠMÕ1°*¸jÈ-ÑXÔXÑYÔYÐYØÐ+Ø$×+Ò+Õ,CÐDTÐV`ÐboÑ,pÔ,pÑqÔqÐqØÐ+Ø$×+Ò+Õ,CÐDTÐV`ÐboÑ,pÔ,pÑqÔqÐqøØˆ
Ý36Ð7KÑ3LÔ3LÐVÐ/Ð/ÐRVÐÝ36Ð7KÑ3LÔ3LÐVÐ/Ð/ÐRVÐØÐ'Ð)9Ð9Ð9r?   c           
      ój  ‡‡— |€|�|n|}t          ddd‰¦  «         t          ‰t          ¦  «        rˆfd„}n‰}t          ‰t          ¦  «        s‰gŠt	          ‰¦  «        }t          |t          t
          f¦  «        rt          |t
          ¦  «        r|g}‰|z  Šd}g }‰D ]|}t          |t          t          f¦  «        r|                     |¦  «         Œ4t          |¦  «        }t          |t
          ¦  «        rt          |¦  «        }|                     |¦  «         Œ}|Št          d„ ‰D ¦   «         ¦  «        rt          d‰› �¦  «        ‚t          |¦  «        }t          | ¦  «        } |�i }i }||d<   ||d	<   i }i }i }t          ‰¦  «        D �]2\  }}|rt          ddd|¦  «         d} d
}!d}"d}#d}$t          |t          ¦  «        rDt	          |¦  «        dk    r|\  }%} �nµt	          |¦  «        dk    r|\  }%} }"�nšt          d¦  «        ‚t          |t          ¦  «        r|}%�nrt          |t
          ¦  «        �rt          |¦  «        �ùt          |¦  «        }&t!          |&dd¦  «        }'t#          |'¦  «        s]t$          j                             |¦  «        d                              ¦   «                              d¦  «        }(t          d|(› d�¦  «        ‚ |'|||||¬¦  «        })t          |)t          ¦  «        rDt	          |)¦  «        dk    r|)\  }%} �n‚t	          |)¦  «        dk    r|)\  }%} }"�ngt          d¦  «        ‚|)}%�nTd|v s:d|v s6|rt          d¦  «        ‚t/          j        |d
d¬¦  «        }%d|%v r|%d         }%�nt$          j                             |¦  «        }*d|*v rß|*                     d¦  «        }+t7          |+d         dd…         ¦  «        },i }%t9          d|,dz   ¦  «        D ]–}-dt          |-¦  «        z   dd…         |+d<   t;          t$          j                             t$          j                             |¦  «        d                     |+¦  «        ¦  «        |¬¦  «        \  }.}/|%                      |.¦  «         Œ—nt;          ||¬¦  «        \  }%}#|#dk    rO| €|# !                    d	d¦  «        } |# !                    dd¦  «        }0|0�|0| _"        |"€|# !                    d d¦  «        }"| € t          |t
          ¦  «        r‹t
           #                    |d¦  «        }1|1dk    r
|d|1…         }2|2d!z  }2t$          j         $                    |2¦  «        r<tK          |2d"¦  «        5 }3tM          j        |3¦  «        } ddd¦  «         n# 1 swxY w Y   t          d#dd|¦  «         |dk    rut	          tO          j(        |¦  «        j)        ¦  «        }4 ||%| |"gd|4…         Ž }%t          |%t          t          f¦  «        rt	          |%¦  «        dk    r|%\  }%} n|%\  }%} }"| du}!|"dk    r,|" *                    ¦   «         D ]\  }5}6|%|5         }7|6D ]}8|7|%|8<   ŒŒ| �|!rñtW          |%|||#¬$¦  «        }9|9 !                    d%¦  «        }$|9 !                    d%¦  «        d&vr)|9d         }%| pi } |                       |9d'         ¦  «         d}9|$d(v rZt          |t
          ¦  «        rEd|v sd|v r=	 tY          |%||#¬)¦  «        }:|: !                    d%¦  «        }$n# t          $ r |$pd}$Y nw xY w|$d(vr't          |t
          ¦  «        rt[          ||$pd*¦  «         |                      |%¦  «         | dk    r|                      | ¦  «         |"dk    r|                      |"¦  «         |�2||k    r,|                      |%¦  «         | �|                      | ¦  «         �Œ4t          |t          ¦  «        r6|                      |d         ¦  «         |                      |d	         ¦  «         |||}"} }%d+\  }}}|	dk    rqt	          tO          j(        |	¦  «        j)        ¦  «        }4 |	|%| |"gd|4…         Ž }%t          |%t          t          f¦  «        rt	          |%¦  «        dk    r|%\  }%} n|%\  }%} }"|dk    rA|dz   };t]          |%|;¦  «        }%| dk    rt]          | |;¦  «        } |"dk    rt]          |"|;¦  «        }"|
r9g }<t_          |%| |
|||<¬,¦  «        \  }%} |<D ]\  }=}:ta          j1        | |=|:|%¦  «         Œt          d-dd‰¦  «         g }>| rte          | |%| ||¬.¦  «        \  } }>|� || ¦  «         i }?|  3                    d
¬/¦  «        D ]P\  }@}At!          |Ad0|¦  «        }B|A 4                    d
d
¬1¦  «        D ]"\  }5}Ct!          |Cd0|B¦  «        |?|@r|@› d|5› �n|5<   Œ#ŒQd2„ |  *                    ¦   «         D ¦   «         }Di }E|? 5                    ¦   «         |% 5                    ¦   «         z  D ]²}F|%|F         }G|?|F         }H|H€|Gj6        t.          j7        k    r|}H|H�N|F|Dv sJt          |Gtp          ¦  «        s5|Gj6        t.          j9        t.          j:        t.          j7        fvs|Gj6        |Hk    rŒ|tw          |G¦  «        }I|I|Evr|G <                    |H¦  «        |E|I<   |E|I         |%|F<   Œ³d}Et	          | ¦  «        dk    r+t          d3„ ‰D ¦   «         ¦  «        r|st{          d4¦  «         nt}          | |%| |¬5¦  «         |  ?                    |%d
d6¬7¦  «        \  }J}Kt	          |J¦  «        dk    rÄd};|% *                    ¦   «         D ]@\  }L}M|L @                    |Jd         ¦  «        r |Ldt	          |Jd         ¦  «         …         }; nŒA|;dk    r|st          d8|J› �¦  «        ‚nRt]          |%|;¦  «        }%|  ?                    |%d
d6¬7¦  «        \  }J}Kt	          |J¦  «        dk    r|st          d8|J› �¦  «        ‚~%|>r@|>D ]=}N	  |N| ¦  «         Œ# t          $ r"}O|dk    rt{          d9|O› �¦  «         Y d}O~OŒ6d}O~Oww xY wt	          |K¦  «        dk    r|dk    r|st{          d:‰› d;|K› �¦  «         |  4                    ¦   «         D ]!\  }L}P|PjA        rd<|L› d=�}Qt          |Q¦  «        ‚Œ"|  B                    ¦   «         D ]!\  }L}R|RjA        rd>|L› d=�}Qt          |Q¦  «        ‚Œ"|�Íd?„ |  3                    ¦   «         D ¦   «         }Si }T|T|d@<   |D ]¤}L|L @                    dA¦  «        r
|LddB…         }L|L #                    d¦  «        }1|Ld|1…         }U|L|1dz   d…         }V|S !                    |Ud¦  «        }W|W�?|WjC         !                    |Vd¦  «        }P|P€|WjD         !                    |Vd¦  «        }P|P�|P|T|L<   Œ¥~St          |t          ¦  «        rÌdC„ |  3                    ¦   «         D ¦   «         }S|d@          *                    ¦   «         D ]Z\  }L}X|L #                    d¦  «        }1|Ld|1…         }U|L|1dz   d…         }V|S !                    |Ud¦  «        }W|W�t‹          |W|V|X¦  «         Œ[~S|d@          F                    ¦   «          |d          F                    ¦   «          dx}X}P|rJ| dk    r)t	          | ¦  «        dk    r|dk    rt{          dD¦  «         nt�          | ||‰|¬E¦  «        r| jH        } |rOt’           !                    ¦   «         }Y|Y€dnt•          |Yd         jK        ˆfdF„¦  «        }Zt™          | ‰|||Z¬G¦  «         t          dHdd‰¦  «         dS )IaN  
    Load a model, detect if it has been previously quantized using quanto and do the extra setup if necessary
    fp32_dtype: only with default_dtype=None (checkpoint-native dtypes). FP32 parameters are converted to this dtype,
    which is also the compute dtype of quantized layers. None (default) keeps the previous behavior.
    NzReading Weightsr   r  c                 ó,   •— t          | ||g‰¬¦  «        S )N)rÆ  )rÉ  )rr  ÚqmÚtwmr  s      €r=   rº  z!load_model_data.<locals>.<lambda>”  s   ø€ ­N¸BÀÀC¸=ÐP]Ð,^Ñ,^Ô,^€ r?   c              3   ó   K  — | ]}|d u V — Œ	d S rd   r—   ro  s     r=   rc  z"load_model_data.<locals>.<genexpr>ª  s&   è è € Ð
.Ð
.˜Dˆ4�4ˆ<Ð
.Ð
.Ð
.Ð
.Ð
.Ð
.r?   rq  r5  r<  FrÙ   zDExpected a tuple of (state_dict, quantization_map, tied_weights_map)Úload_state_dictr   r¼   zMissing load_state_dict for *.z handler)rl  rª   rU  Úpin_to_memoryrl  rk  zEPinning to memory while loading only supported for safe tensors filesrj  )Úweights_onlyÚmap_locationr<   z-of-r:  r¾   r¹   Ú0000ré  rî   rÏ  z	_map.jsonrs  zPreparing Weights)rU  rª   rp  Úkind)rO  ÚquantoÚ	quant_map)NrO  )rª   rp  rO  rY   )rU  rª   Úrow_view_baseszApplying Weights)rU  rª   )Úremove_duplicater   )rÍ  rä  c                 ó6   — h | ]\  }}|d          dk    ¯|› d�’ŒS )r.   rO  rì  r—   )rX  r³   rX  s      r=   rÇ  z"load_model_data.<locals>.<setcomp>e  s7   € ÐxÐxÐx©m¨d°GÐ[bÐclÔ[mÐqwÒ[wÐ[w˜DÐ)Ð)Ð)Ð[wÐ[wÐ[wr?   c              3   óH   K  — | ]}t          |t          ¦  «        od |v V — ŒdS )rá  N)r™   rý  ro  s     r=   rc  z"load_model_data.<locals>.<genexpr>u  s6   è è € ÐPÐP¸d�z˜$¥Ñ$Ô$Ð9¨°TÐ)9ÐPÐPÐPÐPÐPÐPr?   z”Model seems to be quantized by quanto but no quantization map was found whether inside the model or in a separate '{file_path[:json]}_map.json' file)rU  T)ÚassignzMissing keys: zPost-load hook skipped: zUnexpected keys while loading 'ú': zOIncompatible State Dictionary or 'Init_Empty_Weights' not set since parameter 'z' has no datazLIncompatible State Dictionary or 'Init_Empty_Weights' not set since buffer 'c                 ó   — i | ]\  }}||“Œ	S r—   r—   r¢  s      r=   r¨  z#load_model_data.<locals>.<dictcomp>¢  ó   € Ð8Ð8Ð8™3˜1˜Q��QÐ8Ð8Ð8r?   rÁ  r,  iúÿÿÿc                 ó   — i | ]\  }}||“Œ	S r—   r—   r¢  s      r=   r¨  z#load_model_data.<locals>.<dictcomp>´  rê  r?   zModel already quantized)rª   rË  rj  c                 ó(   •— t          | ||‰¦  «        S rd   )r‹  )ÚphaseÚ	completedrð  r!  rq  s       €r=   rº  z!load_model_data.<locals>.<lambda>Ì  s6   ø€ õ  HWð  X]ð  _hð  joð  qzñ  H{ô  H{€ r?   )r  rª   r  zWeights Loaded)Mr‹  r™   rš   r�   rÂ   rý  rÐ  rž   rì   r   rÎ  rã   r¬   rô   r¹  r   rS   rS  r±   rß   Úsplitextr¦   ÚlstriprN   ÚloadÚbasenamerÁ   rõ  r*  rt  rå   r�  r
  ry   rš  r  rà   rB  r�  ÚinspectÚ	signaturerÁ  r›   r   r   r   rÍ  r   r   Úinstallr   r¿   r  rn  r,   Úfloat32r&   Úfloat16Úbfloat16rÆ  rU   rþ  rZ  rÛ  r.  Úis_metar  r•  rE   r6  r   r�  rT  Ú_loading_contextÚLoadingCallbackÚabort_requestedr  )[rÆ   rq  r‚  rƒ  r„  r  r…  rl  r  Úpostprocess_sdr†  r´  r‡  rU  rˆ  rª   Úignore_missing_keysrj  r‰  rŠ  Úquant_dtypeÚpreprocess_fnÚ
file_countÚnormalized_pathsrú  ÚresolvedÚreturn_state_dictÚreturn_quantization_mapÚfull_quantization_mapÚfull_tied_weights_mapÚfull_state_dictrd  r<  Úhybrid_quantization_maprÏ  rp  Údetected_kindr5  Úext_handlerÚload_fnÚextr;  rò  Ú
file_partsÚ	parts_maxrå  rr  r!  rî   r*  Úquantization_map_pathrs  Ú
num_paramsr³   Útied_weights_listÚmapped_weightrÍ  Úconv_resultr5  rË  rã  r@  Úpost_load_hooksÚparameter_dtypesr•  r<   Úmodule_dtyperk   Úquantized_weightsÚ	convertedr£  r‰  Útarget_dtyperã  Úmissing_keysr5  r¢   r£   ÚhookÚer{  Útxtr,  ÚmodsÚreturn_parametersÚmod_namerL  ÚmodÚrep_pÚcontextÚpinning_callbacks[    `      `                                                                                  r=   r›  r›  Š  s0  øø€ ð !.Ð 5¸*Ð:P�*�*ÐVc€KÝÐ% q¨!¨YÑ7Ô7Ð7Ý�-¥Ñ&Ô&ð &Ø^Ð^Ð^Ð^ˆˆà%ˆÝ�i¥Ñ&Ô&ð  Ø�Kˆ	å�i‘.”.€JÝ�'�D¥˜:Ñ&Ô&ð Ý�g�sÑ#Ô#Ð8°¨y WØ�WÑˆ	ØˆàÐØð .ð .ˆÝ�d�T¥5˜MÑ*Ô*ð 	.Ø×#Ò# DÑ)Ô)Ð)Ð)å! $Ñ'Ô'ˆHÝ˜(¥CÑ(Ô(ð >Ý3°HÑ=Ô=�Ø×#Ò# HÑ-Ô-Ð-Ð-Ø €IÝ
Ð
.Ð
. IÐ
.Ñ
.Ô
.Ñ.Ô.ð <ÝÐ:¨yÐ:Ð:Ñ;Ô;Ð;Ý)¨,Ñ7Ô7€Lå! %Ñ(Ô(€EàÐ(ØÐØ!#ÐØ.?Ð˜lÑ+Ø4KÐÐ0Ñ1àÐØÐØ€OÝ˜iÑ(Ô(ð s^ñ s^‰ˆˆDØð 	;ÝÐ-¨q°!°TÑ:Ô:Ð:ØÐØ"'ÐØÐØˆØˆÝ�d�EÑ"Ô"ð +	hÝ�4‰yŒy˜!Š|ˆ|Ø/3Ñ,�
Ð,Ñ,Ý�T‘”˜A’�ØAEÑ>�
Ð,Ð.>Ñ.>åÐ fÑgÔgÐgÝ˜�dÑ#Ô#ð $	hØˆJ‰JÝ˜�cÑ"Ô"ñ "	hÕ'<¸TÑ'BÔ'BÐ'NÝ/°Ñ5Ô5ˆKÝ˜kÐ+<¸dÑCÔCˆGÝ˜GÑ$Ô$ð PÝ”g×&Ò& tÑ,Ô,¨QÔ/×5Ò5Ñ7Ô7×>Ò>¸sÑCÔC�ÝÐ NÀÐ NÐ NÐ NÑOÔOÐOØ�W˜dÐ5EÐT`Ðp{ð  LWð  Zñ  Zô  ZˆFÝ˜&¥%Ñ(Ô(ð $Ý�v‘;”; !Ò#Ð#Ø39Ñ0�JÐ 0Ñ 0Ý˜‘[”[ AÒ%Ð%ØEKÑB�JÐ 0Ð2BÑ2Bå#Ð$jÑkÔkÐkà#�
‘
Ø  DÐ(Ð(¨F°d¨N¨NØð iÝÐ gÑhÔhÐhÝœ D°uÈ5ÐQÑQÔQˆJØ˜:Ð%Ð%Ø'¨Ô1�
ùå”w×'Ò'¨Ñ-Ô-ˆHà˜Ð!Ð!Ø$ŸNšN¨3Ñ/Ô/�
Ý 
¨2¤¨r°¨rÔ 2Ñ3Ô3�	Ø�
Ý˜q )¨a¡-Ñ0Ô0ð *ð *�AØ%+­c°!©f¬f¡_°b°q°bÔ$9�J˜q‘MÝ2µB´G·L²LÅ"Ä'Ç/Â/ÐRVÑBWÔBWÐY\×YaÒYaÐblÑYmÔYmÑ4oÔ4oð  EUð  Vñ  Vô  V‘E�B˜Ø×%Ò% bÑ)Ô)Ð)Ð)ð*õ
 (>¸dÐVfÐ'gÑ'gÔ'gÑ$�
˜Hà˜ÒÐØÐ'Ø#+§<¢<Ð0BÀDÑ#IÔ#IÐ Ø—\’\ (¨DÑ1Ô1ˆFØÐ!Ø &�”ØÐ'Ø#+§<¢<Ð0BÀDÑ#IÔ#IÐ àÐ#­
°4½Ñ(=Ô(=Ð#Ý—)’)˜D #Ñ&Ô&ˆCØ�QŠwˆwØ(,¨T¨c¨T¬
Ð%Ø! [Ñ0Ð!åŒw�~Š~Ð3Ñ4Ô4ð 4ÝÐ/°Ñ5Ô5ð 4¸Ý'+¤y°¡|¤|Ð$ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4õ 	Ð+¨Q°°4Ñ8Ô8Ð8Ø˜DÒ Ð Ý�WÔ.¨}Ñ=Ô=ÔHÑIÔIˆJØ&˜¨Ð5EÐGWÐ(XÐYdÐZdÐYdÔ(eÐfˆJÝ˜*¥u­T lÑ3Ô3ð PÝ�z‘?”? AÒ%Ð%Ø3=Ñ0�JÐ 0Ð 0àEOÑB�JÐ 0Ð2BØ&6¸dÐ&BÐ#à˜tÒ#Ð#Ø+;×+AÒ+AÑ+CÔ+Cð =ð =Ñ'�Ð'Ø *¨4Ô 0�Ø$5ð =ð =�LØ/<�J˜|Ñ,Ð,ð=ð Ð#Ð'>Ð#Ý,¨ZÀ{Ðamð  yAð  Bñ  Bô  BˆKØ'ŸOšO¨FÑ3Ô3ˆMØ�Š˜vÑ&Ô&Ð.@Ð@Ð@Ø(¨Ô6�
Ø#3Ð#9°rÐ Ø ×'Ò'¨°KÔ(@ÑAÔAÐAØ"�à Ð.Ð.µ:¸dÅCÑ3HÔ3HÐ.ÈnÐ`dÐNdÐNdÐhnÐrvÐhvÐhvð:Ý4°ZÈlÐemÐnÑnÔn�DØ$(§H¢H¨VÑ$4Ô$4�M�MøÝ ð :ð :ð :Ø$1Ð$9°T�M�M�Mð:øøøà NÐ2Ð2µzÀ$ÍÑ7LÔ7LÐ2Ý+¨D°-Ð2IÀ6ÑJÔJÐJà×Ò˜zÑ*Ô*Ð*Ø˜tÒ#Ð#Ø!×(Ò(Ð)9Ñ:Ô:Ð:Ø˜tÒ#Ð#Ø!×(Ò(Ð)9Ñ:Ô:Ð:Ø Ð,°°zÒ1AÐ1AØ×$Ò$ ZÑ0Ô0Ð0ØÐ+Ð-D×-KÒ-KÐL\Ñ-]Ô-]Ð-]ùå�'�4Ñ Ô ð BØ×Ò˜w |Ô4Ñ5Ô5Ð5Ø×$Ò$ WÐ-?Ô%@ÑAÔAÐAà6EÐG\Ð^sÐ"2Ð €JØDTÑA€OÐ*Ð,Að ˜ÒÐÝ�Ô*¨>Ñ:Ô:ÔEÑFÔFˆ
Ø#�^ jÐ2BÐDTÐ%UÐVaÐWaÐVaÔ%bÐcˆ
Ý�j¥5­ ,Ñ/Ô/ð 	LÝ�:‰Œ Ò!Ð!Ø/9Ñ,�
Ð,Ð,àAKÑ>�
Ð,Ð.>à�dÒÐØ'¨#Ñ-ÐÝ,¨ZÐ8IÑJÔJˆ
Ø˜tÒ#Ð#Ý6Ð7GÐHYÑZÔZÐØ˜tÒ#Ð#Ý6Ð7GÐHYÑZÔZÐàð =ØˆÝ':ØØØØ%Ø%Ø)ð(
ñ (
ô (
Ñ$ˆ
Ð$ð )ð 	=ð 	=‰JˆD�$ÝÔ˜e T¨4°Ñ<Ô<Ð<Ð<åÐ&¨¨1¨iÑ8Ô8Ð8Ø€OØð 
Ý,BØØØØ%Ø%ð-
ñ -
ô -
Ñ)Ð˜/ð Ð$ØÐ˜%Ñ Ô Ð ØÐØ$×2Ò2ÀEÐ2ÑJÔJð Að AÑˆ�VÝ˜v }°mÑDÔDˆØ%×6Ò6¸uÐW\Ð6Ñ]Ô]ð 	Að 	A‰OˆD�)ÝQXÐYbÐdqÐsñ  RAô  RAÐ¸ÐM Ð4Ð4¨dÐ4Ð4Ð4ÈÑNÐNð	AàxÐxÐ?O×?UÒ?UÑ?WÔ?WÐxÑxÔxÐØ€IØ×$Ò$Ñ&Ô&¨¯ªÑ):Ô):Ñ:ð 
)ð 
)ˆØ˜C”ˆØ'¨Ô,ˆØÐ F¤LµE´MÒ$AÐ$AØ%ˆLØÐ 3Ð*;Ð#;Ð#;½zÈ&ÕRYÑ?ZÔ?ZÐ#;Ð^dÔ^jÕsxô  tAõ  CHô  CQõ  SXô  S`ð  sað  _að  _að  ekô  eqð  uAò  eAð  eAØÝ�‰jŒjˆØ�iÐÐØ#ŸYšY |Ñ4Ô4ˆI�c‰NØ# Cœ.ˆ
�3‰ˆØ€Iå
ÐÑÔ Ò!Ð!ÝÐPÐPÀiÐPÑPÔPÑPÔPð 	jÐYdð 	jÝð  iñ  jô  jð  jøå�E˜:Ð'7À{ÐSÑSÔSÐSà%*×%:Ò%:¸:ÀuÐX\Ð%:Ñ%^Ô%^Ñ"€L�?Ý
ˆ<ÑÔ˜1ÒÐà ÐØ×#Ò#Ñ%Ô%ð 	ð 	‰CˆAˆaØ�zŠz˜, qœ/Ñ*Ô*ð Ø$%Ð&<­¨L¸¬OÑ(<Ô(<Ð'<Ð&<Ô$=Ð!Ø�ðð  Ò$Ð$Ø&ð AÝÐ ?°Ð ?Ð ?Ñ@Ô@Ð@ðAõ 1°Ð=NÑOÔOˆJØ-2×-BÒ-BÀ:ÈuÐ`dÐ-BÑ-fÔ-fÑ*ˆL˜?Ý�<Ñ Ô  1Ò$Ð$Ð-@Ð$ÝÐ ?°Ð ?Ð ?Ñ@Ô@Ð@ààð :Ø#ð 	:ð 	:ˆDð:Ø��U‘”��øÝð :ð :ð :Ø 1Ò$Ð$ÝÐ8°QÐ8Ð8Ñ9Ô9Ð9øøøøøøøøøð:øøøõ ˆ?ÑÔ˜aÒÐ L°1Ò$4Ð$4Ð=RÐ$4ÝÐO°	ÐOÐO¸oÐOÐOÑPÔPÐPà×%Ò%Ñ'Ô'ð !ð !‰ˆˆ!ØŒ9ð 	!ØuÐefÐuÐuÐuˆCÝ˜C‘.”.Ð ð	!ð ×"Ò"Ñ$Ô$ð !ð !‰ˆˆ!ØŒ9ð 	!ØrÐbcÐrÐrÐrˆCÝ˜C‘.”.Ð ð	!ð Ð(Ø8Ð8 %×"5Ò"5Ñ"7Ô"7Ð8Ñ8Ô8ˆØÐØ.?Ð˜lÑ+Ø"ð 	-ð 	-ˆAØ�zŠz˜(Ñ#Ô#ð Ø�c�r�c”F�Ø—'’'˜#‘,”,ˆCØ˜˜#˜”wˆHØ˜C ™F˜G˜Gœ*ˆJØ—(’(˜8 TÑ*Ô*ˆCØˆØ”_×(Ò(¨°TÑ:Ô:�Ø�9 3¤<×#3Ò#3°JÀÑ#EÔ#E˜aØ�=Ø+,Ð% aÑ(øØå�'�4Ñ Ô ð Ø8Ð8 %×"5Ò"5Ñ"7Ô"7Ð8Ñ8Ô8ˆà Ô-×3Ò3Ñ5Ô5ð 	0ð 	0‰HˆAˆuØ—'’'˜#‘,”,ˆCØ˜˜#˜”wˆHØ˜C ™F˜G˜Gœ*ˆJØ—(’(˜8 TÑ*Ô*ˆCØˆÝ˜˜Z¨Ñ/Ô/Ð/øØØ�Ô×#Ò#Ñ%Ô%Ð%Ø�Ô×#Ò#Ñ%Ô%Ð%ØÐˆ�àð 5Ø˜tÒ#Ð#­Ð,<Ñ(=Ô(=ÀÒ(AÐ(AØ˜aÒÐÝÐ/Ñ0Ô0Ð0øå˜Ð 0¸|ÐV_ð  sCð  Dñ  Dô  Dð 5Ø#(Ô#4Ð àð JÝ"×&Ò&Ñ(Ô(ˆØ#* ?˜4˜4½ÈÐPQÌ
ÔHbð  e{ð  e{ð  e{ð  e{ñ  9|ô  9|ÐÝ�u˜i¸.ÐYeð  yIð  	Jñ  	Jô  	Jð  	JåÐ$ a¨¨IÑ6Ô6Ð6Ø
€Fs<   Õ VÖV	ÖV	Û'\Ü\Ü\ï=p	ð	
p5ðp0ð0p5c                 ó  — d}d}	t          |¦  «        }|dk    rTt          |dd¬¦  «        5 }
|
                     ¦   «         }t          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   �n2t          | d¦  «        r	| j        }�nt          | d¦  «        �rd}t          | d¦  «        }t          |dd¦  «        }|dk    r/t          j	         
                    |d¦  «        }t          |¦  «        }|€=t          j	         
                    t          j	                             |¦  «        d¦  «        }t          j	                             |¦  «        rRt          |dd¬¦  «        5 }
|
                     ¦   «         }t          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   |rt          | ||||¬	¦  «         t          | d
d¦  «        }ddlm} i }i }|                      ¦   «         }|dk    rµi }i }|D ]¤}dD ]1}|                     |¦  «        r|dt'          |¦  «         …         } nŒ2|                     ¦   «         D ]\  }}|                     |¦  «        r|||<   Œ |dk    r4|                     ¦   «         D ]\  }}|                     |¦  «        r|||<   Œ Œ¥|}|dk    r|} |¦   «         }|                     ¦   «         D ]k\  }}t-          |¦  «        }|                     |d¦  «        }|dk    r1|                     |g ¦  «        }|                     |¦  «         |||<   Œa|||<   |||<   Œlt'          |¦  «        dk    rd|i}	|dk    rt3          d|› �¦  «         t5          j        |||||	¬¦  «         |dk    rt3          d|› d�¦  «         dS dS )z}save the weights of a model and quantize them if requested
    These weights can be loaded again using 'load_model_data'
    Nrs  rt  ru  rš  rî   Ú_name_or_pathrr  )r.   rË  rª   rj  rT  r   rh  )rì  z.biasz.weight._dataz.weight._scalerÏ  r   zSaving file ')r<  rî   Ú
extra_metazFile 'z' saved)r¬   rB  rŽ  r�  r�  rH   rš  rS   r±   rß   rå   rì   r�  rà   r�  r  r  r5  r.  rÂ   r›   rÀ   rä  ry   rž   rþ  r   Útorch_write_file) rÆ   rq  r‚  rƒ  rª   Úconfig_file_pathÚ	filter_sdrj  rî   r(  r¢  r§  r¡  r¦  Úconfig_pathr<  r  r�  rÏ  rr  rä  rÒ  Úk_kr•   r¢   r£   Úout_sdr³   r:   rã  rÒ  Ú	tied_lists                                    r=   Ú
save_modelr0  Ò  s§  € ð
 €FØ€JÝ)¨,Ñ7Ô7€LØ˜$ÒÐÝÐ" C°'Ð:Ñ:Ô:ð 	%¸fØ—;’;‘=”=ˆDÝ”J˜tÑ$Ô$ˆFð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ùõ 
�˜	Ñ	"Ô	"ð )Ø”ˆ‰Ý	�˜Ñ	!Ô	!ñ )ØˆÝ˜U 8Ñ,Ô,ˆ
Ý˜j¨¸$Ñ?Ô?ˆØ˜$ÒÐÝ œgŸlšl¨;¸ÑFÔFˆOÝ(¨Ñ9Ô9ˆOð Ð"Ý!œwŸ|š|­B¬G¯OªO¸IÑ,FÔ,FÈÑVÔVˆOÝŒ7�>Š>˜/Ñ*Ô*ð 	)Ý�o s°WÐ=Ñ=Ô=ð )ÀØ—{’{‘}”}�Ýœ
 4Ñ(Ô(�ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð ð EÝ�%Ð!1¸IÐT`ð  tDð  	Eñ  	Eô  	Eð  	Eå˜u m°TÑ:Ô:Ðà'Ð'Ð'Ð'Ð'Ð'à€IØÐØ	×	Ò	Ñ	Ô	€BØ�TÒÐØˆØ!ÐØð 	4ð 	4ˆCØLð ð �Ø—<’< ‘?”?ð Ø˜X�s 1™vœv˜g˜Xœ�CØ�Eðð —x’x‘z”zð "ð "‘��!Ø—<’< Ñ$Ô$ð "Ø !�F˜1‘IøØ 4Ò'Ð'Ø+×1Ò1Ñ3Ô3ð 4ð 4‘C�A�aØ—|’| CÑ(Ô(ð 4Ø23Ð,¨QÑ/øøØˆØ˜tÒ#Ð#Ð8LÐ%5àˆ[‰]Œ]€Fð Ÿš™œð 	"ð 	"‰ˆˆfÝ˜fÑ%Ô%ˆØ—’˜c 4Ñ(Ô(ˆØ�DŠ=ˆ=Ø(×,Ò,¨U°BÑ7Ô7ˆIØ×Ò˜TÑ"Ô"Ð"Ø&/Ð˜UÑ#Ð#à!ˆF�4‰LØ!ˆI�c‰NˆNå
ÐÑÔ˜qÒ Ð Ø)Ð,<Ð>ˆ
à�aÒÐÝÐ)˜iÐ)Ð)Ñ*Ô*Ð*åÔ! &¨9ÐJZÐekð  zDð  Eñ  Eô  Eð  EØ�aÒÐÝÐ)�yÐ)Ð)Ð)Ñ*Ô*Ð*Ð*Ð*ð Ðs#   ¬)A!Á!A%Á(A%Å )FÆFÆFc                 ó"  — t          | t          ¦  «        r|}| }|} i }| d k    rt          d¦  «        ‚|d k    st          |¦  «        dk    rd}n|dd …         dk    r|dz    t	          | ¦  «        D �]}|dv rŒt          | |¦  «        }|dv rZ|}t          |d¦  «        rGt          |j        t          ¦  «        r-|j         	                    ¦   «         D ]\  }}|d k    r||||z   <   ŒŒvt          |t          j        j        ¦  «        r"|d	k    r||z   |v r|||d
z   |z   <   Œ®||||z   <   Œ·t          |t          ¦  «        rP| 	                    ¦   «         D ];\  }}t          |d¦  «        r&|                     t          ||z   |¦  «        ¦  «         Œ<�Œ|S )Nz%an object to analyze must be providedr   r»   r¾   rÛ   )Ú_execution_device)ÚpipelineÚpipeÚ
componentsrï   r!  r3  )r™   rý  rã   rÂ   ÚdirrS   rH   r5  rš   r›   rN   rO   ÚModuler
  Úextract_models)	r    r  Úbkpr4  r³   Úelementr3  r¢   rÆ   s	            r=   r8  r8  &  så  € Ý�#•sÑÔð ØˆØˆØˆà€DØ
ˆd‚{€{ÝÐ?Ñ@Ô@Ð@Øˆt‚|€|•s˜6‘{”{ A’~�~ØˆˆØ	���Œ˜Ò	Ð	Ø�#‰ˆå�C‘”ð Fñ FˆØÐ(Ð(Ð(ØÝ˜#˜dÑ#Ô#ˆØÐ(Ð(Ð(ØˆHÝ˜ <Ñ0Ô0ð 3µZÀÔ@SÕUYÑ5ZÔ5Zð 3Ø (Ô 3× 9Ò 9Ñ ;Ô ;ð 3ð 3‘H�A�uØ ’}�}Ø-2˜˜V q™[Ñ*øøÝ˜¥¤¤Ñ1Ô1ð 	F°d¸LÒ6HÐ6HØ˜‰} Ð$Ð$Ø-4��V˜c‘\ DÑ(Ñ*Ð*à'.��V˜d‘]Ñ$Ð$Ý˜¥Ñ&Ô&ð 	FØ%Ÿmšm™oœoð Fð F‘
��7Ý˜G jÑ1Ô1ð FØ—K’K¥°¸±
¸7Ñ!DÔ!DÑEÔEÐEøùð €Kr?   c                 ó   — | j         S rd   )r³   )rÆ   s    r=   Úget_model_namer<  K  s
   € ØŒ:Ðr?   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚHfHookc                 ó   — d| _         d S )Nr  )Úexecution_devicerˆ   s    r=   r‰   zHfHook.__init__O  s   € Ø &ˆÔÐÐr?   c                 ó   — |S rd   r—   ©rV   r<   s     r=   Ú	init_hookzHfHook.init_hookR  ó   € Øˆr?   c                 ó   — |S rd   r—   rB  s     r=   Údetach_hookzHfHook.detach_hookU  rD  r?   N)rZ   r[   r\   r‰   rC  rF  r—   r?   r=   r>  r>  N  sA   € € € € € ð'ð 'ð 'ðð ð ðð ð ð ð r?   r>  c                 ó„  — t          | dd ¦  «        }|r	|d         }n|                     dd ¦  «        }t          | dd ¦  «        }t          j        |¦  «        rœt          j        |¦  «        rˆ| j                             dd ¦  «        }|€|j        x}| _        |j        |k    rR|j        j        rF|j        r?|                     |j        ¦  «        }|r|f|dd …         z   }nt          |¦  «        }||d<   t          | dd ¦  «        }|s | j
        |i |¤ŽS t          | d¦  «        s	  | j        j        | j        | |g|¢R i |¤ŽS )NÚ_mm_lora_datar   rK   r:   Ú_mm_weight_dtyper   Ú_mm_manager)rS   ry   rN   rT   rŽ  r,   rI  rQ  rU   rš   Ú_mm_lora_old_forwardrH   rJ  Ú_lora_linear_forwardÚ_mm_lora_model)r<   re   rf   Ú
loras_dataÚinpr:   Úweight_dtypes          r=   Ú_mm_lora_linear_forwardrQ  X  sˆ  € Ý˜ °$Ñ7Ô7€JØð (Ø�1Œgˆˆà�jŠj˜ $Ñ'Ô'ˆÝ�V˜X tÑ,Ô,€FÝ„�sÑÔð 
&¥¤°Ñ 7Ô 7ð 
&Ø”×*Ò*Ð+=¸tÑDÔDˆØÐØ5;´\ÐAˆL˜6Ô2ØŒ9˜Ò$Ð$¨¬Ô)DÐ$ÈÔIgÐ$Ø—&’&˜œÑ&Ô&ˆCØð &Ø�v  Q R R¤Ñ(��å˜f™œ�Ø"%��w‘Ý˜ °$Ñ7Ô7€JØð <Ø*ˆvÔ*¨DÐ;°FÐ;Ð;Ð;Ý�6˜=Ñ)Ô)ð ØØ2ˆ6ÔÔ2ØÔØØðð 
ð	ð ð ð
 ðð ð r?   c                 óˆ   — t          | dd ¦  «        }|s | j        |i |¤ŽS  | j        j        | j        | || j        g|¢R i |¤ŽS )NrH  )rS   rK  rJ  Ú_lora_generic_forwardrM  )r<   re   rf   rN  s       r=   Ú_mm_lora_generic_forwardrT  x  s}   € Ý˜ °$Ñ7Ô7€JØð <Ø*ˆvÔ*¨DÐ;°FÐ;Ð;Ð;Ø3ˆ6ÔÔ3ØÔØØØÔ#ð	ð
 
ðð ð ð ðð ð r?   c                 óR   — | t           vrt                                d| ¦  «         dS dS )ai  provider: supports(module, x) -> bool for x of shape (tokens, in_features); key(module) -> the hashable format of the prepared
    activation, shared by the modules that use it, or None to use x itself; prepare(module, x) -> prepared activation;
    rows(module, prepared, start, stop) -> output rows [start, stop) with their bias, shape (tokens, stop - start).r   N)Ú_ROW_PROJECTIONSÚinsert©Úproviders    r=   Úregister_row_projectionrZ  Œ  s4   € ð Õ'Ð'Ð'Ý×Ò  8Ñ,Ô,Ð,Ð,Ð,ð (Ð'r?   c                 óP   — | t           v rt                                | ¦  «         d S d S rd   )rV  r–  rX  s    r=   Úunregister_row_projectionr\  ”  s0   € ØÕ#Ð#Ð#Ý×Ò Ñ)Ô)Ð)Ð)Ð)ð $Ð#r?   c                   ój   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )Ú_PlainRowProjectionz'Floating point torch.nn.Linear weights.c                 ól   — t          | ¦  «        t          j        j        u o| j        j        |j        k    S rd   )r¹  rN   rO   ÚLinearr:   r,   ©r<   Úxs     r=   Úsupportsz_PlainRowProjection.supports›  s(   € å�F‰|Œ|�uœxœÐ.ÐQ°6´=Ô3FÈ!Ì'Ò3QÐQr?   c                 ó   — d S rd   r—   )r<   s    r=   r£  z_PlainRowProjection.keyŸ  ó   € àˆtr?   c                 ó   — d S rd   r—   ra  s     r=   r†  z_PlainRowProjection.prepare£  re  r?   c                 óŽ   — | j         }t          j        j                             || j        ||…         |€d n	|||…         ¦  «        S rd   )r2   rN   rO   rP   Úlinearr:   )r<   rb  rŒ   r�   r2   s        r=   Úrowsz_PlainRowProjection.rows§  sH   € àŒ{ˆÝŒxÔ"×)Ò)¨!¨V¬]¸5À¸:Ô-FÐPTÐP\ÈÈÐbfÐglÐmqÐgqÔbrÑsÔsÐsr?   N)	rZ   r[   r\   r	  r²  rc  r£  r†  ri  r—   r?   r=   r^  r^  ™  sŒ   € € € € € Ø1Ð1ØðRð Rñ „\ðRð ðð ñ „\ðð ðð ñ „\ðð ðtð tñ „\ðtð tð tr?   r^  c                 ó\   ‡ ‡— t          ˆ ˆfd„t          t          gz   D ¦   «         d ¦  «        S )Nc              3   óH   •K  — | ]}|                      ‰‰¦  «        ¯|V — Œd S rd   )rc  )rX  rY  r<   rb  s     €€r=   rc  z"_row_projection.<locals>.<genexpr>±  s;   øè è € ÐuÐu˜hÐX`×XiÒXiÐjpÐrsÑXtÔXtÐu�ÐuÐuÐuÐuÐuÐur?   )rñ   rV  Ú_PLAIN_ROW_PROJECTIONra  s   ``r=   Ú_row_projectionrm  °  s7   øø€ ÝÐuÐuÐuÐuÐuÕ*:Õ>SÐ=TÑ*TÐuÑuÔuÐw{Ñ|Ô|Ð|r?   c                 ót  — t          | dd¦  «        }|sg S | j        }g }|j        D ]‘}|                     |dz   d¦  «        }|€Œ|d         € |d                              dd¦  «        dk    r dS | j                             |j        ||¦  «        |d	         z  }|d
k    r|                     |||f¦  «         Œ’|S )z«(adapter, data, scaling) of the module's active LoRAs as _lora_linear_forward applies them, or None when one of them has no
    row equivalent (DoRA merges weights, LoKr).rH  NÚ_GPUr  r¹   r¹  rµ  r¶  rk  r   )rS   rM  rS  ry   rJ  Ú_get_lora_scalingrT  rž   )r<   rN  rÆ   r  Úadapterrœ  Úscalings          r=   Ú_row_lora_adaptersrs  ´  sà   € õ ˜ °$Ñ7Ô7€JØð Øˆ	ØÔ!€EØ€HØÔ/ð 6ð 6ˆØ�~Š~˜g¨Ñ.°Ñ5Ô5ˆØˆ<ØØ�Œ7Ð $ q¤'§+¢+¨f°fÑ"=Ô"=ÀÒ"GÐ"GØ�4�4ØÔ$×6Ò6°uÔ7KÈUÐT[Ñ\Ô\Ð_cÐdeÔ_fÑfˆØ�aŠ<ˆ<Ø�OŠO˜W d¨GÐ4Ñ5Ô5Ð5øØ€Or?   c                   ó   — e Zd ZdZd„ ZdS )ÚLinearInputzmInput prepared once for linear modules computed by ranges of output rows (prepare_linear_input, linear_rows).c                 óR   — |||||f\  | _         | _        | _        | _        | _        d S rd   )r÷   rb  ÚpreparedÚ	providersrµ  )rV   r÷   rb  rw  rx  rµ  s         r=   r‰   zLinearInput.__init__Ê  s.   € ØGLÈaÐQYÐ[dÐfjÐGjÑDˆŒ
�D”F˜DœM¨4¬>¸4¼9¸9¸9r?   N)rZ   r[   r\   r	  r‰   r—   r?   r=   ru  ru  È  s.   € € € € € ØwÐwðkð kð kð kð kr?   ru  c                 ó†   ‡— ‰                      d‰j        d         ¦  «        Št          j        ˆfd„| D ¦   «         ¦  «        S )zhTrue when every module can be computed by ranges of output rows from x (*, in_features), LoRAs included.r¾   c              3   ó^   •K  — | ]'}t          |‰¦  «        d uot          |¦  «        d uV — Œ(d S rd   )rm  rs  )rX  r<   rb  s     €r=   rc  z(linear_rows_supported.<locals>.<genexpr>Ñ  s`   øè è € ð  Að  AÐnt�¨°Ñ2Ô2¸$Ð>ÐiÕCUÐV\ÑC]ÔC]ÐeiÐCið  Að  Að  Að  Að  Að  Ar?   )rü   r÷   rd  re  )r´  rb  s    `r=   Úlinear_rows_supportedr{  Î  s`   ø€ à	�	Š	�"�a”g˜b”kÑ"Ô"€AÝŒ<ð  Að  Að  Að  AÐxð  Añ  Aô  Añ  Aô  Að  Ar?   c                 ó\  — | d         }|                       ¦   «          |j        dd…         |                     d|j        d         ¦  «        }}i i i df\  }}}}|D ]¼}t          ||¦  «        x}	||<   |	                     |¦  «        }
|
€d}n|
|vr|	                     ||¦  «        ||
<   t          |¦  «        D ]^\  }}}|d                              dd¦  «        d	k    rd}Œ)|d         �-||d                              |j	        ¦  «        j
        z  |||f<   Œ_Œ½t          ||r|nd|||¦  «        S )
zôPrepares x, handed off in x_list, for modules computed by ranges of rows (check linear_rows_supported first): the activation of
    each weight format once, x @ A once per LoRA adapter. x itself is kept only for plain weights and diff adapters.r   Nr¾   FTr¹   r¹  rµ  rô  )r   r÷   rü   rm  r£  r†  rs  ry   rU   r,   ÚTru  )Úx_listr´  rb  r÷   rw  rx  rµ  Úkeep_xr<   rY  r£  rq  rœ  rr  s                 r=   Úprepare_linear_inputr€  Ô  sb  € ð 	ˆqŒ	€AØ
‡L‚L�N„N€NØŒw�s˜�sŒ|˜QŸYšY r¨1¬7°2¬;Ñ7Ô7ˆ1€EØ(*¨B°°EÐ(9Ñ%€Hˆi˜˜vØð Dð DˆÝ'6°v¸qÑ'AÔ'AÐAˆ�9˜VÑ$Ø�lŠl˜6Ñ"Ô"ˆØˆ;ØˆFˆFØ˜Ð Ð Ø$×,Ò,¨V°QÑ7Ô7ˆH�S‰MÝ&8¸Ñ&@Ô&@ð 	Dð 	DÑ"ˆG�T˜7Ø�AŒw�{Š{˜6 6Ñ*Ô*¨fÒ4Ð4Ø��Ø�a”Ð$Ø*+¨d°1¬g¯jªj¸¼Ñ.AÔ.AÔ.CÑ*C��f˜gÐ&Ñ'øð		Dõ
 �u 6Ð3˜a˜a¨t°X¸yÈ$ÑOÔOÐOr?   c                 óè  — |j         |          }|                     | ¦  «        }|                     | |€|j        n|j        |         ||¦  «        }t          | ¦  «        D ]þ\  }}}	|dd…         \  }
}}|d                              dd¦  «        dk    rD|                     |j        |||…                              |j	        ¦  «        j
        d|	¬¦  «         nM|
�K|                     |j        | |f         |||…                              |j	        ¦  «        j
        d|	¬¦  «         |�7|                     |||…                              |j	        ¦  «        |	¬	¦  «         Œÿ |j        g |j        ¢||z
  ‘R Ž S )
zqOutput rows [start, stop) of module(x) for a prepared input, LoRAs included, shape (*x.shape[:-1], stop - start).Nr  r¹   r¹  rµ  rô  r   ©Úbetarê  ©rê  )rx  r£  ri  rb  rw  rs  ry   Úaddmm_rU   r,   r}  rµ  Úadd_rù   r÷   )r<   Úlinear_inputrŒ   r�   rY  r£  r×  rq  rœ  rr  r8  r9  r:  s                r=   Úlinear_rowsrˆ  ê  s�  € àÔ% fÔ-€HØ
�,Š,�vÑ
Ô
€CØ
�-Š-˜°#°+ ¤ À<ÔCXÐY\ÔC]Ð_dÐfjÑ
kÔ
k€CÝ"4°VÑ"<Ô"<ð Fð FÑˆ��wØ!% b q b¤Ñˆ�˜Ø�Œ7�;Š;�v˜vÑ&Ô&¨&Ò0Ð0Ø�JŠJ�|”~ v¨e°D¨jÔ'9×'<Ò'<¸S¼YÑ'GÔ'GÔ'IÐPQÐY`ˆJÑaÔaÐaÐaØÐØ�JŠJ�|Ô(¨&°'Ð):Ô;¸VÀEÈ$ÀJÔ=O×=RÒ=RÐSVÔS\Ñ=]Ô=]Ô=_ÐfgÐovˆJÑwÔwÐwØÐØ�HŠH�V˜E $˜JÔ'×*Ò*¨3¬9Ñ5Ô5¸WˆHÑEÔEÐEøØˆ3Œ8Ð6�\Ô'Ð6¨°©Ð6Ð6Ð6Ð6r?   c                   óò  — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ ZdXd„Zd„ Zd„ Zd„ Zd„ ZdXd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdXd„Z d „ Z!d!„ Z"d"„ Z#d#„ Z$dYd%„Z%d&„ Z&d'„ Z'dZd(„Z(d)„ Z)d*„ Z*d+„ Z+d,„ Z,d-„ Z-d.„ Z.d/„ Z/e0j1         2                    ¦   «         dYd0„¦   «         Z3d1„ Z4e0j1         2                    ¦   «         d2„ ¦   «         Z5d3„ Z6d4d5œd6„Z7d7„ Z8d8„ Z9d9„ Z:d:e0j;        j<        fd;„Z=d<„ Z>d=e0j?        fd>„Z@	 	 	 	 d[d@eAfdA„ZBdXdB„ZCdCe0j?        d=e0j?        fdD„ZDdE„ ZEdF„ ZFdG„ ZGdXdH„ZHdI„ ZIdJ„ ZJdK„ ZKdL„ ZLdM„ ZMdN„ ZNdO„ ZOe0jP        j2        dP„ ¦   «         ZQdQ„ ZRdR„ ZSdYdS„ZTdT„ ZUdU„ ZVdYdV„ZWdW„ ZXdS )\ÚoffloadTc                 ó
  — g | _         g | _        i | _        ddgddgdœ| _        d| _        i | _        i | _        d| _        t          j	         
                    d¦  «        j        | _        d| _        i | _        i | _        i | _        i | _        t          j	                             t          j        d¦  «        ¦  «        | _        t          j	                             ¦   «         | _        d| _        i | _        d| _        t3          ¦   «         | _        i | _        i | _        t;          j        ¦   «         | _        i | _         d | _!        i | _"        d| _#        d| _$        i | _%        i | _&        i | _'        d | _(        d | _)        i | _*        d | _+        i | _,        i | _-        i | _.        i | _/        i | _0        tc          ¦   «         | _2        d | _3        dx| _4        | _5        i | _6        i | _7        g | _8        i | _9        d| _:        i | _;        i | _<        i | _=        i | _>        i | _?        i | _@        i | _A        i | _B        i | _C        i | _D        i | _E        d| _F        i | _G        i | _H        i | _I        i | _J        i | _K        i | _L        i | _M        | aNi | _O        d S )	Nr  r  r  ©r  r  r   Fr  r—   )PÚactive_modelsr§  ÚmodelsÚcotenants_maprª   Úblocks_of_modulesÚblocks_of_modules_sizesÚanyCompiledModulerN   r  Úget_device_propertiesÚtotal_memoryÚdevice_mem_capacityÚlast_reserved_mem_checkÚloaded_blocksÚprev_blocks_namesÚnext_blocks_namesÚpreloaded_blocks_per_modelÚdefault_streamr-   ÚStreamÚtransfer_streamÚasync_transfersÚparameters_refr·   r4  Ústagerr–  Ústate_recordsrX  ÚWeakSetÚstate_ringsÚstate_roomsÚprefetch_executorÚprefetch_futuresÚmain_waitingÚprefetch_windowÚprefetch_windowsÚplanned_windowsÚinflightr  Ú
ring_checkÚring_boundsÚring_on_demandr¦  Úblock_slotsÚ
slot_viewsÚtowers_per_modelÚshuttle_sizesr‚  Úlearned_linksÚauto_preloadÚauto_preload_requestedÚpreload_plansÚcuda_graphsÚexpert_residencyÚexpert_hooksÚcpu_computeÚcpu_compute_forcedÚ
cpu_blocksÚcpu_block_callsÚ	cpu_shortÚcpu_secondsÚcpu_samplesÚ	cpu_plansÚ
cpu_climbsÚcpu_pass_startÚcpu_rechecksÚcpu_streamedÚcpu_compute_entriesÚpool_modelsÚpool_limitsÚpool_rankedÚpool_othersÚpool_wantedÚ
pool_plansÚmapped_pagesÚmapped_bytesÚlast_offload_objÚ_type_wrappersrˆ   s    r=   r‰   zoffload.__init__ý  s’  € ØˆÔØ!#ˆÔØˆŒà-2Ð4DÐ,EØ/4°nÐ.Eðð ˆÔð ˆÔØ!#ˆÔØ')ˆÔ$Ø!&ˆÔÝ#(¤:×#CÒ#CÀAÑ#FÔ#FÔ#SˆÔ Ø&'ˆÔ$ØˆÔØ!#ˆÔØ!#ˆÔØ*,ˆÔ'Ý#œj×7Ò7½¼ÀVÑ8LÔ8LÑMÔMˆÔÝ$œz×0Ò0Ñ2Ô2ˆÔØ$ˆÔØ!ˆÔØ%&ˆÔ"Ý#‘o”oˆŒØ ˆÔØˆÔÝ"œ?Ñ,Ô,ˆÔØˆÔØ!%ˆÔØ "ˆÔØ!ˆÔØ ˆÔØ "ˆÔØ!ˆÔØˆŒØˆŒ	ØˆŒØˆÔØ"ˆÔØˆÔØˆÔØˆŒØ "ˆÔØˆÔÝ ™UœUˆÔØ ˆÔØ;@Ð@ˆÔ# dÔ&8ØˆÔØ "ˆÔØˆÔØˆÔØ"'ˆÔØˆŒØ!ˆÔØˆŒØˆÔØˆÔØˆŒØˆŒØ ˆÔØˆÔØˆÔØ#%ˆÔ ØˆÔØˆÔØˆÔØˆÔØˆÔØˆŒØˆÔØˆÔð  Ðà ˆÔÐÐr?   c                 óÐ  — |d k    rd|v rd }|€|n|dz   |z   }|| j         v r| j         |         }| j        |         }n>g }|| j         |<   d}|d k    r*|d k    rd n|dz   |z   }	|	| j        |<   |d k    s
|| j        |	<   |}
|                     d¬¦  «        D ]É\  }}t          |¦  «        rŒd}t          |¦  «        }| j                             |d ¦  «        }| 	                    |||d|f¦  «         t          |¦  «        }|r|t          |¦  «        z  }~n6|t          j        |j        ¦  «        |j                             ¦   «         z  z  }|€||z  }||f| j        |<   ŒÊ|                     d¬¦  «        D ]f\  }}t          |¦  «        }| j                             |d ¦  «        }| 	                    |||d|f¦  «         |€||j        j        z  }||f| j        |<   Œg|}|| j        |<   |S )Nrú  rÛ   r   FrÌ  T)r�  r‘  r˜  r™  r  r±  rä  rŸ  ry   rž   rØ  rá  rN   rA  rœ  rÞ  r  r  )rV   rË  Úblocks_namerÏ   Úprev_block_namerÎ   r	  Úblocks_paramsÚblocks_params_sizeÚprev_entry_nameÚbefr¢   r{  Ú
param_sizerã  Ú
tied_paramr©  Úafts                     r=   Úadd_module_to_blockszoffload.add_module_to_blocksJ  sp  € à˜ÒÐ ¨[Ð!8Ð!8ØˆKØ!,Ð!4�X�X¸(ÀS¹.È;Ñ:Vˆ
Ø˜Ô/Ð/Ð/Ø Ô2°:Ô>ˆMØ!%Ô!=¸jÔ!IÐÐàˆMØ1>ˆDÔ" :Ñ.Ø!"ÐØ˜TÒ!Ð!Ø*9¸TÒ*AÐ*A $ $ÈÐSVÉÐYhÑHh�Ø6E�Ô& zÑ2Ø&¨$Ò.Ð.Ø>H�DÔ*¨?Ñ;Ø ˆà×-Ò-°eÐ-Ñ<Ô<ð 	:ð 	:‰CˆAˆaÝ˜!‰}Œ}ð ØØˆJÝ! !Ñ$Ô$ˆCØÔ-×1Ò1°#°tÑ<Ô<ˆJØ× Ò  )¨Q°°5¸*Ð!EÑFÔFÐFÝ3°AÑ6Ô6ˆKØð JØÕ0°Ñ=Ô=Ñ=�
Ø�Kà�eœk¨!¬&Ñ1Ô1°A´F×4GÒ4GÑ4IÔ4IÑIÑI�
ð Ð!Ø" zÑ1Ð"Ø,5°q¨>�Ô# CÑ(øà×+Ò+°EÐ+Ñ:Ô:ð 	:ð 	:‰DˆAˆqÝ! !Ñ$Ô$ˆCØÔ-×1Ò1°#°tÑ<Ô<ˆJØ× Ò  9¨a°°D¸*Ð"EÑGÔGÐGØÐ!Ø" a¤f¤mÑ3Ð"Ø,5°q¨>�Ô# CÑ(øà ˆð 4FˆÔ$ ZÑ0ð "Ð!r?   c                 óP  — t                                | |¦  «        r:t                                | |¦  «        d u p|                      |¦  «        d         d u S | j                             |d ¦  «        }|€3t          j        d„ | j        |         D ¦   «         ¦  «        x}| j        |<   |S )NrÙ   c              3   óZ   K  — | ]&\  }}}}}|d u ot          |¦  «        t          k    V — Œ'd S rd   )rÃ  rb  )rX  r!  r{  rÙ  s       r=   rc  z(offload.needs_staging.<locals>.<genexpr>Š  s‘   è è € ð  CDð  CDñ  G]ð  GHð  JKð  MNð  PQð  S]À:ÐQUÐCUð  DBÕZjÐklÑZmÔZmõ  rBò  [Bð  CDð  CDð  CDð  CDð  CDð  CDr?   )	Ú_poolrc  r¡  Ú_block_itemsr–  ry   rd  rÎ  r�  )rV   r	  Úneedss      r=   Úneeds_stagingzoffload.needs_staging…  sÕ   € Ý�>Š>˜$ 
Ñ+Ô+ð 	eÝ—;’;˜t ZÑ0Ô0°DÐ8Ðd¸D×<MÒ<MÈjÑ<YÔ<YÐZ[Ô<\Ð`dÐ<dÐdØÔ#×'Ò'¨
°DÑ9Ô9ˆØˆ=Ý6>´lð  CDð  CDð  aeô  awð  xBô  aCð  CDñ  CDô  CDñ  7Dô  7Dð  DˆE�DÔ'¨
Ñ3Øˆr?   c                 óš   — | j         �| j         j                             |¦  «        nd }|�|j        n| j                             |d¦  «        S r…   )r´  Úplansry   Ú
state_roomr¤  )rV   rË  r�  s      r=   rä  zoffload.state_room�  sP   € ð 9=Ô8IÐ8UˆtÔ Ô&×*Ò*¨8Ñ4Ô4Ð4Ð[_ˆØ"&Ð"2ˆtŒˆ¸Ô8H×8LÒ8LÈXÐWXÑ8YÔ8YÐYr?   c                 óN   ‡— t          j        ˆfd„| j        D ¦   «         ¦  «        S )Nc              3   ó<   •K  — | ]}|j         ‰k    ¯|j        V — Œd S rd   )rË  Úresident_bytes)rX  r  rË  s     €r=   rc  z&offload.state_bytes.<locals>.<genexpr>–  s5   øè è € ÐjÐj°DÐPTÔP]ÐaiÒPiÐPi˜DÔ/ÐPiÐPiÐPiÐPiÐjÐjr?   )rd  rà  r£  ©rV   rË  s    `r=   Ústate_byteszoffload.state_bytes”  s+   ø€ åŒ|ÐjÐjÐjÐj¸DÔ<LÐjÑjÔjÑjÔjÐjr?   c                 óL   — | j         �| j                              |¦  «         d S d S rd   )r´  Úon_state_changerè  s     r=   Ústate_changedzoffload.state_changed˜  s0   € àÔÐ(ØÔ×-Ò-¨hÑ7Ô7Ð7Ð7Ð7ð )Ð(r?   c                 óü   — | j         �| j         j                             |¦  «        nd }|�| j                              ||¦  «         d S t	          d| j                             |d¦  «        |z
  ¦  «        | j        |<   d S r…   )r´  rã  ry   Úon_state_pressurer  r¤  )rV   rË  r¬  r�  s       r=   Ústate_pressurezoffload.state_pressure�  s†   € ð 9=Ô8IÐ8UˆtÔ Ô&×*Ò*¨8Ñ4Ô4Ð4Ð[_ˆØÐØÔ×/Ò/°°hÑ?Ô?Ð?Ð?Ð?å),¨Q°Ô0@×0DÒ0DÀXÈqÑ0QÔ0QÐT\Ñ0\Ñ)]Ô)]ˆDÔ˜XÑ&Ð&Ð&r?   c                 óÆ  ‡ ‡— ‰ j                              ‰d ¦  «        }|€Áˆfd„‰ j        D ¦   «         }t          ˆ fd„|D ¦   «         d¬¦  «        }t	          |¦  «        dk    o)‰ j        d up t          j        ˆ fd„|D ¦   «         ¦  «         }‰ j                             ‰‰ j	        €dn‰ j	        ¦  «        }|sdn|dz
  |z  t          ‰ j        z  k    r|nd}|‰ j         ‰<   |S )Nc                 óD   •— g | ]}|                      ‰d z   ¦  «        ¯|‘ŒS ©rÛ   rù  ©rX  r¡  rË  s     €r=   rZ  z1offload.model_prefetch_window.<locals>.<listcomp>«  s3   ø€ ÐeÐeÐe ÀE×DTÒDTÐU]Ð`cÑUcÑDdÔDdÐe�uÐeÐeÐer?   c              3   ó2   •K  — | ]}‰j         |         V — Œd S rd   ©r‘  ©rX  r¡  rV   s     €r=   rc  z0offload.model_prefetch_window.<locals>.<genexpr>¬  s+   øè è € ÐTÐTÀ5˜4Ô7¸Ô>ÐTÐTÐTÐTÐTÐTr?   r   ©Údefaultc              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rd   ©rá  rö  s     €r=   rc  z0offload.model_prefetch_window.<locals>.<genexpr>­  sT   øè è € ð  XHð  XHÐv{ÐX\×XjÒXjÐkpÑXqÔXqð  XHð  XHð  XHð  XHð  XHð  XHr?   r   )r©  ry   r�  r  rÂ   r  rd  re  rª  r¨  ÚPREFETCH_VRAM_SHAREr•  )rV   rË  Úwindowrå  rª  Ú	pipelinedÚplanneds   ``     r=   Úmodel_prefetch_windowzoffload.model_prefetch_window¦  s\  øø€ ð Ô&×*Ò*¨8°TÑ:Ô:ˆØˆ>ØeÐeÐeÐe¨$Ô*@ÐeÑeÔeˆGÝÐTÐTÐTÐTÈGÐTÑTÔTÐ^_Ð`Ñ`Ô`ˆGÝ˜G™œ qÒ(ð  I¨d¬i¸tÐ.Cð  /HÍ8Ì<ð  XHð  XHð  XHð  XHð  @Gð  XHñ  XHô  XHñ  LHô  LHð  HHˆIØÔ*×.Ò.¨x¸dÔ>RÐ>Z¸¸Ð`dÔ`tÑuÔuˆGØ'ð  I�Q�Q¸À1¹ÈÑ8OÕSfÐimô  jBñ  TBò  9Bð  9B¨W¨Wð  HIˆFØ.4ˆDÔ! (Ñ+Øˆr?   c                 ó&  — | j         €Dt          ddt          j        j        t          j                             ¦   «         f¬¦  «        | _          | j         j        t          t          j        ¦   «         t          j	        ¦   «         |g|¢R Ž | j
        |<   d S )Nr   Úmmgp_prefetchr  )r¥  r   rN   r  r  r  r+  r½  r…  Úis_grad_enabledr¦  )rV   r	  r¼  re   s       r=   Úsubmit_prefetchzoffload.submit_prefetch³  sØ   € ØÔ!Ð)Ý%7ÀAÐZiÕw|ô  xBô  xMõ  Y^ô  Yc÷  Yrò  Yrñ  Ytô  Ytð  Xvð  &wñ  &wô  &wˆDÔ"Ø,I¨DÔ,BÔ,IÕJ\Õ^cÔ^}Ñ^Ô^õ  BGô  BWñ  BYô  BYð  []ð  -eð  `dð  -eð  -eð  -eˆÔ˜jÑ)Ð)Ð)r?   Nc                 óð   — |€t          | j        ¦  «        n|| j        v r|gng }|rOd| _        	 |D ].}| j                             |¦  «                             ¦   «          Œ/	 d| _        d S # d| _        w xY wd S r  )r�   r¦  r§  r•  r;  )rV   r	  rå  r¡  s       r=   Úwait_prefetchzoffload.wait_prefetch¸  s³   € Ø1;Ð1C•$�tÔ,Ñ-Ô-Ð-ÐYcÐgkÔg|ÐY|ÐY|È*ÈÈð  CEˆØð 	*Ø $ˆDÔð*Ø$ð >ð >�EØÔ)×-Ò-¨eÑ4Ô4×;Ò;Ñ=Ô=Ð=Ð=ð>ð %*�Ô!Ð!Ð!ø E�Ô!Ð)Ð)Ð)Ð)ð	*ð 	*s   ¯1A* Á*	A3c                 óð  ‡‡— | j                              |d¦  «        }|r| j                             |d¦  «        nd}| j        �|s|                      |¦  «         t
          j                             ¦   «         }|| j        v ry| j         	                    |¦  «        }| 
                    t          |t
          j        j        ¦  «        r|n|                     ¦   «         ¦  «         |                      ||¦  «         n�| j        r| j                             |¦  «         |                      | j        ||¦  «        }| 
                    t          |t
          j        j        ¦  «        r|n|                     ¦   «         ¦  «         n|                      |||¦  «         || j        |         |hg f\  }}	}
Š|	dk    r…|| j                             |d ¦  «        }}|�)||
v s%|| j        v r| j        |         | j        |         k    rn<|
                     |¦  «         |r||vrŒk|	dz  }	‰                     |¦  «         |	dk    °…|dz   Šˆˆfd„| j        D ¦   «         D ]-}|                      ||t7          ‰¦  «        d …         ¦  «         Œ.‰D ]r}|| j        vrg| j        dk    r8t;          j        d|› d	| j        |                               ¦   «         › d
�¦  «         |                      | j        ||¦  «        | j        |<   Œsd S )NFr—   r   r   rÛ   c                 óF   •— g | ]}|                      ‰¦  «        ¯|‰v¯|‘ŒS r—   rù  )rX  r¡  r  Úwanteds     €€r=   rZ  z+offload._load_pipelined.<locals>.<listcomp>å  s8   ø€ ÐkÐkÐk ¸%×:JÒ:JÈ6Ñ:RÔ:RÐkÐW\ÐdjÐWjÐWj�eÐWjÐWjÐWjr?   rÙ   úPrefetching model ú (ú) in GPU)!r¾  ry   rÅ  r  Ú_schedule_ringrN   r  Úcurrent_streamr«  r•  Ú
wait_eventr™   rO  r;  Ú_ensure_lorasÚshared_weight_streamr�  Úwait_streamÚ	_transferr©  r™  r³  r‘  r²  r�  rž   Úgpu_unload_blocksrÂ   rª   r   r‘  rŽ  Ú	_get_name)rV   rË  r	  Ú
cpu_to_gpuÚshortÚstreamedÚconsumerrþ  Ú
next_entryrü  rr  Ú
prev_entryr�  r  r  s                @@r=   Ú_load_pipelinedzoffload._load_pipelinedÂ  sY  øø€ ð ”×"Ò" 8¨UÑ3Ô3ˆØ:?ÐG�4Ô$×(Ò(¨°2Ñ6Ô6Ð6ÀRˆØŒ9Ð ¨Ð Ø×Ò 
Ñ+Ô+Ð+Ý”:×,Ò,Ñ.Ô.ˆØ˜œÐ&Ð&Ø”}×(Ò(¨Ñ4Ô4ˆHØ×Ò­J°xÅÄÔAQÑ,RÔ,RÐ i  ÐX`×XgÒXgÑXiÔXiÑjÔjÐjØ×Ò˜x¨Ñ4Ô4Ð4Ð4àÔ(ð Að Ô$×0Ò0°Ñ:Ô:Ð:ØŸ>š>¨$Ô*>À
ÈJÑWÔW�Ø×#Ò#µ
¸8ÅUÄZÔEUÑ0VÔ0VÐ$m H HÐ\d×\kÒ\kÑ\mÔ\mÑnÔnÐnÐnà—’˜x¨°ZÑ@Ô@Ð@Ø+5°tÔ7LÈXÔ7VÐYcÐXdÐfhÐ+hÑ(ˆ
�F˜D &Ø�qŠjˆjØ%/°Ô1G×1KÒ1KÈJÐX\Ñ1]Ô1]˜
ˆJØÐ! Z°4Ð%7Ð%7¸:ÈÔI[Ð;[Ð;[Ð`dÔ`|ð  ~Hô  aIð  LPô  L^ð  _gô  Lhò  ahð  ahØØ�HŠH�ZÑ Ô Ð Øð ˜¨8Ð3Ð3ØØ�a‰KˆFØ�MŠM˜*Ñ%Ô%Ð%ð �qŠjˆjð ˜C‘ˆØkÐkÐkÐkÐk¨¬ÐkÑkÔkð 	Bð 	BˆEØ×"Ò" 8¨Uµ3°v±;´;°<°<Ô-@ÑAÔAÐAÐAØ ð 	ið 	iˆJØ ¤Ð.Ð.ØÔ$¨Ò)Ð)Ý”JÐm°JÐmÐmÀ$Ä+ÈhÔBW×BaÒBaÑBcÔBcÐmÐmÐmÑnÔnÐnØ,0¯NªN¸4Ô;OÐQ[Ð]gÑ,hÔ,h�”˜jÑ)øð		ið 	ir?   c           	      óT  ‡ ‡‡‡— ‰ j         €d n‰ j                              |¦  «        }|�
|d         €d }‰                      ‰||�
|d         r|nd ¦  «        }|€]‰ j         €V‰‰ j        u rM‰                      |¦  «        r8‰ j        |         Šˆˆˆ ˆfd„}‰                      ||¦  «         ‰ j        |         S  ‰‰‰ j        |         |¬¦  «         |€‰                     ¦   «         S |d         }t          |¦  «        dk    r|d         ndD ]G\  }}	}
}}| 
                    |	|
‰ j         j        |d         |z   |d         |z   |z   …         ‰¦  «         ŒHt          j                             d¬¦  «        }|                     ‰¦  «         ‰ j                              |d         |¦  «         |S )	Nr   r   c                  óP   •—  ‰‰‰ ‰j         ¦  «         ‰                     ¦   «         S rd   )Úis_main_waitingÚrecord_event)rÔ  r  rV   Ústreams   €€€€r=   Ústaged_transferz*offload._transfer.<locals>.staged_transferö  s,   ø€ Ø�
˜6 =°$Ô2FÑGÔGÐGØ×*Ò*Ñ,Ô,Ð,r?   )Úmovedr  r—   T)Úblocking)r  r  Ú_move_blockr�  rá  r�  r  r¦  r  rÂ   Útransfer_stagedrç  rN   r  rO  rP  rK  )rV   r   r	  r  Ústagedr"  r!  rý  r  rF  r  r  ré  ÚeventrÔ  s   `` `          @r=   r  zoffload._transferí  sø  øøøø€ ð œÐ*��°´	·²¸zÑ0JÔ0JˆØÐ &¨¤)Ð"3ØˆFØ× Ò  ¨¸vÐ?QÐV\Ð]^ÔV_Ð?Q°V°VÐeiÑjÔjˆØˆ=˜TœYÐ.°6¸TÔ=QÐ3QÐ3QÐVZ×VhÒVhÐisÑVtÔVtÐ3QØ Ô2°:Ô>ˆMð-ð -ð -ð -ð -ð -ð -ð -ð × Ò  ¨_Ñ=Ô=Ð=ØÔ(¨Ô4Ð4Øˆ
�6˜4Ô1°*Ô=ÀUÐKÑKÔKÐKØˆ>Ø×&Ò&Ñ(Ô(Ð(Ø˜”ˆÝBEÀfÁ+Ä+ÐPQÂ/À/°V¸A´Y°YÐWYð 	|ð 	|Ñ1ˆD�%˜ V¨TØ× Ò  ¨
°D´IÔ4DÀVÈAÄYÐQWÑEWÐX^Ð_`ÔXaÐdjÑXjÐmqÑXqÐEqÔ4rÐtzÑ{Ô{Ð{Ð{Ý”
× Ò ¨$Ð Ñ/Ô/ˆØ�Š�VÑÔÐØŒ	×Ò˜& œ) UÑ+Ô+Ð+Øˆr?   c                 óø  ‡‡— |€$|                       |¦  «        \  }\  }Š}}|r|€d S n
|\  }}\  }Š}t          r|                      ||¦  «        nd }	|                     dd¦  «        \  }
}|	€8| j        �1| j                             |
|¦  «        r|                      |
|¦  «        nd }t          j         	                    |¦  «        5  |	�| j
        |
         |	         d         n$|�|n t          j        |t          j        d¬¦  «        Š|€=|D ]9\  }}‰|||                     ¦   «         z   …                              |d¬¦  «         Œ:n@‰d |…                              | j        j        |d         |d         |z   …         d¬¦  «         d d d ¦  «         n# 1 swxY w Y   |	€ˆˆfd„|D ¦   «         S | j                             ||	fd ¦  «        }|�
|d         |ur|ˆˆfd	„|D ¦   «         fx}| j        ||	f<   |d         S )
NrÛ   r   r   r  r[  TrY  c           	      ó<   •— i | ]\  }}|t          |‰‰d ¦  «        “ŒS rL  ©ré  ©rX  r¼  r  rç  rª  s      €€r=   r¨  z'offload._move_block.<locals>.<dictcomp>  s-   ø€ ÐSÐSÐSÁÀÈ�E�: a¨°¸!Ñ<Ô<ÐSÐSÐSr?   c           	      ó<   •— i | ]\  }}|t          |‰‰d ¦  «        “ŒS rL  r*  r+  s      €€r=   r¨  z'offload._move_block.<locals>.<dictcomp>  sL   ø€ ð  CCð  CCð  CCÑpxÐpuÐwxÀ5Í*ÐUVÐX^Ð`gÐijÑJkÔJkð  CCð  CCð  CCr?   )rß  ÚCACHED_BLOCK_VIEWSÚ
_take_slotrÁ   r´  Ú	keeps_allÚ
adopt_slotrN   r  r   r¯  r  rû   rA  rú   r  rç  r°  ry   )rV   r   r	  r&  r›   r!  r  rO  rý  rU  rË  Ú
block_nameÚadoptedr  r1  Úviewsrç  rª  s                   @@r=   r$  zoffload._move_block  s  øø€ ð ˆ>Ø37×3DÒ3DÀZÑ3PÔ3PÑ0ˆEÑ'�A�w ¨Øð ˜G˜OØ�tð ,ð 39Ñ/ˆF�EÑ/˜A˜w¨Ý6HÐRˆt�Š˜z¨6Ñ2Ô2Ð2ÈdˆØ)×/Ò/°°QÑ7Ô7Ñˆ�*Ø7;°|ÈÔHYÐHeÐjnÔj{÷  kFò  kFð  GOð  Q[ñ  k\ô  k\ÐHe�$—/’/ (¨FÑ3Ô3Ð3ð  bfˆÝŒZ×Ò˜vÑ&Ô&ð 	ið 	iØ<@Ð<L�TÔ% hÔ/°Ô5°aÔ8Ð8Ð]dÐ]pÐRYÐRYÕv{ô  wBð  CIõ  QVô  Q\ð  ekð  wlñ  wlô  wlˆFØˆ~Ø&-ð \ð \‘N�F˜FØ˜6 &¨6¯<ª<©>¬>Ñ"9Ð9Ô:×@Ò@ÀÐVZÐ@Ñ[Ô[Ð[Ð[ð\ð �w˜�w”×%Ò% d¤iÔ&6°v¸a´yÀÈÄÈVÑASÐ7SÔ&TÐcgÐ%ÑhÔhÐhð	ið 	ið 	iñ 	iô 	ið 	ið 	ið 	ið 	ið 	ið 	iøøøð 	ið 	ið 	ið 	ið ˆ<ØSÐSÐSÐSÐSÈUÐSÑSÔSÐSØ”×#Ò# Z°Ð$6¸Ñ=Ô=ˆØˆ=˜E !œH¨EÐ1Ð1Ø;@ð  CCð  CCð  CCð  CCð  CCð  }Bð  CCñ  CCô  CCð  ;Dð  DˆE�D”O Z°Ð$6Ñ7Ø�QŒxˆs   ÃC FÆFÆFc                 óZ  ‡ ‡‡‡	‡
— |                      dd¦  «        \  Š}|‰ j        ‰         v s"‰ j        �‰ j                             ‰|¦  «        rd S ‰ j                             ‰d ¦  «        }|€“t          ˆfd„‰ j        ‰         D ¦   «         ¦  «        Š
ˆˆ ˆ
fd„‰ j        D ¦   «         }t          ˆ fd„|D ¦   «         d¬¦  «        Šˆfd„t          ‰                      ‰¦  «        dz   ¦  «        D ¦   «         x}‰ j        ‰<   ||d         d	         k    rWt          |¦  «        D ]E\  Š	}|d         €8|d         �0d |d<   ˆˆ	fd
„‰ j                             ¦   «         D ¦   «         ‰ _        ŒFd S t          |¦  «        D ]°\  Š	}|d         €£|d         €’t          j        d¦  «        5  t          j                             ‰ j        ¦  «        5  t          j        |d	         t          j        d¬¦  «        |d<   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   ||d<   ‰	c S Œ±d S )NrÛ   r   c              3   ó(   •K  — | ]}‰d z   |z   V — ŒdS ©rÛ   Nr—   ©rX  r³   rË  s     €r=   rc  z%offload._take_slot.<locals>.<genexpr>)  s,   øè è € Ð]Ð]°T˜8 c™>¨DÑ0Ð]Ð]Ð]Ð]Ð]Ð]r?   c                 ó�   •— g | ]B}|                      ‰¦  «        ¯|                     d d¦  «        d         ‰j        ‰         v¯@|‘ŒCS ©rÛ   r   )rÀ   rÁ   rš  )rX  r¡  rË  rV   Útowerss     €€€r=   rZ  z&offload._take_slot.<locals>.<listcomp>*  sŠ   ø€ ð  jð  jð  j ÀE×DTÒDTÐU[ÑD\ÔD\ð  jÐaf×alÒalÐmpÐrsÑatÔatÐuvÔawð  @Dô  @_ð  `hô  @ið  bið  bi�uð  bið  bið  bir?   c              3   óZ   •K  — | ]%}‰                      |¦  «        d          d         V — Œ&dS ©r   rÙ   N©rß  rö  s     €r=   rc  z%offload._take_slot.<locals>.<genexpr>+  s;   øè è € ÐLÐL¸5˜×)Ò)¨%Ñ0Ô0°Ô3°AÔ6ÐLÐLÐLÐLÐLÐLr?   r   r÷  c                 ó   •— g | ]}d d ‰g‘ŒS rd   r—   ©rX  r!  ré  s     €r=   rZ  z&offload._take_slot.<locals>.<listcomp>,  s    ø€ Ð1~Ð1~Ð1~È°4¸¸tÐ2DÐ1~Ð1~Ð1~r?   rÙ   c                 óp   •— i | ]2\  }}|d          ‰k    s|d                               ‰dz   ¦  «        °/||“Œ3S )r   r   rÛ   rù  )rX  r£  r3  rË  r8  s      €€r=   r¨  z&offload._take_slot.<locals>.<dictcomp>1  sw   ø€ ð  '[ð  '[ð  '[±j°c¸5Ð_bÐcdÔ_eÐipÒ_pÐ_pÐx{Ð|}Ôx~÷  yJò  yJð  KSð  VYñ  KYñ  yZô  yZÐ_p s¨EÐ_pÐ_pÐ_pr?   Fr  r[  )rÁ   rš  r´  Ú
own_bufferr¯  ry   rÐ  r±  r˜  r  r*  rÿ  r¹  r°  r›   rN   r†  r  r   r�  r  rû   )rV   r	  r  r1  r6  ÚswappedrU  rË  ré  r8  r:  s   `      @@@@r=   r.  zoffload._take_slot!  s_  øøøøø€ ð  *×/Ò/°°QÑ7Ô7Ñˆ�*Ø˜Ô8¸ÔBÐBÐBÀdÔFWÐFcÐhlÔhy÷  iEò  iEð  FNð  PZñ  i[ô  i[ÐFcØ�4ØÔ ×$Ò$ X¨tÑ4Ô4ˆØˆ=ÝÐ]Ð]Ð]Ð]¸TÔ=RÐS[Ô=\Ð]Ñ]Ô]Ñ]Ô]ˆFð jð  jð  jð  jð  jð  j¨$Ô*@ð  jñ  jô  jˆGÝÐLÐLÐLÐLÀGÐLÑLÔLÐVWÐXÑXÔXˆDØ1~Ð1~Ð1~Ð1~ÍeÐTX×TnÒTnÐowÑTxÔTxÐ{|ÑT|ÑN}ÔN}Ð1~Ñ1~Ô1~Ð~ˆE�DÔ$ XÑ.Ø�E˜!”H˜Q”KÒÐÝ!*¨5Ñ!1Ô!1ð [ð [‘�˜Ø˜”7�? t¨A¤wÐ':Ø"�D˜‘Gð '[ð  '[ð  '[ð  '[ð  '[ÀDÄO×DYÒDYÑD[ÔD[ð  '[ñ  '[ô  '[�D”OøØ�4Ý& uÑ-Ô-ð 	ð 	‰MˆG�TØ�AŒwˆØ˜”7�?õ Ô-¨eÑ4Ô4ð Yð Yµe´j×6GÒ6GÈÔH\Ñ6]Ô6]ð Yð YÝ"'¤+¨d°1¬g½U¼[ÐQWÐ"XÑ"XÔ"X˜˜Q™ðYð Yð Yñ Yô Yð Yð Yð Yð Yð Yð Yøøøð Yð Yð Yð Yð Yð Yð Yñ Yô Yð Yð Yð Yð Yð Yð Yøøøð Yð Yð Yð Yà$��Q‘Ø���ð ð ˆts6   Æ#%HÇ+G?Ç3HÇ?HÈHÈHÈHÈH	ÈH	c                 óN  ‡‡‡‡— | j                              ‰¦  «        }|sdS ˆfd„Št          ˆˆfd„t          |¦  «        D ¦   «         d¦  «        }|€dS |                     |¦  «        d         }ˆfd„| j                             ¦   «         D ¦   «         | _        |s| j         ‰= |S )a>  A slot of the streamed blocks of a model that leaves the rotation to become the buffer of a block kept in VRAM, while every block
        of the model is to be kept: the slots would serve no streamed block any more, the kept blocks take their memory instead of new
        buffers beside them. entry_name: the slot holding that block, otherwise (None) an idle one, for a block of nbytes at least 3/4 of the
        slot's size (the slots are sized for the largest block: a much smaller block would leave most of it unused). Returns its buffer,
        None if there is none.Nc                 ób   •— | d         d uo$d| d         z  d‰z  cxk    od| d         z  k    nc S )Nr   r  rÙ   rk  r—   )rU  r  s    €r=   rº  z$offload.adopt_slot.<locals>.<lambda>G  sJ   ø€ ˜D œG¨4Ð/Ð\°A¸¸Q¼±KÀ1ÀvÁ:Ð4\Ð4\Ò4\Ð4\ÐQRÐUYÐZ[ÔU\ÑQ\Ò4\Ð4\Ð4\Ð4\€ r?   c              3   óP   •K  — | ] \  }}|d          ‰k    ¯ ‰|¦  «        ¯|V — Œ!dS rz  r—   )rX  rå  rU  r	  Úfitss      €€r=   rc  z%offload.adopt_slot.<locals>.<genexpr>H  sG   øè è € ÐbÐb™g˜a ¸TÀ!¼WÈ
Ò=RÐ=RÐW[ÐW[Ð\`ÑWaÔWaÐ=R˜Ð=RÐ=RÐ=RÐ=RÐbÐbr?   r   c                 óX   •— i | ]&\  }}|d                                ‰dz   ¦  «        °#||“Œ'S )r   rÛ   rù  )rX  r£  r3  rË  s      €r=   r¨  z&offload.adopt_slot.<locals>.<dictcomp>M  s@   ø€ ÐyÐyÐy©*¨#¨uÐWZÐ[\ÔW]×WhÒWhÐiqÐtwÑiwÑWxÔWxÐy˜3 ÐyÐyÐyr?   )r¯  ry   rñ   r¹  r•  r°  r›   )rV   rË  r  r	  r6  r8  rç  rF  s    ```   @r=   r0  zoffload.adopt_slot>  sÊ   øøøø€ ð Ô ×$Ò$ XÑ.Ô.ˆØð 	Ø�4Ø\Ð\Ð\Ð\ˆÝÐbÐbÐbÐbÐb­°5Ñ)9Ô)9ÐbÑbÔbÐdhÑiÔiˆØˆ?Ø�4Ø—’˜7Ñ#Ô# AÔ&ˆàyÐyÐyÐy¸¼×8MÒ8MÑ8OÔ8OÐyÑyÔyˆŒØð 	+ØÔ  Ð*Øˆr?   c                 ó¤   — | j                              |                     dd¦  «        d         d ¦  «        }|�|D ]}|d         |k    rd |d<   Œd S d S )NrÛ   r   r   )r¯  ry   rÁ   )rV   r	  r6  rU  s       r=   Ú
_free_slotzoffload._free_slotR  so   € ØÔ ×$Ò$ Z×%5Ò%5°c¸1Ñ%=Ô%=¸aÔ%@À$ÑGÔGˆØÐØð #ð #�Ø˜”7˜jÒ(Ð(Ø"�D˜‘Gøð Ðð#ð #r?   c                 óæ  — t          j        d„ | j        j                             ¦   «         D ¦   «         ¦  «        }| j                             ||fd ¦  «        }|�€Lg t                               | |¦  «         }}t          | j
        |         ¦  «        D ]¯\  }\  }}}}}	t          |¦  «        t          j        j        u r|j        n|}
|	€>| j        j                             t          |
¦  «        d ¦  «        durt!          |
¦  «        nd }|r7|                     ||
f¦  «         |ot          j        d„ |D ¦   «         ¦  «        }Œ°t'          ||¬¦  «        d }}|r>t          j        d¦  «        5  d„ |d         D ¦   «         }d d d ¦  «         n# 1 swxY w Y   |||fx}| j        ||f<   |d         €Bt                               | |¦  «        }|�%|j        |d         u r|d         |d         |j        fS |S )	Nc              3   ó"   K  — | ]
}|d u ¯dV — ŒdS )Fr   Nr—   )rX  rh  s     r=   rc  z'offload._block_items.<locals>.<genexpr>]  s.   è è € ÐdÐd dÐVZÐ^cÐVcÐVc ÐVcÐVcÐVcÐVcÐdÐdr?   Fc              3   ó>   K  — | ]}|                      ¦   «         V — Œd S rd   r]  r_  s     r=   rc  z'offload._block_items.<locals>.<genexpr>f  s,   è è € Ð4YÐ4YÈ$°T·^²^Ñ5EÔ5EÐ4YÐ4YÐ4YÐ4YÐ4YÐ4Yr?   )r�  c           	      óü   — g | ]y\  }}}}|t          j        d t           j        d¬¦  «                             |                     ¦   «         ||                     ¦   «                              ¦   «         z
  |f¦  «        f‘ŒzS ru  )rN   r  rû   rv  r›  rþ   )rX  rC  ré  r  r`  s        r=   rZ  z(offload._block_items.<locals>.<listcomp>j  sÛ   € ð  Rð  Rð  Rñ  mDð  mpð  rvð  x~ð  @D ­¬°A½U¼[ÐQVÐ(WÑ(WÔ(W×(\Ò(\Ð]a×]qÒ]qÑ]sÔ]sÐuxÐ{÷  |Pò  |Pñ  |Rô  |R÷  |[ò  |[ñ  |]ô  |]ñ  v]ð  `dð  _fñ  )gô  )gð   hð  Rð  Rð  Rr?   r   rÙ   r   )rd  rà  r   r9  ry  r¦  ry   rÞ  rc  r¹  r�  r¹  rN   rO   r‹  rœ  r!  rž   re  rž  r†  r¡  r  rO  )rV   r	  Údisabledr6  r›   Úpinnedrå  r!  r{  rÙ  r  r"  r  rO  r  s                  r=   rß  zoffload._block_itemsY  s�  € õ ”<ÐdÐd¨d¬kÔ.I×.PÒ.PÑ.RÔ.RÐdÑdÔdÑdÔdˆØÔ ×$Ò$ j°(Ð%;¸TÑBÔBˆØ‰=Ø¥E§N¢N°4¸Ñ$DÔ$DÐ D�6ˆEÝ/8¸Ô9OÐPZÔ9[Ñ/\Ô/\ð Zð ZÑ+�Ñ+�A�q˜!˜Q 
Ý" 1™gœg­¬Ô);Ð;Ð;�A”F�FÀ�Ø/9Ð/AÀdÄkÔFa×FeÒFeÕfjÐklÑfmÔfmÐosÑFtÔFtð  }Bð  GBð  GB�¨Ñ+Ô+Ð+ð  HL�Øð ZØ—L’L ! Q Ñ(Ô(Ð(Ø#ÐY­¬Ð4YÐ4YÐRXÐ4YÑ4YÔ4YÑ(YÔ(Y�FøÝ*¨5¸VÐDÑDÔDÀd�GˆFØð RÝÔ)¨%Ñ0Ô0ð Rð Rð Rð  Rð  HNð  OPô  HQð  Rñ  Rô  R�GðRð Rð Rñ Rô Rð Rð Rð Rð Rð Rð Røøøð Rð Rð Rð Rà@EÀvÈwÐ?WÐWˆE�DÔ$ j°(Ð%;Ñ<Ø�Œ8ÐÝ—[’[  zÑ2Ô2ˆFØÐ! f¤m°u¸Q´xÐ&?Ð&?Ø˜Q”x  q¤¨6¬>Ð9Ð9Øˆs   Å,FÆFÆFc                 ó  — | j         j        |t          ¦   «         }}}|                     dd¦  «        d         }|                      |¦  «        }|��±||v�r®|                     |¦  «         || j        v�ri|                      |¦  «        \  }}}	d„ | j         	                    |d¦  «        D ¦   «         }
t          j        d„ |
D ¦   «         ¦  «        }|r^|	€\||v rXt          j        sL| j                              |||t                               | |||                      |¦  «        ¦  «        ¦  «         n­|rn|	€l|d         | j         j        k    rV|d         |z   | j         j        k    r|
nd}
||d         |
r|ndz   z  }|dk     rd S | j                              ||||
¬¦  «         n=|
r;|| j         j        k    r+||z  }|dk     rd S | j                              |g d |
¬¦  «         | j         	                    |d ¦  «        }|�||v�°ªd S d S d S d S )	NrÛ   r   r   c                 ó^   — g | ]*\  }}||j         v ¯|||j        |         d          |j        f‘Œ+S rL  )ÚstoredÚrecordsr  )rX  r  rF  s      r=   rZ  z*offload._schedule_ring.<locals>.<listcomp>  sn   € ð  ^ð  ^ð  ^ÑT_ÐTXÐZ_ð  INð  RVô  R]ð  I]ð  I]˜$  t¤|°EÔ':¸1Ô'=¸t¼ÐOð  I]ð  I]ð  I]r?   r—   c              3   ól   K  — | ]/\  }}}}|                      ¦   «          t          z   t          z  V — Œ0d S rd   )rA  r  )rX  r!  r1  s      r=   rc  z)offload._schedule_ring.<locals>.<genexpr>€  sF   è è € Ð*xÐ*xÑ_nÐ_`ÐbcÐekÐmn¨f¯lªl©n¬n¨_ÅÑ-KÐ+LÍ{Ñ+ZÐ*xÐ*xÐ*xÐ*xÐ*xÐ*xr?   rÙ   )r  )r  ré  r‚  rÁ   Ú_pool_wantedr�  r«  rß  r¡  ry   rd  rà  rÞ  r\  r
  r†  Ú
_pool_planr™  )rV   r	  Úbudgetr¡  rr  rË  r  r›   r  rO  r  ré  s               r=   r  zoffload._schedule_ringr  si  € ð
 #œiœn¨j½#¹%¼%�t�ˆØ×#Ò# C¨Ñ+Ô+¨AÔ.ˆØ×"Ò" 8Ñ,Ô,ˆØÑ E°Ð$5Ñ$5Ø�HŠH�U‰OŒOˆOØ˜DœMÐ)Ñ)Ø)-×):Ò):¸5Ñ)AÔ)AÑ&��v˜wð ^ð  ^ÐcgÔcu×cyÒcyÐzð  BDñ  dEô  dEð  ^ñ  ^ô  ^�Ý&œlÐ*xÐ*xÐrwÐ*xÑ*xÔ*xÑxÔx�Øð E˜W˜_°¸&°°ÍÌ°Ø”I×&Ò& u¨e°V½U¿]º]È4ÐQYÐ[`Ðbf×bqÒbqÐrwÑbxÔbxÑ=yÔ=yÑzÔzÐzÐzØð 
E˜w˜°6¸!´9ÀÄ	ÄÒ3NÐ3NØ%+¨A¤Y°Ñ%<ÀÄ	ÄÒ%NÐ%N˜E˜EÐTV�EØ˜f Qœi¸%Ð+F¨;¨;ÀQÑGÑG�FØ ’z�zØ˜Ø”I×&Ò& u¨e°VÀ5Ð&ÑIÔIÐIÐIØð E˜{¨d¬i¬nÒ<Ð<Ø˜kÑ)�FØ ’z�zØ˜Ø”I×&Ò& u¨b°$¸eÐ&ÑDÔDÐDØÔ*×.Ò.¨u°dÑ;Ô;ˆEð) Ð E°Ð$5Ñ$5Ð$5Ð$5ÐÐÐ$5Ð$5ÐÐr?   c                 óš  ‡ ‡‡	‡
— ddl m} ‰ j        ‰         Š
‰ j                             ‰¦  «        }|�|d         t          ‰
¦  «        k    rø‰ j         €d n‰ j         j                             ‰¦  «        }|€xg }‰ j                             ‰¦  «        pdD ]M}‰dz   |z   Š	t          ˆˆ	fd„‰ j	        D ¦   «         ¦  «        }| 
                    ˆˆ fd„|D ¦   «         ¦  «         ŒN ||¦  «        }n!|j        t          |j        ¦  «        d …         }t          ‰
¦  «        ˆˆ
fd„t          |¦  «        D ¦   «         fx}‰ j        ‰<   |d         S )	Nr   )Úranked_blocksr   r—   rÛ   c              3   ó  •K  — | ]€}|                      ‰¦  «        ¯|t          ‰¦  «        d …                              ¦   «         ¯@t          |t          ‰¦  «        d …         ¦  «        |t          ‰¦  «        dz   d …         fV — Œ�d S r“  )rÀ   rÂ   Úisdigitrõ  )rX  r¡  rË  r  s     €€r=   rc  z'offload._pool_ranked.<locals>.<genexpr>�  sù   øè è € ð  $Cð  $CÐ^cð  HM÷  HXò  HXð  Y_ñ  H`ô  H`ð  $Cð  ejõ  knð  ouñ  kvô  kvð  kwð  kwô  ex÷  e@ò  e@ñ  eBô  eBð  $C¥S¨­s°6©{¬{¨|¨|Ô)<Ñ%=Ô%=¸uÅSÈÁ]Ä]ÐUVÑEVÐEWÐEWÔ?XÐ$Yð  $Cð  $Cð  $Cð  $Cð  $Cð  $Cr?   c                 ó@   •— g | ]\  }}|‰j         ‰d z   |z            f‘ŒS rò  rõ  )rX  r!  r³   rË  rV   s      €€r=   rZ  z(offload._pool_ranked.<locals>.<listcomp>ž  s8   ø€ Ð"uÐ"uÐ"uÑcjÐcdÐfj D¨$Ô*FÀxÐRUÁ~ÐX\ÑG\Ô*]Ð#^Ð"uÐ"uÐ"ur?   c                 ó(   •— g | ]}|‰v¯‰d z   |z   ‘ŒS rò  r—   )rX  r³   rË  Ú	preloadeds     €€r=   rZ  z(offload._pool_ranked.<locals>.<listcomp>¢  sT   ø€ ð  DRð  DRð  DRÐ^bÐ{ð  HQð  |Qð  |QÀHÈsÁNÐUYÑDYð  |Qð  |Qð  |Qr?   )r´  rY  rš  rÉ  ry   rÂ   rã  r±  r’  r‘  rž   ÚrankingÚothersr'  )rV   rË  rY  rä  r�  r:  rÍ   rÚ  r_  r  r^  s   ``       @@r=   Ú_pool_rankedzoffload._pool_ranked�  sÐ  øøøø€ ð 	0Ð/Ð/Ð/Ð/Ð/ØÔ3°HÔ=ˆ	ØÔ!×%Ò% hÑ/Ô/ˆØˆ>˜V AœY­#¨i©.¬.Ò8Ð8ØÔ,Ð4�4�4¸$Ô:KÔ:Q×:UÒ:UÐV^Ñ:_Ô:_ˆDØˆ|Ø�Ø"&Ô"7×";Ò";¸HÑ"EÔ"EÐ"KÈð wð w�JØ%¨™^¨jÑ8�FÝ#ð  $Cð  $Cð  $Cð  $Cð  $CÐgkô  hDð  $Cñ  $Cô  $Cñ  Cô  C�FØ—M’MÐ"uÐ"uÐ"uÐ"uÐ"uÐntÐ"uÑ"uÔ"uÑvÔvÐvÐvØ'˜-¨Ñ/Ô/��àœ,¥s¨4¬;Ñ'7Ô'7Ð'8Ð'8Ô9�Ý36°y±>´>ð  DRð  DRð  DRð  DRð  DRÕfnÐovÑfwÔfwð  DRñ  DRô  DRð  3Sð  SˆF�TÔ% hÑ/Ø�aŒyÐr?   c                 ól  ‡‡‡— | j         ‰         Š| j                             ‰¦  «        }|�|d         t          ‰¦  «        k    rht	          j        ˆfd„| j                             ‰¦  «        pdD ¦   «         ¦  «        Št          ‰¦  «        ˆˆˆfd„| j        D ¦   «         fx}| j        ‰<   |d         S )Nr   c              3   ó(   •K  — | ]}‰d z   |z   V — ŒdS r6  r—   r7  s     €r=   rc  z'offload._pool_others.<locals>.<genexpr>«  ó,   øè è € Ð#pÐ#p¸d H¨s¡N°TÑ$9Ð#pÐ#pÐ#pÐ#pÐ#pÐ#pr?   r—   c                 óª   •— g | ]O}|                      ‰d z   ¦  «        r5|                      ‰¦  «        s |                     d d¦  «        d         ‰v¯M|‘ŒPS r9  )rÀ   rÁ   )rX  r¡  rË  r^  r:  s     €€€r=   rZ  z(offload._pool_others.<locals>.<listcomp>¬  s¸   ø€ ð Drð Drð DrÈeÐqv÷  rBò  rBð  CKð  NQñ  CQñ  rRô  rRð Drð  [`÷  [kò  [kð  lrñ  [sô  [sð DrØINÏÊÐUXÐZ[ÑI\ÔI\Ð]^ÔI_ÐgpÐIpÐIpð EJØIpÐIpÐIpr?   r   )rš  rÊ  ry   rÂ   rd  rÐ  r±  r�  )rV   rË  rä  r^  r:  s    ` @@r=   Ú_pool_otherszoffload._pool_others¥  sï   øøø€ ð Ô3°HÔ=ˆ	ØÔ!×%Ò% hÑ/Ô/ˆØˆ>˜V AœY­#¨i©.¬.Ò8Ð8Ý”^Ð#pÐ#pÐ#pÐ#pÀdÔF[×F_ÒF_Ð`hÑFiÔFiÐFoÐmoÐ#pÑ#pÔ#pÑpÔpˆFÝ36°y±>´>ð Drð Drð Drð Drð Drð DrÐW[ÔWmð Drñ Drô Drð 3sð sˆF�TÔ% hÑ/à�aŒyÐr?   c                 óN   — || j         v r| j                             |d¦  «        nd S r…   )rº  rÈ  ry   rè  s     r=   Ú_pool_limitzoffload._pool_limit°  s.   € à4<ÀÔ@PÐ4PÐ4PˆtÔ×#Ò# H¨aÑ0Ô0Ð0ÐVZÐZr?   c                 óp  ‡ — |‰ j         vrdS ‰ j        €dn‰ j        j                             |¦  «        }|�|j        s|j        rdS ‰                      |¦  «        ‰                      |¦  «        }}t          ‰ j	        |         ¦  «        |t          j        t          j        |f}‰ j                             |¦  «        }|�|d         |k    rä‰                      |¦  «        ‰                      |¦  «        }}ˆ fd„||z   D ¦   «         }	‰ j        t"          z
  t                               ¦   «         z
  }
||d|…         z   D ]d}|r%t          j        s||	v s‰                      |¦  «        sŒ*‰                      |¦  «        j        }||
k    r|	                     |¦  «         |
|z  }
Œe||	fx}‰ j        |<   |d         S )a  The blocks of a running model that the pinned pool may take: those it has, and those of its towers out of VRAM, spread evenly, as
        many as the reserved RAM left holds (at most _pool_limit of them). None while the dynamic preload changes the blocks kept in VRAM.r—   Nr   c                 óJ   •— h | ]}t                                ‰|¦  «        ¯|’Œ S r—   )rÞ  rc  rö  s     €r=   rÇ  z'offload._pool_wanted.<locals>.<setcomp>Á  s-   ø€ ÐXÐXÐX ½E¿NºNÈ4ÐQVÑ<WÔ<WÐX�eÐXÐXÐXr?   r   )rÇ  r´  rã  ry   Ú	measuringr\  rh  Ú_pool_admitsrÂ   rš  rÞ  r^  r_  rË  ra  rf  r·   r÷  rf  rá  rV  r  r�  )rV   rË  Úautor*  Úadmitsr£  rä  Úrankedr`  r  r­  r¡  ré  s   `            r=   rU  zoffload._pool_wanted´  sÏ  ø€ ð ˜4Ô+Ð+Ð+Ø�2ØÔ(Ð0ˆtˆt°dÔ6GÔ6M×6QÒ6QÐRZÑ6[Ô6[ˆØÐ ¤Ð°4´<ÐØ�2Ø×(Ò(¨Ñ2Ô2°D×4EÒ4EÀhÑ4OÔ4OˆvˆÝ�4Ô2°8Ô<Ñ=Ô=¸uÅeÄkÕSXÔS]Ð_eÐfˆØÔ!×%Ò% hÑ/Ô/ˆØˆ>˜V AœY¨#Ò-Ð-Ø!×.Ò.¨xÑ8Ô8¸$×:KÒ:KÈHÑ:UÔ:U�FˆFØXÐXÐXÐX¨°&©ÐXÑXÔXˆFØÔ-Õ0BÑBÅUÇ^Â^ÑEUÔEUÑUˆDØ &¨¨%¨¤.Ñ0ð !ð !�Øð ¥¤ð ¨u¸¨¨Àd×FXÒFXÐY^ÑF_ÔF_¨ØØ—’ uÑ-Ô-Ô4�Ø˜4’<�<Ø—J’J˜uÑ%Ô%Ð%Ø˜D‘L�DøØ36¸°-Ð?ˆF�TÔ% hÑ/Ø�aŒyÐr?   c                 ó:   — t          | j        |         dd¦  «        S )NÚ_mm_pinned_poolT)rS   rŽ  rè  s     r=   rl  zoffload._pool_admitsÍ  s   € õ �t”{ 8Ô,Ð.?ÀÑFÔFÐFr?   c                 óà  — dx}}|| j         v rÞ|                      |¦  «        }|                      |¦  «        |                      |¦  «        d |                      |¦  «        …         z   D ]‚}t
                               | |¦  «        }|�||j        z  }Œ*|rV|                      |¦  «        rA|  	                    |¦  «        j        }||z   |t
           
                    | |¦  «        rdn|z   }}Œƒ||fS r…   )rÇ  rl  rf  ra  rh  rÞ  r¡  r  rá  rV  rc  )rV   rË  r¨  r©  rn  r¡  rµ  ré  s           r=   Ú
_pool_needzoffload._pool_needÒ  s  € ð ÐˆˆuØ�tÔ'Ð'Ð'Ø×&Ò& xÑ0Ô0ˆFØ×*Ò*¨8Ñ4Ô4°t×7HÒ7HÈÑ7RÔ7RÐSnÐTX×TdÒTdÐemÑTnÔTnÐSnÔ7oÑoð dð d�Ý—{’{ 4¨Ñ/Ô/�ØÐ#Ø˜Tœ[Ñ(�E�EØð d × 2Ò 2°5Ñ 9Ô 9ð dØŸ?š?¨5Ñ1Ô1Ô8�DØ"'¨$¡,°½U¿^º^ÈDÐRWÑ=XÔ=XÐ8b¸¸Ð^bÑ0c˜4�EøØ�Uˆ{Ðr?   c                 óÌ   — |                       |¦  «        \  }}}| j                             |¦  «        }|�	|j        |ur%t                               ||¦  «        x}| j        |<   |S rd   )rß  rÌ  ry   r  rV  r�  )rV   r	  r›   r  r!  r�  s         r=   rV  zoffload._pool_planá  sh   € à×,Ò,¨ZÑ8Ô8Ñˆˆv�qØŒ×"Ò" :Ñ.Ô.ˆØˆ<˜4œ;¨fÐ4Ð4Ý1<×1AÒ1AÀ%ÈÑ1PÔ1PÐPˆD�4”? :Ñ.Øˆr?   c                 óJ  ‡ ‡— t           r#t          ‰ j        ‰         d‰t          v¦  «        rdS ‰ j                             ‰¦  «        }|€0t          j        ˆˆ fd„‰ j        D ¦   «         ¦  «        x}‰ j        ‰<   |dk    o#t          j
        ¦   «         j        t          |z   k     S )Nrq  Fc              3   ó˜   •K  — | ]D}|                      d d¦  «        d         ‰k    ¯"‰                     |¦  «        D ]\  }}||z
  V — ŒŒEdS ©rÛ   r   r   N)rÁ   r)  )rX  r¡  rŒ   rs  rË  rV   s       €€r=   rc  z'offload._drops_pages.<locals>.<genexpr>ò  sä   øè è € ð  @Cð  @CÐPUÐsx×s~Òs~ð  @Cð  EFñ  tGô  tGð  HIô  tJð  NVò  tVð  tVð  im÷  i{ò  i{ð  |Añ  iBô  iBð  tVð  tVñ  [eð  [`ð  beÀÀeÁð  tVð  tVð  tVð  tVð  tVð  @Cð  @Cr?   r   )ÚDROP_ONCE_PER_GENERATION_PAGESrS   rŽ  ÚONCE_PER_GENERATION_MODELSrÎ  ry   rd  rà  r�  r  r�  rŽ  r�  )rV   rË  r%  s   `` r=   Ú_drops_pageszoffload._drops_pagesé  så   øø€ õ
 /ð 	µw¸t¼{È8Ô?TÐVgÐiqõ  zTð  jTñ  8Uô  8Uð 	Ø�5ØÔ"×&Ò& xÑ0Ô0ˆØˆ>Ý3;´<ð  @Cð  @Cð  @Cð  @Cð  @CÐY]ÔYoð  @Cñ  @Cô  @Cñ  4Cô  4Cð  CˆF�TÔ& xÑ0Ø˜ŠzÐY�fÔ3Ñ5Ô5Ô?Å.ÐSYÑBYÒYÐYr?   c                 óÚ   — |                       |¦  «        \  }}}| j                             |¦  «        }|�
|d         |ur%|t          d„ |D ¦   «         ¦  «        fx}| j        |<   |d         S )Nr   c                 ó²   — g | ]T\  }}t          |¦  «        D ]?}|                     ¦   «         |                     ¦   «         |                     ¦   «         z  f‘Œ@ŒUS r—   )r!  rþ   rA  rÞ  )rX  r!  r  r`  s       r=   rZ  z)offload._mapped_pages.<locals>.<listcomp>ú  s·   € ð  Ltð  Ltð  Ltñ  GKð  GHð  JKõ  apð  qrñ  asô  asð  Ltð  Ltð  Y]ÈTÏ]Ê]É_Ì_Ð^b×^hÒ^hÑ^jÔ^jÐmq×m~Òm~ñ  nAô  nAñ  _Að  MBð  Ltð  Ltð  Ltð  Ltr?   r   )rß  rÍ  ry   r)  )rV   r	  r›   r  r!  r6  s         r=   r)  zoffload._mapped_pagesõ  s¡   € à×,Ò,¨ZÑ8Ô8Ñˆˆv�qØÔ!×%Ò% jÑ1Ô1ˆØˆ=˜E !œH¨FÐ2Ð2Ø5;½]ð  Ltð  Ltð  OTð  Ltñ  Ltô  Ltñ  >uô  >uð  5vð  vˆE�DÔ% jÑ1Ø�QŒxˆr?   c                 ó0   — d„ | j         |         D ¦   «         S )Nc                 ó  — h | ]‚\  }}}}}|­
t          t          |¦  «        t          j        j        u r|j        n|¦  «        pdD ]?}|                     ¦   «         |                     ¦   «         |                     ¦   «         z  f’Œ@ŒƒS r  )	r!  r¹  rN   rO   r‹  rœ  rþ   rA  rÞ  )rX  r!  r{  rÓ  r`  s        r=   rÇ  z'offload._pool_leaves.<locals>.<setcomp>ÿ  s·   € ð cð cð cÑJZÈ!ÈQÐPQÐSTÐVZð  EIð  EQÝ+µd¸1±g´gÅÄÔASÐ6SÐ6S¨A¬F¨FÐYZÑ[Ô[ÐaÐ_að EQð  EQØð —’‘” $§*¢*¡,¤,°×1BÒ1BÑ1DÔ1DÑ"DÐEð  EQð  EQð  EQð  EQr?   ©r�  )rV   r	  s     r=   r›  zoffload._pool_leavesý  s6   € ðcð cÐ^bÔ^tÐuô  _Að cñ cô cð 	cr?   c
                 óÚ  ‡ ‡‡‡‡‡‡‡‡‡‡— ˆ fd„‰ j         D ¦   «         Šˆfd„‰ j                             ¦   «         D ¦   «         Šd„ ‰                     ¦   «         D ¦   «         Št                               ‰ d t          j        ˆfd„‰                     ¦   «         D ¦   «         ¦  «        ¦  «         ˆˆ ˆfd„Šˆˆfd„dD ¦   «         Š‰r‰ˆˆfd„‰D ¦   «         z  Š‰ˆˆfd	„|	pi                      ¦   «         D ¦   «         z  Šˆˆˆˆˆfd
„}
 |
|t          z
  ¦  «        \  }Šˆˆˆ ˆˆfd„‰D ¦   «         }|rx‰ j        rqt          ˆ fd„‰D ¦   «         ¦  «        Šˆfd„ˆfd„|D ¦   «         p|D ¦   «         }‰  
                    t          |¦  «        ||¦  «          |
|t          z
  ¦  «        \  }Š‰ j         D ]'}|‰vr!‰|         r|dk    rt          d|› d�¦  «         Œ(d„ |                     ¦   «         D ¦   «         }t          ||j        ¬¦  «        D ]Þ} ‰|d¦  «        }ˆfd„|D ¦   «         }‰|         r]t          |¦  «        t          |¦  «        k     r=|dk    r7t          d|› dt          |¦  «        › dt          |¦  «        › d|d›d�	¦  «         t!          ˆfd„| ‰|d¦  «        z    ‰|d¦  «        z   D ¦   «         ¦  «        }t#          ‰ j         |         ||||||||         ¬¦  «         Œßd S ) Nc                 óJ   •— g | ]}t          ‰j        |         d ¦  «        °|‘Œ S )r  )rH   rŽ  ©rX  rË  rV   s     €r=   rZ  z'offload._pin_models.<locals>.<listcomp>  s1   ø€ ÐnÐnÐn˜X½GÀDÄKÐPXÔDYÐ[lÑ<mÔ<mÐn�ÐnÐnÐnr?   c                 ól   •— i | ]0\  }}|                      d d¦  «        d         ‰v ¯#|d„ |D ¦   «         “Œ1S )rÛ   r   r   c                 ó"   — g | ]\  }}}}}|­
|‘ŒS rd   r—   )rX  r!  r{  rÓ  s       r=   rZ  z2offload._pin_models.<locals>.<dictcomp>.<listcomp>  s$   € ÐLÐLÐLÑ!1  A q¨!¨T¸t¸|˜1¸|¸|¸|r?   ©rÁ   )rX  r¡  ÚparamsÚtodos      €r=   r¨  z'offload._pin_models.<locals>.<dictcomp>  sš   ø€ ð  dð  dð  dÑQ^ÐQVÐX^ð  EJ÷  EPò  EPð  QTð  VWñ  EXô  EXð  YZô  E[ð  _cð  Ecð  Ec�5ÐLÐL°VÐLÑLÔLð  Ecð  Ecð  Ecr?   c                 óR   — i | ]$\  }}|t          j        d „ |D ¦   «         ¦  «        “Œ%S )c              3   óX   K  — | ]%}t          j        t          |¦  «        ¦  «        V — Œ&d S rd   )rd  rà  r±  r€  s     r=   rc  z1offload._pin_models.<locals>.<dictcomp>.<genexpr>	  s2   è è € Ð$NÐ$NÀa¥X¤\µ+¸a±.´.Ñ%AÔ%AÐ$NÐ$NÐ$NÐ$NÐ$NÐ$Nr?   ©rd  rà  )rX  r¡  Útss      r=   r¨  z'offload._pin_models.<locals>.<dictcomp>	  s:   € ÐpÐpÐpÑS\ÐSXÐZ\��œÐ$NÐ$NÈ2Ð$NÑ$NÔ$NÑNÔNÐpÐpÐpr?   c              3   óf   •K  — | ]+\  }}‰|                      d d¦  «        d                  ¯'|V — Œ,dS rw  r…  )rX  r¡  ré  Úlisteds      €r=   rc  z&offload._pin_models.<locals>.<genexpr>
  sK   øè è € Ð0yÐ0y¹+¸%ÀÐZ`Ðaf×alÒalÐmpÐrsÑatÔatÐuvÔawÔZxÐ0y°Ð0yÐ0yÐ0yÐ0yÐ0yÐ0yr?   c                 óÄ   •‡ ‡— ˆ fd„‰D ¦   «         }‰dk    r‰ ‰v r‰r|s‰ gng S ‰dk    r'ˆfd„‰j                              ‰ d¦  «        D ¦   «         S ˆˆ ˆfd„|D ¦   «         S )Nc                 óD   •— g | ]}|                      ‰d z   ¦  «        ¯|‘ŒS rò  rù  ró  s     €r=   rZ  z8offload._pin_models.<locals>.entries.<locals>.<listcomp>  s1   ø€ ÐUÐUÐU °E×4DÒ4DÀXÐPSÁ^Ñ4TÔ4TÐU�eÐUÐUÐUr?   r@  r:  c                 ó"   •— g | ]\  }}|‰v ¯	|‘ŒS r—   r—   )rX  r¡  r!  rÂ  s      €r=   rZ  z8offload._pin_models.<locals>.entries.<locals>.<listcomp>  s)   ø€ ÐmÐmÐm¡( %¨Ð\aÐelÐ\lÐ\l˜Ð\lÐ\lÐ\lr?   r—   c                 óv   •— g | ]5}|                      d d¦  «        d         ‰j        ‰         v ‰dk    k    ¯3|‘Œ6S )rÛ   r   r^  ©rÁ   rš  )rX  r¡  rà  rË  rV   s     €€€r=   rZ  z8offload._pin_models.<locals>.entries.<locals>.<listcomp>  sk   ø€ ð  Qð  Qð  Q˜e°%·+²+¸cÀ1Ñ2EÔ2EÀaÔ2HÈDÔLkÐltÔLuÐ2uÐ{ð  DOò  |Oò  2Pð  2P�Eð  2Pð  2Pð  2Pr?   )rÆ  ry   )rË  rà  r  Úpartial_pinningrV   rÂ  s   `` €€€r=   rå  z$offload._pin_models.<locals>.entries  sÀ   øøø€ ØUÐUÐUÐU¨ÐUÑUÔUˆFØ�vŠ~ˆ~Ø%-°Ð%8Ð%8À/Ð%8ÐV\Ð%8˜�z�zÐceÐeØ�xÒÐØmÐmÐmÐm¨dÔ.F×.JÒ.JÈ8ÐUWÑ.XÔ.XÐmÑmÔmÐmð Qð  Qð  Qð  Qð  Qð  Q vð  Qñ  Qô  Qð  Qr?   c                 ó4   •— g | ]}‰D ]}‰|         ¯
||d f‘ŒŒS râ  r—   )rX  rà  rË  r�  r‡  s      €€r=   rZ  z'offload._pin_models.<locals>.<listcomp>  s;   ø€ Ð{Ð{Ð{¨ÐbfÐ{Ð{ÐV^ÐjpÐqyÔjzÐ{�(˜D !Ð$Ð{Ð{Ð{Ð{r?   )rB  r^  r@  c                 ó0   •— g | ]}‰|         °
|d d‰z  f‘ŒS )rB  r   r—   )rX  rË  r�  Úsmart_pinnings     €€r=   rZ  z'offload._pin_models.<locals>.<listcomp>  s1   ø€ ÐlÐlÐlÀ8Ð[aÐbjÔ[kÐl�x ¨A°Ñ,=Ð>ÐlÐlÐlr?   c                 óD   •— g | ]\  }}|‰v ¯	‰|         °|d k    ¯|d|f‘ŒS )r   r:  r—   )rX  rË  rÞ  r�  r‡  s      €€r=   rZ  z'offload._pin_models.<locals>.<listcomp>  sy   ø€ ð  ]ð  ]ð  ]±/°(¸EÐdlÐptÐdtÐdtð  ~Dð  EMô  ~NÐdtð  SXð  [\ò  S\ð  S\�8˜X uÐ-ð  S\ð  S\ð  S\r?   c                 ó^  •‡
‡— d„ ‰D ¦   «         t          ¦   «         }}t          ‰¦  «        D ]ý\  Š\  Š
}} ‰‰
|¦  «        }t          j        ˆfd„|D ¦   «         ¦  «        |z  }|dk    ot	          ˆ
fd„‰D ¦   «         ¦  «         }|dk    s|s|| k    r|nt          d|| z  |z  ¦  «        }t          ||¦  «        D ]l}	|s‰|	         | k    rŒt          d| ‰|	         z
  ¦  «        } |                     |	¦  «         |‰
                              ˆfd„‰|	         D ¦   «         ¦  «         ŒmŒþ||fS )Nc                 ó   — i | ]}|i “ŒS r—   r—   ©rX  rË  s     r=   r¨  z5offload._pin_models.<locals>.plan.<locals>.<dictcomp>  s   € Ð>Ð>Ð>¨X˜H bÐ>Ð>Ð>r?   c              3   ó(   •K  — | ]}‰|         V — Œd S rd   r—   )rX  r¡  r×  s     €r=   rc  z4offload._pin_models.<locals>.plan.<locals>.<genexpr>  s'   øè è € Ð#KÐ#K°U E¨%¤LÐ#KÐ#KÐ#KÐ#KÐ#KÐ#Kr?   r@  c              3   óH   •K  — | ]}|                      ‰d z   ¦  «        V — ŒdS r6  rù  ró  s     €r=   rc  z4offload._pin_models.<locals>.plan.<locals>.<genexpr>  s6   øè è € Ð2iÐ2iÐX]°5×3CÒ3CÀHÈsÁNÑ3SÔ3SÐ2iÐ2iÐ2iÐ2iÐ2iÐ2ir?   r   c              3   ó:   •K  — | ]}t          |¦  «        ‰fV — Œd S rd   r±  )rX  r{  rA  s     €r=   rc  z4offload._pin_models.<locals>.plan.<locals>.<genexpr>"  s-   øè è € Ð*QÐ*Q¸Q­B¨q©E¬E°4¨=Ð*QÐ*QÐ*QÐ*QÐ*QÐ*Qr?   )	r‚  r¹  rd  rà  rÎ  r  ræ  r�  r
  )rW  rü  Útakenrà  rÞ  Úkind_entriesr¨  r©  rä  r¡  rË  rA  rå  r×  ÚstepsrÂ  r‡  s             @@€€€€€r=   r�  z!offload._pin_models.<locals>.plan  s†  øøø€ Ø>Ð>¸Ð>Ñ>Ô>ÅÁÄ�5ˆEÝ1:¸5Ñ1AÔ1Að 
Rð 
RÑ-�Ñ-�x  uØ&˜w x°Ñ6Ô6�Ý”|Ð#KÐ#KÐ#KÐ#K¸lÐ#KÑ#KÔ#KÑKÔKÈeÑS�Ø šÐi­sÐ2iÐ2iÐ2iÐ2iÐahÐ2iÑ2iÔ2iÑ/iÔ/iÐ+i�Ø!%¨¢ ¨e °t¸v²~°~˜˜Í3ÈqÐRWÐZ`ÑR`ÐcgÑRgÑKhÔKh�Ý$ \°5Ñ9Ô9ð Rð R�EØ ð ! U¨5¤\°FÒ%:Ð%:Ø Ý   F¨U°5¬\Ñ$9Ñ:Ô:�FØ—I’I˜eÑ$Ô$Ð$Ø˜(”O×*Ò*Ð*QÐ*QÐ*QÐ*QÀ'È%Ä.Ð*QÑ*QÔ*QÑQÔQÐQÐQðRð ˜%�<Ðr?   c                 ó`   •— g | ]*}‰|         s‰®|‰j         v¯ ‰|d¦  «        D ]}|‰v¯|‘Œ	Œ+S )NrB  )rÇ  )rX  rË  r¡  rå  r�  rV   r–  rž  s      €€€€€r=   rZ  z'offload._pin_models.<locals>.<listcomp>&  s½   ø€ ð  Dð  Dð  D˜(¨v°hÔ/?ð  DÀ=ÐC\ÐbjÐrvô  sCð  cCð  cCð  QXð  QXð  Yað  clñ  Qmô  Qmð  cCð  cCð  HMð  qvð  ~Cð  qCð  qC�ð  qCð  qCð  qCð  qCr?   c              3   óH   •K  — | ]}‰j         |         D ]}|d z   |z   V — ŒŒdS r6  )r±  )rX  rË  r³   rV   s      €r=   rc  z&offload._pin_models.<locals>.<genexpr>(  sC   øè è € ÐrÐr°XÐRVÔRgÐhpÔRqÐrÐrÈ$˜8 c™>¨DÑ0ÐrÐrÐrÐrÐrÐrÐrr?   c                 óX   •— g | ]&}t          j        d „ ‰|         D ¦   «         ¦  «        ‘Œ'S )c              3   óT   K  — | ]#}t          |¦  «        D ]}|t          z   d z   V — ŒŒ$dS rz  ©r±  r¨  )rX  r{  ré  s      r=   rc  z1offload._pin_models.<locals>.<listcomp>.<genexpr>)  sD   è è € Ð"nÐ"n¸qÕ_jÐklÑ_mÔ_mÐ"nÐ"nÐW[ 4­,Ñ#6¸Ñ#:Ð"nÐ"nÐ"nÐ"nÐ"nÐ"nÐ"nr?   rŠ  )rX  r¡  rÂ  s     €r=   rZ  z'offload._pin_models.<locals>.<listcomp>)  sI   ø€ ð  }ð  }ð  }Ðsx•h”lÐ"nÐ"nÀGÈEÄNÐ"nÑ"nÔ"nÑnÔnð  }ð  }ð  }r?   c                 ó>   •— g | ]}|                      ‰¦  «        ¯|‘ŒS r—   rù  )rX  r¡  r:  s     €r=   rZ  z'offload._pin_models.<locals>.<listcomp>)  sl   ø€ ð  ~sð  ~sð  ~sð  INð  Z_÷  Zjò  Zjð  kqñ  Zrô  Zrð  ~sð  Dð  ~sð  ~sð  ~sr?   r   rv  z#' already pinned to reserved memoryc                 ó\   — i | ])\  }}|¯|t          |                     ¦   «         ¦  «        “Œ*S r—   )r.  ry  )rX  rË  Úmodel_rankss      r=   r¨  z'offload._pin_models.<locals>.<dictcomp>/  s9   € ÐtÐtÐtÑ>S¸hÈÐhsÐt�h¥ K×$6Ò$6Ñ$8Ô$8Ñ 9Ô 9ÐtÐtÐtr?   r¢  rB  c                 ó   •— g | ]}|‰v ¯|‘Œ	S r—   r—   ©rX  r¡  rž  s     €r=   rZ  z'offload._pin_models.<locals>.<listcomp>2  s   ø€ ÐKÐKÐK¨¸EÀU¸N¸N˜e¸N¸N¸Nr?   zReserved RAM is short for 'rè  ú of its zŒ blocks processed at each step are pinned, spread evenly, the staging ring takes the others. You may increase 'perc_reserved_mem_max' above rÇ  z to pin more.c              3   ó    •K  — | ]}|‰vV — Œ	d S rd   r—   rª  s     €r=   rc  z&offload._pin_models.<locals>.<genexpr>5  s(   øè è € ÐÐ°˜% uÐ,ÐÐÐÐÐÐr?   r^  r@  )r  r  r®   rª   r  rü  )rŽ  r�  r›   rÞ  r®  rd  rà  r÷  rž  rÐ  Ú_create_ringr  rþ  r’  ry   rÂ   rÎ  r  )rV   r�  r–  r“  Úpinned_peft_lorar®   r·   rª   r  Úcpu_pinningr�  rü  r$  ÚboundsrË  Ú
first_rankrB  Úpinned_swappedr9  rå  r×  r   rž  rÂ  r‡  r:  s   ````               @@@@@@@r=   Ú_pin_modelszoffload._pin_models  s  øøøøøøøøøøø€ ð
 oÐnÐnÐn¨¬ÐnÑnÔnˆð dð  dð  dð  dÐbfÔbx×b~Òb~ñ  cAô  cAð  dñ  dô  dˆØpÐpÐ`g×`mÒ`mÑ`oÔ`oÐpÑpÔpˆÝ�Š˜˜d¥H¤LÐ0yÐ0yÐ0yÐ0yÈÏÊÉÌÐ0yÑ0yÔ0yÑ$yÔ$yÑzÔzÐzð	Qð 	Qð 	Qð 	Qð 	Qð 	Qð 	Qð |Ð{Ð{Ð{Ð{Ð1QÐ{Ñ{Ô{ˆØð 	mØÐlÐlÐlÐlÐlÈtÐlÑlÔlÑlˆEØð  ]ð  ]ð  ]ð  ]ð  ]ÀkÐFWÐUW×E^ÒE^ÑE`ÔE`ð  ]ñ  ]ô  ]ñ  	]ˆð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð �tÐ1Õ4FÑFÑGÔG‰ˆˆuð Dð  Dð  Dð  Dð  Dð  Dð  Dð  D dð  Dñ  Dô  DˆØð 	L�DÔ(ð 	LÝÐrÐrÐrÐrÀÐrÑrÔrÑrÔrˆFð }ð  }ð  }ð  }ð  ~sð  ~sð  ~sð  ~sð  RVð  ~sñ  ~sô  ~sð  ~{ð  w{ð  }ñ  }ô  }ˆFØ×Ò�c &™kœkÐ+@À,ÑOÔOÐOØ˜4Ð 5Õ8JÑ JÑKÔK‰LˆE�5Øœð 	Oð 	OˆHØ˜tÐ#Ð#¨¨xÔ(8Ð#¸\ÈQÒ=NÐ=NÝÐM ÐMÐMÐMÑNÔNÐNøØtÐtÐW\×WbÒWbÑWdÔWdÐtÑtÔtˆ
Ý˜z¨z¬~Ð>Ñ>Ô>ð 	Cð 	CˆHØ�g˜h¨	Ñ2Ô2ˆGØKÐKÐKÐK°ÐKÑKÔKˆNØ�hÔð c¥C¨Ñ$7Ô$7½#¸g¹,¼,Ò$FÐ$FÈ<Ð[\ÒK\ÐK\Ýð  b°Hð  bð  bÅÀ^ÑATÔATð  bð  bÕ^aÐbiÑ^jÔ^jð  bð  bð  yNð  bð  bð  bð  bñ  cô  cð  cÝÐÐÐÐ¸'ÀGÀGÈHÐVaÑDbÔDbÑ:bÐelÐelÐmuÐw}Ñe~Ôe~Ñ:~ÐÑÔÑÔˆGÝ˜4œ; xÔ0°(ÈWÐgwð  Rgð  xDð  Yið  sxð  yAô  sBð  Cñ  Cô  Cð  Cð  Cð	Cð 	Cr?   c                 ó¦  — t                                | d t          |z  ¦  «         t          dfD ]~}||z  }|dk    rt          |z   |k    rŒ	 t	          |¦  «        | _        n# t          $ r Y Œ>w xY wd | _        |dk    r-t          j	        d|t          z  d›d|t          z  d›d�¦  «          d S t          j	        dd|z  t          z  d›d	�¦  «         d S )
NrÙ   r   r   zStaging ring of ú0.1fz0 MB for the blocks that are not pinned (largest z MB)zUnable to lock zb MB of RAM for a staging ring: the blocks that are not pinned will use the slower staged transfers)rÞ  r®  ÚRING_DEFAULT_BLOCKSr÷  rë  r  rò  r¬  r   r‘  rÿ  )rV   rª  r·   rª   r  ré  s         r=   r­  zoffload._create_ring8  sN  € õ 	�Š˜˜dÕ$7¸'Ñ$AÑBÔBÐBÝ*¨AÐ.ð 	ð 	ˆFØ˜GÑ#ˆDØ$ qÒ(Ð(Õ-?À$Ñ-FÐI^Ò-^Ð-^ØðÝ(¨Ñ.Ô.�”	�	øÝð ð ð Ø�ðøøøà"ˆDŒOØ˜qÒ Ð Ý”
ð  J¨dµ6©kð  Jð  Jð  JÐpwÕx~Ñp~ð  Jð  Jð  Jð  Jñ  Kô  Kð  KØˆFˆFÝŒ
ð  a Q¨¡[µÑ%7ð  að  að  að  añ  	bô  	bð  	bð  	bð  	bs   ÁA Á 
A-Á,A-c                 ó¾   — | j         \  }}d | _         |                      |¦  «        }|r4|                      |||¦  «         | j                             |d ¦  «         d S d S rd   )r®  Ú_ring_boundr­  r©  r•  )rV   rË  Ú
reservableÚverboserª  s        r=   Ú_ring_for_streamingzoffload._ring_for_streamingJ  su   € ð #Ô1Ñˆ
�GØ"ˆÔØ×"Ò" 8Ñ,Ô,ˆØð 	6Ø×Ò˜g z°7Ñ;Ô;Ð;ØÔ!×%Ò% h°Ñ5Ô5Ð5Ð5Ð5ð	6ð 	6r?   c                 ó  ‡ ‡‡— ‰ j                              ‰¦  «        }|€lt          j        ˆfd„‰ j                             ‰¦  «        pdD ¦   «         ¦  «        Št          j        ˆ ˆfd„‰ j        D ¦   «         d¬¦  «        x}‰ j         ‰<   |S )Nc              3   ó(   •K  — | ]}‰d z   |z   V — ŒdS r6  r—   r7  s     €r=   rc  z&offload._ring_bound.<locals>.<genexpr>Y  rd  r?   r—   c              3   ó˜   •K  — | ]D}‰¯|                      ‰¦  «        ¯t          j        d „ ‰j        |         D ¦   «         ¦  «        V — ŒEdS )c              3   ód   K  — | ]+\  }}}}}|­
t          |¦  «        D ]}|t          z   dz   V — ŒŒ,d S r“  r¥  )rX  r!  r{  rÓ  ré  s        r=   rc  z0offload._ring_bound.<locals>.<genexpr>.<genexpr>Z  s¤   è è € ð  LFð  LFÑhxÐhiÐklÐnoÐqrÐtxð  ^bð  ^jõ  wBð  CDñ  wEô  wEð  ^jð  ^jð  osÈDÕS_ÑL_ÐbcÑLcð  ^jð  ^jð  ^jð  ^jð  ^jð  LFð  LFr?   N)rÀ   rd  rà  r�  )rX  r¡  rV   r:  s     €€r=   rc  z&offload._ring_bound.<locals>.<genexpr>Z  sÀ   øè è € ð ?Mð ?MØEJÐhnð?MØsx÷  tDò  tDð  EKñ  tLô  tLð?M½x¼|ð  LFð  LFð  }Aô  }Sð  TYô  }Zð  LFñ  LFô  LFñ  @Fô  @Fð ?Mð ?Mð ?Mð ?Mð ?Mð ?Mr?   r   r÷  )r­  ry   rd  rÐ  r±  r  r�  )rV   rË  rŽ  r:  s   `` @r=   r¸  zoffload._ring_boundU  sÇ   øøø€ àÔ ×$Ò$ XÑ.Ô.ˆØˆ=Ý”^Ð#pÐ#pÐ#pÐ#pÀdÔF[×F_ÒF_Ð`hÑFiÔFiÐFoÐmoÐ#pÑ#pÔ#pÑpÔpˆFÝ19´ð ?Mð ?Mð ?Mð ?Mð ?MØNRÔNdð?Mñ ?Mô ?Mð WXð2Yñ 2Yô 2Yð YˆE�DÔ$ XÑ.àˆr?   c                 óˆ  ‡ ‡— ‰ j         j        st          j        rdS t          j        t          j        ˆ fd„‰ j        D ¦   «         ¦  «        f}‰ j        �‰ j        d         |k    rQt          j        d„ ‰ j        D ¦   «         ¦  «        Š|t          j	        ˆˆ fd„‰ j
        D ¦   «         ¦  «         f‰ _        ‰ j        d         S )NFc              3   óP   •K  — | ] }|t          ‰j        |         ¦  «        fV — Œ!d S rd   )rÂ   rš  r‚  s     €r=   rc  z'offload._ring_unused.<locals>.<genexpr>c  sR   øè è € ð  -Pð  -PÐlt¨h½¸DÔ<[Ð\dÔ<eÑ8fÔ8fÐ-gð  -Pð  -Pð  -Pð  -Pð  -Pð  -Pr?   r   c              3   ó    K  — | ]	}|d z   V — Œ
dS r6  r—   rš  s     r=   rc  z'offload._ring_unused.<locals>.<genexpr>e  s&   è è € Ð#ZÐ#Z°x H¨s¡NÐ#ZÐ#ZÐ#ZÐ#ZÐ#ZÐ#Zr?   c              3   ó,  •K  — | ]Ž}|                      ‰¦  «        rw|                     d d¦  «        d         ‰j        |                     d d¦  «        d                  v¯Z‰                     |¦  «        o‰                     |¦  «        d         du V — Œ�dS )rÛ   r   r   rÙ   N)rÀ   rÁ   rš  rá  rß  )rX  r¡  r·  rV   s     €€r=   rc  z'offload._ring_unused.<locals>.<genexpr>f  s  øè è € ð 5lð 5lð  |AØ8=×8HÒ8HÈÑ8PÔ8Pð5lØUZ×U`ÒU`ÐadÐfgÑUhÔUhÐijÔUkÐswô  tSð  TY÷  T_ò  T_ð  `cð  efñ  Tgô  Tgð  hiô  Tjô  tkð  Vkð  Vkð 6:×5GÒ5GÈÑ5NÔ5NÐ5vÐSW×SdÒSdÐejÑSkÔSkÐlmÔSnÐrvÐSvð Vkð  Vkð  Vkð  Vkð5lð 5lr?   r   )r  rò  rÞ  r\  r]  rd  rÐ  r§  r¬  rÎ  r�  )rV   r£  r·  s   ` @r=   Ú_ring_unusedzoffload._ring_unused^  s  øø€ ð Œ9Œ>ð 	�Uœ]ð 	Ø�5ÝŒ}�hœnð  -Pð  -Pð  -Pð  -PÐx|ô  yOð  -Pñ  -Pô  -Pñ  Pô  Pð  QˆØŒ?Ð" d¤o°aÔ&8¸CÒ&?Ð&?Ý”^Ð#ZÐ#ZÀ4ÔCYÐ#ZÑ#ZÔ#ZÑZÔZˆFØ"­¬ð 5lð 5lð 5lð 5lð 5lð  EIô  E[ð 5lñ 5lô 5lñ )lô )lð %lð mˆDŒOàŒ˜qÔ!Ð!r?   Fc                 ó†   — | j         �7| j                              ¦   «          d | _         |r| j        | j        f| _        d S d S d S rd   )r  rK  r·   rª   r®  )rV   Ú	on_demands     r=   Ú_release_ringzoffload._release_ringj  sY   € àŒ9Ð ØŒI�OŠOÑÔÐØˆDŒIØð VØ'+Ô'AÀ4ÔCTÐ&U�Ô#Ð#Ð#ð	 !Ð ðVð Vr?   c                 ó   — | j         S rd   )r§  rˆ   s    r=   r  zoffload.is_main_waitingr  s   € ØÔ Ð r?   c                 ó¬   — | j                              |¦  «        pd}|dk    rdS | j        D ]'}||vr!| j                              |¦  «        dk    r dS Œ(dS )Nr—   Ú*TF)r�  ry   r§  )rV   rË  Úpotential_cotenantsÚexistings       r=   Úcan_model_be_cotenantzoffload.can_model_be_cotenantu  su   € Ø"Ô0×4Ò4°XÑ>Ô>ÐDÀ"ÐØ #Ò%Ð%Ø�4ØÔ.ð 	ð 	ˆHØÐ2Ð2Ð2°tÔ7I×7MÒ7MÈhÑ7WÔ7WÐ[^Ò7^Ð7^Ø�u�uøØˆtr?   c           
      ó0  ‡ ‡‡‡‡‡— |s+|                      ¦   «         D ]}d„ |D ¦   «         D ]}||= ŒŒd S |rˆˆ fd„|D ¦   «         nd}‰�t          ‰dd ¦  «        nd Ši Ši Šˆfd„Šˆˆˆfd„}	|                     ¦   «         D ]•\  }
}|D ]�}|                     |d ¦  «        }|dz   }|�||v s||v rt	          |¦  «        rŒ7t          |¦  «        }t          t          dt          |¦  «        ¦  «        ¦  «        D ]} |	||         |¦  «        ||<   Œ|||<   ŒŽŒ–d S )	Nc                 ó<   — g | ]}|                      d ¦  «        ¯|‘ŒS )ro  )r.  )rX  r£  s     r=   rZ  z'offload._move_loras.<locals>.<listcomp>‚  s)   € ÐOÐOÐO C¸#¿,º,ÀvÑ:NÔ:NÐO˜CÐOÐOÐOr?   c                 óT   •— h | ]$}‰                      ‰j        ‰|¦  «        d k    ¯"|’Œ%S rL  ©rp  rT  ©rX  rq  rÆ   rV   s     €€r=   rÇ  z&offload._move_loras.<locals>.<setcomp>…  s]   ø€ ð  Cð  Cð  C˜GÀ×@VÒ@VÐW\ÔWkÐmrÐt{Ñ@|Ô@|ð  ABò  ABð  AB�ð  ABð  ABð  ABr?   r—   r   c                 óÀ   •— | €d S t          j        | ¦  «        rDt          | ¦  «        }‰                     |d ¦  «        }|€|                      d¬¦  «        }|‰|<   |S | S ©NTrY  )rN   rT   rä  ry   r  )rx  rã  r"  Útensor_caches      €r=   Ú_move_tensorz)offload._move_loras.<locals>._move_tensorŠ  sm   ø€ Øˆ|Ø�tÝŒ˜tÑ$Ô$ð Ý% dÑ+Ô+�Ø$×(Ò(¨¨dÑ3Ô3�Ø�=Ø ŸIšI°4˜IÑ8Ô8�EØ(-�L Ñ%Ø�ØˆKr?   c                 ól  •— t          | t          ¦  «        s ‰| ¦  «        S || f}‰                     |d ¦  «        }|�|S t          | t          ¦  «        rO|                      dd¦  «        \  }}‰	|         |         t	          |¦  «                 } t          | t          ¦  «        °O ‰| ¦  «        }|‰|<   |S )NrÙ  r   )r™   rý  ry   rK  rõ  )
rz  rq  Ú	cache_keyrä  rr  rU  r  rÖ  Úalias_cacheÚ	shortcutss
          €€€r=   Ú_resolve_aliasz+offload._move_loras.<locals>._resolve_alias–  sÄ   ø€ Ý˜e¥SÑ)Ô)ð +Ø#�| EÑ*Ô*Ð*Ø  %Ð(ˆIØ —_’_ Y°Ñ5Ô5ˆFØÐ!Ø�Ý˜U¥CÑ(Ô(ð >Ø$Ÿ|š|¨C°Ñ3Ô3‘�˜Ø! &Ô)¨'Ô2µ3°t±9´9Ô=�õ ˜U¥CÑ(Ô(ð >ð $�| EÑ*Ô*ˆHØ%-ˆK˜	Ñ"ØˆOr?   ro  rk  )	ry  rS   r›   ry   r¸  r�   r*  r.  rÂ   )rV   Úloras_active_adaptersÚloras_modulesÚto_GPUrÆ   Ú	skip_idleÚlora_moduler£  rˆ  rÛ  r!  rq  r·  Ú
moved_datarå  rÖ  rÙ  rÚ  rÕ  s   `   `          @@@@r=   Ú_move_loraszoffload._move_loras~  sð  øøøøøø€ àð 	Ø,×3Ò3Ñ5Ô5ð )ð )�ØOÐO¨;ÐOÑOÔOð )ð )�CØ# CÐ(Ð(ð)àˆFð GPð  Xð  Cð  Cð  Cð  Cð  CÐ'<ð  Cñ  Cô  Cð  Cð  VXˆØFKÐFW•G˜EÐ#;¸TÑBÔBÐBÐ]aˆ	ØˆØˆð
	ð 
	ð 
	ð 
	ð 
	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð ,×1Ò1Ñ3Ô3ð 		.ð 		.‰NˆAˆ{Ø0ð .ð .�Ø'ŸOšO¨G°TÑ:Ô:�	Ø Ñ&�ØÐ$¨¨{Ð(:Ð(:¸gÈ¸o¸oÕR]Ð^gÑRhÔRh¸oØÝ! )™_œ_�
Ý�s 1¥c¨*¡o¤oÑ6Ô6Ñ7Ô7ð Kð K�AØ$2 N°:¸a´=À'Ñ$JÔ$J�J˜q‘M�MØ#-�˜CÑ Ð ð.ð		.ð 		.r?   c              #   óH  K  — t          j        |                     ¦   «         ¦  «        t          j        |                     ¦   «         ¦  «        z   D ]Q}t	          |¦  «        }|rd„ |D ¦   «         n|fE d{V —† d„ |j                             ¦   «         D ¦   «         E d{V —† ŒRdS )z·The CUDA tensors a block reads besides its arguments and LoRA copies: its parameters and buffers (their quantized parts and the
        tensors cached on them, e.g. converted scales).c              3   ó    K  — | ]	\  }}|V — Œ
d S rd   r—   rß  s      r=   rc  z0offload._graph_weight_tensors.<locals>.<genexpr>´  s&   è è € Ð1Ð1™d˜a ˜Ð1Ð1Ð1Ð1Ð1Ð1r?   Nc              3   ó\   K  — | ]'}t          j        |¦  «        ¯t          |¦  «        V — Œ(d S rd   )rN   rT   r™  r9  s     r=   rc  z0offload._graph_weight_tensors.<locals>.<genexpr>µ  s=   è è € ÐxÐx¸EÕafÔapÐqvÑawÔawÐxÕ0°Ñ7Ô7ÐxÐxÐxÐxÐxÐxr?   )rd  r�   rÁ  rÂ  rØ  rŽ  ry  )rV   rÆ   r<   r‰  r£  s        r=   Ú_graph_weight_tensorszoffload._graph_weight_tensors¯  sË   è è € õ ”m F×$5Ò$5Ñ$7Ô$7Ñ8Ô8½8¼=ÈÏÊÑIYÔIYÑ;ZÔ;ZÑZð 	yð 	yˆFÝ2°6Ñ:Ô:ˆJØ5?ÐNÐ1Ð1 jÐ1Ñ1Ô1Ð1ÀfÀYÐNÐNÐNÐNÐNÐNÐNØxÐxÀVÄ_×E[ÒE[ÑE]ÔE]ÐxÑxÔxÐxÐxÐxÐxÐxÐxÐxÐxð	yð 	yr?   c                 óZ  ‡— t          j        t          |dd ¦  «        pd¦  «        Š|j                             dd ¦  «        }|�|d         ‰k    r[t          j        |                     ¦   «         ¦  «        }d„ |D ¦   «         d„ |D ¦   «         z   }ˆfd„|D ¦   «         }‰||d d gx}|_        |S )NrS  r—   Ú_mm_graph_stater   c                 ó4   — g | ]}|j         D ]}|j         |f‘ŒŒS r—   )r•  ©rX  rÅ  r³   s      r=   rZ  z(offload._graph_state.<locals>.<listcomp>¾  s0   € ÐaÐaÐa°3ÐQTÔQ`ÐaÐaÈ˜œ¨Ð.ÐaÐaÐaÐar?   c                 ó4   — g | ]}|j         D ]}|j         |f‘ŒŒS r—   )rE   rê  s      r=   rZ  z(offload._graph_state.<locals>.<listcomp>¾  si   € ð  ejð  ejð  ejð  Bð  ]`ô  ]ið  ejð  ejð  UYÐfiÔfrÐtxÐeyð  ejð  ejð  ejð  ejr?   c                 óT   •— g | ]$}t          |d d¦  «        ¯‰D ]}|j        |dz   f‘ŒŒ%S )rH  Nro  )rS   rH  )rX  rÅ  rq  r  s      €r=   rZ  z(offload._graph_state.<locals>.<listcomp>¿  sp   ø€ ð  Qð  Qð  Q¸sÕT[Ð\_ÐapÐrvÑTwÔTwð  Qð  HPð  Qð  Qð  }D�cÔ'¨°6Ñ)9Ð:ð  Qð  Qð  Qð  Qr?   )rd  rÐ  rS   rŽ  ry   r�   r´  rè  )rV   rÆ   r<   r  r\  ÚholdersÚlorasr  s          @r=   Ú_graph_statezoffload._graph_state·  sù   ø€ õ ”>¥'¨%Ð1IÈ4Ñ"PÔ"PÐ"VÐTVÑWÔWˆØ”×#Ò#Ð$5°tÑ<Ô<ˆØˆ=˜E !œH¨Ò0Ð0Ý!œ v§~¢~Ñ'7Ô'7Ñ8Ô8ˆJØaÐa¸*ÐaÑaÔað  ejð  ejð  FPð  ejñ  ejô  ejñ  jˆGð Qð  Qð  Qð  QÀjð  Qñ  Qô  QˆEØ.6¸ÀÈÈdÐ-SÐSˆE�FÔ*Øˆr?   c                 ó    — |                      ¦   «         D ]8}|j                             dd ¦  «         |j                             dd ¦  «         Œ9d S )Nrè  Ú_mm_graph_placement)r´  rŽ  r•  ©rV   rÆ   r<   s      r=   Ú_graph_forgetzoffload._graph_forgetÃ  sZ   € ð —m’m‘o”oð 	=ð 	=ˆFØŒO×ÒÐ 1°4Ñ8Ô8Ð8ØŒO×ÒÐ 5°tÑ<Ô<Ð<Ð<ð	=ð 	=r?   c                 ó’  ‡ ‡— ‰                       ‰|¦  «        }|\  }}}}}|j                             dd¦  «        r|j                             d¦  «        nd}	|	�|	d         t          k    s
|	d         |ur°d„ |D ¦   «         }
|�Gt	          |¦  «        t	          |
¦  «        k    s't          d„ t          ||
¦  «        D ¦   «         ¦  «        r2d	„ |
D ¦   «         |d
<   t          j        d„ |
D ¦   «         ¦  «        x}|d<   |j                             dd¦  «        rt          |f|_	        ||t          j        ˆˆ fd„|D ¦   «         ¦  «        fS )a–  What a block's graph depends on besides its arguments and LoRA copies: its parameters and buffers, the active adapters and their
        scalings. A block loaded elsewhere gets new tensor objects (and the caches made on them, e.g. converted scales): the key is their serial
        numbers, never reused, recomputed only when a weak reference shows another object, which keeps the check of each call short.Ú_mm_graph_placement_keyFrñ  Nr   r   c                 ó$   — g | ]\  }}||         ‘ŒS r—   r—   )rX  r#  r³   s      r=   rZ  z.offload._graph_weights_key.<locals>.<listcomp>Ô  s    € Ð@Ð@Ð@©¨°�v˜d”|Ð@Ð@Ð@r?   c              3   ó<   K  — | ]\  }}|�
 |¦   «         nd |uV — Œd S rd   r—   )rX  rã  r  s      r=   rc  z-offload._graph_weights_key.<locals>.<genexpr>Õ  s^   è è € ð  @Pð  @PÑrxÐruÐwxÈ#È/ÀÀÁÄÀÐ_cÐlmÐ@mð  @Pð  @Pð  @Pð  @Pð  @Pð  @Pr?   c                 ó>   — g | ]}|€d nt          j        |¦  «        ‘ŒS rd   )rX  rã  rÁ  s     r=   rZ  z.offload._graph_weights_key.<locals>.<listcomp>Ö  s(   € ÐSÐSÐSÀa A I˜D˜Dµ7´;¸q±>´>ÐSÐSÐSr?   r  c              3   ó<   K  — | ]}|€d nt          |¦  «        V — Œd S rd   )r‘  rÁ  s     r=   rc  z-offload._graph_weights_key.<locals>.<genexpr>×  s4   è è € Ð/iÐ/iÐ\]¸¸	°°Å}ÐUVÑGWÔGWÐ/iÐ/iÐ/iÐ/iÐ/iÐ/ir?   rk  c              3   óP   •K  — | ] }‰                      ‰j        ‰|¦  «        V — Œ!d S rd   rÑ  rÒ  s     €€r=   rc  z-offload._graph_weights_key.<locals>.<genexpr>Ú  sS   øè è € ð  -Cð  -CÐnu¨T×-CÒ-CÀEÔDXÐZ_ÐahÑ-iÔ-ið  -Cð  -Cð  -Cð  -Cð  -Cð  -Cr?   )
rï  rŽ  ry   r”  rÂ   rÎ  rD  rd  rÐ  rñ  )rV   rÆ   r<   r  r  rí  r!  Úrefsr£  Ú	placementr‹  s   ``         r=   Ú_graph_weights_keyzoffload._graph_weights_keyÊ  sÑ  øø€ ð ×!Ò! %¨Ñ0Ô0ˆØ*/Ñ'ˆ�'˜1˜d Cð CIÄ/×BUÒBUÐVoÐqvÑBwÔBwð  B�F”O×'Ò'Ð(=Ñ>Ô>Ð>ð  ~Bˆ	ØÐ 	¨!¤Õ0EÒ EÐ EÈÐSTÌÐ]bÐIbÐIbØ@Ð@¸Ð@Ñ@Ô@ˆGØˆ|�s 4™yœy­C°©L¬LÒ8Ð8½Cð  @Pð  @PÕ|ð  AEð  GNñ  }Oô  }Oð  @Pñ  @Pô  @Pñ  =Pô  =PÐ8ØSÐSÈ7ÐSÑSÔS��a‘Ý!)¤Ð/iÐ/iÐahÐ/iÑ/iÔ/iÑ!iÔ!iÐi��e˜A‘hØŒ×"Ò"Ð#<¸eÑDÔDð LÝ.CÀUÐ-K�Ô*Ø�H�hœnð  -Cð  -Cð  -Cð  -Cð  -Cð  zBð  -Cñ  -Cô  -Cñ  Cô  Cð  Cð  	Cr?   c                 ó€   — | j         d u s| j                              |¦  «        o| j                             |¦  «        d u S rd   )r´  Úsettledr¼  ry   rè  s     r=   Ú_graph_readyzoffload._graph_readyÜ  sD   € àÔ! TÐ)ÐP¨TÔ->×-FÒ-FÀxÑ-PÔ-PÐ{ÐVZÔVe×ViÒViÐjrÑVsÔVsÐw{ÐV{Ð{r?   c                 óN   — d„ |                       ||¦  «        d         D ¦   «         S )z¼The LoRA copies that a block reads, as (list, index): its graphs read them from buffers filled before each replay, so that they come
        and go with their block as without CUDA graphs.c           
      óÚ   — g | ]h\  }}|                      |d ¦  «        }|®t          t          dt          |¦  «        ¦  «        ¦  «        D ] }t	          j        ||         ¦  «        ¯||f‘Œ!ŒiS r¥  )ry   r*  r.  rÂ   rN   rT   )rX  r#  r³   rœ  r¼  s        r=   rZ  z.offload._graph_lora_inputs.<locals>.<listcomp>ã  s¥   € ð Wð Wð W¡, &¨$Ðci×cmÒcmÐnrÐtxÑcyÔcyÐZ^ð  @Dð  @PÝ"¥3 q­#¨d©)¬)Ñ#4Ô#4Ñ5Ô5ð @Pð  @PØ½¼ÈÈeÌÑ9UÔ9Uð @P��u�ð  @Pð  @Pð  @Pð  @Pr?   rÙ   )rï  rò  s      r=   Ú_graph_lora_inputszoffload._graph_lora_inputsà  s>   € ðWð W°$×2CÒ2CÀEÈ6Ñ2RÔ2RÐSTÔ2Uð Wñ Wô Wð 	Wr?   c                 óà   ‡— | j         |         }t          |dd ¦  «        }t          |dd ¦  «        Š|r‰€d S ˆfd„| j        |         D ¦   «         }|r|                      ||d|d¬¦  «         d S d S )NrS  rŸ  c                 ó6   •— i | ]\  }}}}}|‰v ¯|‰|         “ŒS r—   r—   )rX  rA  r!  r  s      €r=   r¨  z)offload._ensure_loras.<locals>.<dictcomp>î  sa   ø€ ð  rð  rð  rÑLeÈMÐ[\Ð^_ÐabÐdeð  P]ð  aqð  Pqð  Pq˜Ð(8¸Ô(Gð  Pqð  Pqð  Pqr?   T©rß  )rŽ  rS   r�  râ  )rV   rË  r	  rÆ   rÜ  rÝ  r  s         @r=   r  zoffload._ensure_lorasæ  sÆ   ø€ ð ”˜HÔ%ˆÝ '¨Ð/GÈÑ NÔ NÐÝ" 5Ð*=¸tÑDÔDÐØ$ð 	Ð(8Ð(@ØˆFð rð  rð  rð  rÐimÔið  AKô  jLð  rñ  rô  rˆØð 	`Ø×ÒÐ2°MÀ4ÈÐZ^ÐÑ_Ô_Ð_Ð_Ð_ð	`ð 	`r?   c                 ón	  ‡ ‡‡‡— |€‰n‰dz   |z   }ˆˆˆ fd„Šd„ d fˆfd„	}‰ j         �5‰ j        r.‰s,|�*‰                      ¦   «         r‰                      d¬¦  «         ‰ j         €P‰ j        �I‰sG|�E‰                      |¦  «        r0‰                      |¦  «        d         €‰                      ‰¦  «         ‰ j        o|d k    o‰  	                    ‰¦  «        dk    }‰  
                    ¦   «          ‰ j        ‰         }‰s4|d k    r.‰ j        �'‰ j                             ‰|¦  «        rd x}‰ j        ‰<   ‰s�|d k    r{‰ j        r6‰ j                             t           j                             ¦   «         ¦  «         ‰                      ‰|¦  «         ‰                      ¦   «         r‰                      ¦   «          ‰ j        dk    r!‰ j        ‰         }|                     ¦   «         }	|r¦‰s|€d n‰dz   |z   }
|
�H‰ j                             |
d ¦  «        �	|
‰ j        v r$|‰ j        |
<   ‰ j                             |
¦  «         ‰ j        dk    r*|‰ j        vr!t=          j        ‰rd	nd
› d|› d|	› d�¦  «         ‰                       ‰||¦  «         �nè‰ j        �r€|d k    �ry‰ j!        |         }|d k    p|d k    p|‰dz   |z   k    }|‰ j        v r‰ j        |         nd }|rw‰ j        dk    r9‰rt=          j        d|› d|	› d�¦  «         nt=          j        d|› d|	› d�¦  «          |t           j                             ¦   «         ‰ j"        |         ¦  «         t           j         #                    ¦   «          |s‰  $                    ‰|¦  «         |d k    r†‰ j        dk    rt=          j        d|› d|	› d�¦  «         ‰                      |¦  «        r/‰  %                    ||‰ j        ‰ j"        |         ‰ j&        ¦  «         n} |‰ j        ‰ j"        |         ¦  «         n`‰ j        dk    rt=          j        d|› d|	› d�¦  «          |‰ j'        ‰ j"        |         ¦  «         t           j         #                    ¦   «          ‰s
|‰ j        ‰<   ‰  (                    ‰¦  «        r$tS          ‰  *                    |¦  «        ¦  «         d S d S )NrÛ   c                 óp  •— ‰j         ‰         }i }t          |dd ¦  «        }|d k    st          |¦  «        dk    rd }nt          |dd ¦  «        }t          j                             | ¦  «        5  t          |¦  «        D ]ñ\  }}	|	\  }
}}}}|d k    r5t          |d         |d         ¦  «        }|j        rt          |
||¦  «         ŒH|�&||v r"‰j	         
                    |||         ¦  «        }n‰j	                             ||¦  «        }|sd|_        t          |
||¦  «         |d k    rt          |d         |d         |¦  «         ~~|d k    r!|                     |
d ¦  «        }|d k    r|||
<   Œòt          |¦  «        dk    r‰                     ||d|‰ ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrS  r   rŸ  r   Tr  )rŽ  rS   rÂ   rN   r  r   r¹  Úis_cudar–  r   rd  rf  Ú	_is_paramry   râ  )Ústream_to_userÔ  Úparallel_stagingr"  rÆ   rÝ  rÜ  r  rå  rG  rA  rã  r{  r  rÙ  Útied_pr|  r·  rË  rÒ  rV   s                     €€€r=   Ú
copy_blockz+offload.gpu_load_blocks.<locals>.copy_blockù  s\  ø€ Ø”K Ô)ˆEØˆMÝ%,¨UÐ4LÈdÑ%SÔ%SÐ!Ø$¨Ò,Ð,µÐ4IÑ0JÔ0JÈaÒ0OÐ0OØ#'Ð Ð å$+¨EÐ3FÈÑ$MÔ$MÐ å”×"Ò" =Ñ1Ô1ð  oð  oÝ )¨-Ñ 8Ô 8ð Dð D‘H�A�uØAFÑ>�M 1 a¨°Jà! TÒ)Ð)Ý!(¨*°Q¬-¸ÀA¼Ñ!GÔ!G˜Ø!œ>ð %Ý+¨M¸1¸vÑFÔFÐFØ$ð Ð(¨Q°%¨Z¨ZØ œK×/Ò/°°5¸´8Ñ<Ô<˜˜à œK×.Ò.¨qÐ2BÑCÔC˜Ø$ð +Ø&*˜œÝ# M°1°qÑ9Ô9Ð9à! TÒ)Ð)Ý'¨
°1¬°zÀ!´}ÀaÑHÔHÐHØ˜1Ø'¨4Ò/Ð/Ø%5×%9Ò%9¸-ÈÑ%NÔ%N˜	Ø$¨Ò,Ð,Ø:C˜M¨-Ñ8øÝ�}Ñ%Ô%¨Ò)Ð)Ø×$Ò$Ð%:¸MÈ4ÐQVÐfmÐbmÐ$ÑnÔnÐnðA oð  oð  oñ  oô  oð  oð  oð  oð  oð  oð  oð  oøøøð  oð  oð  oð  oð  oð  os   Á.D0F+Æ+F/Æ2F/c                  ó   — dS rW  r—   r—   r?   r=   rº  z)offload.gpu_load_blocks.<locals>.<lambda>$  s   € Èd€ r?   c                 ó    •—  ‰| |||¦  «        S rd   r—   )r  rÔ  r  r"  r  s       €r=   r  z+offload.gpu_load_blocks.<locals>.cpu_to_gpu$  s   ø€ Ø�:˜m¨]Ð<LÈeÑTÔTÐTr?   T©rÆ  rÙ   r   Ú
PreloadingÚLoadingz model r
  r  zPreloading model zLoading model r	  )+r  rÇ  rÄ  rÇ  r®  rá  rß  r»  rž  rÿ  r  r—  r´  r<  r�  r  rN   r  r  r  Úready_to_check_memÚempty_cache_if_neededrª   rŽ  r  r™  ry   r³  r�  r«  r   r‘  r  r˜  r�  rû  r  r  r  r›  rz  r   r)  )rV   rË  rÒ  rÒ  r	  r  rý  Úloaded_blockrÆ   Ú
model_namer  Úprevr]  Únext_blocks_entryr  s   `` `          @r=   Úgpu_load_blockszoffload.gpu_load_blocksò  s<  øøøø€ ð
 "-Ð!4�X�X¸(ÀS¹.È;Ñ:Vˆ
ð)	oð )	oð )	oð )	oð )	oð )	oð )	oðV GSÀlÐZ^ð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð Œ9Ð  TÔ%5Ð ¸gÐ È+ÐJaÐfj×fwÒfwÑfyÔfyÐJaØ×Ò¨ÐÑ.Ô.Ð.ØŒ9Ð Ô!4Ð!@ÈÐ!@ÐU`ÐUlÐqu÷  rDò  rDð  EOñ  rPô  rPÐUlð  UY÷  Ufò  Ufð  gqñ  Urô  Urð  stô  Uuð  U}Ø×$Ò$ XÑ.Ô.Ð.ØÔ(Ðm¨[¸DÒ-@ÐmÀT×E_ÒE_Ð`hÑEiÔEiÐlmÒEmˆ	Ø×ÒÑÔÐØÔ)¨(Ô3ˆàð 	?˜<¨4Ò/Ð/°DÔ4EÐ4QÐVZÔVg×VlÒVlÐmuð  xDñ  WEô  WEÐ4QØ:>Ð>ˆL˜4Ô-¨hÑ7Øð 	-˜<¨4Ò/Ð/ØÔ#ð Nð Ô$×0Ò0µ´×1JÒ1JÑ1LÔ1LÑMÔMÐMØ×"Ò" 8¨\Ñ:Ô:Ð:Ø×&Ò&Ñ(Ô(ð -Ø×*Ò*Ñ,Ô,Ð,ð Ô˜qÒ Ð Ø”K Ô)ˆEØŸšÑ*Ô*ˆJð
 ð $	%Ø!(Ðc¨LÐ,@˜˜ÀhÐQTÁnÐWcÑFcˆJØÐ%¨4Ô+A×+EÒ+EÀjÐRVÑ+WÔ+WÐ+_ÐcmÐquô  rDð  dDð  dDØ5?�Ô& zÑ2ØÔ"×&Ò& zÑ2Ô2Ð2ØÔ  AÒ%Ð%¨*¸D¼MÐ*IÐ*IÝ”
¨gÐD˜l˜l¸9ÐoÐoÈZÐoÐoÐ[eÐoÐoÐoÑpÔpÐpØ× Ò  ¨:°zÑBÔBÐBÑBØÔ!ñ 	% k°TÒ&9Ñ&9ØÔ)¨*Ô5ˆDØ˜D’LÐa L°DÒ$8Ða¸DÀHÈsÁNÐUaÑDaÒ<aˆEØFPÐTXÔTjÐFjÐFj Ô 6°zÔ BÐ BÐptÐØð \ØÔ$ qÒ(Ð(Øð XÝœ
Ð#Y°zÐ#YÐ#YÀZÐ#YÐ#YÐ#YÑZÔZÐZÐZåœ
Ð#V°JÐ#VÐ#VÀ*Ð#VÐ#VÐ#VÑWÔWÐWØ�
�5œ:×4Ò4Ñ6Ô6¸Ô8NÈzÔ8ZÑ[Ô[Ð[åŒJ×"Ò"Ñ$Ô$Ð$Øð 9Ø×"Ò" 8¨ZÑ8Ô8Ð8à  DÒ(Ð(ØÔ$ qÒ(Ð(Ý”JÐ]Ð4EÐ]Ð]ÈÐ]Ð]Ð]Ñ^Ô^Ð^Ø×%Ò%Ð&7Ñ8Ô8ð `Ø×(Ò(Ð):¸JÈÔH\Ð^bÔ^tð  vGô  _Hð  JNô  J^ñ  _ô  _ð  _ð  _à�J˜tÔ3°TÔ5KÐL]Ô5^Ñ_Ô_Ð_øð Ô  1Ò$Ð$Ý”
ÐN¨JÐNÐN¸*ÐNÐNÐNÑOÔOÐOØˆJ�tÔ*¨DÔ,BÀ:Ô,NÑOÔOÐOÝŒJ×"Ò"Ñ$Ô$Ð$Øð 	7Ø+6ˆDÔ˜xÑ(Ø×Ò˜XÑ&Ô&ð 	?Ý˜t×1Ò1°*Ñ=Ô=Ñ>Ô>Ð>Ð>Ð>ð	?ð 	?r?   c                 óp   — t          j        d„ | j        |dz   |z            dd …         D ¦   «         ¦  «        S )Nc              3   óF   K  — | ]^}}}t          ||¦  «        j        V — Œd S rd   )rS   r	  )rX  rA  rã  r!  s       r=   rc  z(offload.block_in_vram.<locals>.<genexpr>r  sP   è è € ð  Uð  UÐBVÀ-ÐQRÐUV�G M°1Ñ5Ô5Ô=ð  Uð  Uð  Uð  Uð  Uð  Ur?   rÛ   r¾   )rd  re  r�  )rV   rË  rÒ  s      r=   Úblock_in_vramzoffload.block_in_vramo  sy   € õ Œ|ð  Uð  UÐZ^ÔZpÐqyÐ|Ñqð  CNñ  rNô  [Oð  PRð  PSð  PSô  [Tð  Uñ  Uô  Uñ  Uô  Uð  	Ur?   c                 óò  — |€|n|dz   |z   }|                       |¦  «         | j                             |d ¦  «         |                      |¦  «         |d k    r|| j        |         k    r
d | j        |<   |€|n|dz   |z   }| j        dk    r<| j        |         }|                     ¦   «         }t          j	        d|› d|› d�¦  «         | j
        |         }| j        |         }i }t          |dd ¦  «        }t          |dd ¦  «        }	|D ]C}
|
\  }}}}}t          |||¦  «         ~|	d k    r!|	                     |d ¦  «        }|d k    r|||<   ŒDt          |¦  «        dk    r|                      ||d	|¦  «         d S d S )
NrÛ   rÙ   zUnloading model r
  z
) from GPUrS  rŸ  r   F)r  r«  r•  rI  r—  rª   rŽ  r  r   r‘  r�  rS   r–  ry   rÂ   râ  )rV   rË  rÒ  r	  rÆ   r  rÔ  rÝ  rÜ  r  rG  rA  rã  r{  r  r!  r·  s                    r=   r  zoffload.gpu_unload_blockst  sÓ  € ð "-Ð!4�X�X¸(ÀS¹.È;Ñ:Vˆ
Ø×Ò˜:Ñ&Ô&Ð&ØŒ×Ò˜* dÑ+Ô+Ð+Ø�Š˜
Ñ#Ô#Ð#Ø˜$ÒÐ ;°$Ô2DÀXÔ2NÒ#NÐ#NØ+/ˆDÔ˜xÑ(ð #.Ð"5�h�h¸8Àc¹>ÈKÑ;WˆØÔ˜qÒ Ð Ø”K Ô)ˆEØŸšÑ*Ô*ˆJÝŒJÐO¨+ÐOÐO¸ÐOÐOÐOÑPÔPÐPàÔ.¨{Ô;ˆØ”˜HÔ%ˆØˆÝ!(¨Ð0HÈ$Ñ!OÔ!OÐÝ# EÐ+>ÀÑEÔEÐà"ð 	<ð 	<ˆEØ16Ñ-ˆM˜1˜a ¨AÝ˜M¨1¨qÑ1Ô1Ð1Øà 4Ò'Ð'Ø-×1Ò1°-ÀÑFÔF�	Ø Ò$Ð$Ø2;�M -Ñ0øåˆ}ÑÔ Ò!Ð!Ø×ÒÐ2°MÀ5È%ÑPÔPÐPÐPÐPð "Ð!r?   c                 óX  — ddl m}  || |¦  «         |                      |¦  «        \  }}|rV| j        �O| j        sH| j        j        s<| j        j        d|                      |¦  «        z  k     r|                      d¬¦  «         |r+| j        €$| j	        �t          |                      |¦  «        z  nd}t                               | ||||¦  «         | j        |         }| j                             |¦  «         | j                             |¦  «         t!          j        | |¦  «         | j         �| j                              |¦  «         d g| j        |         ¢D ]R}|�|| j        |         vrŒ|                      ||d¦  «         |�%|| j        |         vr|                      ||¦  «         ŒSd S )Nr   )Úend_open_cyclesrÙ   Tr  r   )r´  r   rs  r  r§  rò  ré  r¸  rÇ  r®  r¶  rÞ  r®  rŽ  r�  rž   r   Ú_load_resourcesÚon_loadrš  r  r  )rV   rË  r   r¨  r©  r  rÆ   r1  s           r=   Úgpu_loadzoffload.gpu_loadœ  s  € Ø1Ð1Ð1Ð1Ð1Ð1Øˆ˜˜hÑ'Ô'Ð'Ø—o’o hÑ/Ô/‰ˆˆeØð 	/�T”YÐ*°4Ô3IÐ*ÐRVÔR[ÔR`Ð*ÐeiÔenÔesÐvwÐz~÷  {Kò  {Kð  LTñ  {Uô  {Uñ  wUò  fUð  fUØ×Ò¨ÐÑ.Ô.Ð.ØCGð  IÈDÌIÐL]ÐbfÔbuð  cBÕ" T×%5Ò%5°hÑ%?Ô%?Ñ?Ð?ð  HIˆÝ�Š˜˜h¨¨e°TÑ:Ô:Ð:Ø”˜HÔ%ˆØÔ×!Ò! %Ñ(Ô(Ð(ØÔ×%Ò% hÑ/Ô/Ð/ÝÔ  hÑ/Ô/Ð/ØÔÐ(ØÔ×%Ò% hÑ/Ô/Ð/ØÐL $Ô"AÀ(Ô"KÐLð 	=ð 	=ˆJàÐ%¨*¸DÔ<[Ð\dÔ<eÐ*eÐ*eØØ× Ò  ¨:°tÑ<Ô<Ð<ØÐ%¨*¸DÔ<[Ð\dÔ<eÐ*eÐ*eØ×&Ò& x°Ñ<Ô<Ð<øð	=ð 	=r?   r—   r	  c          	      ó¶  ‡ ‡‡— ‰                       ¦   «          t          j                             ¦   «          t	          ‰ j        ¦  «        D ]-}|j        ‰ j        v r|j        ‰vr|                     ¦   «          Œ.‰ j	         
                    ¦   «         D ]\  Š}‰‰vr|                     ¦   «          Œ‰ j        �L‰ j                             ¦   «          ‰ j        r,‰s*‰                      ¦   «         r‰                      d¬¦  «         ‰ j        D �]dŠ‰‰v rŒ‰                      ‰d ¦  «         ‰ j        ‰         D ]}‰                      ‰|¦  «         Œ‰ j        ‰         }|d k    r|‰                      ‰|¦  «         ‰dz   |z   }|‰ j        v r‰ j        |         nd }|d k    r6|                     d¦  «        }‰                      ‰||dz   d …         ¦  «         d ‰ j        ‰<   ˆfd„‰ j        D ¦   «         D ]0}	‰                      ‰|	t/          ‰¦  «        dz   d …         ¦  «         Œ1‰                      ‰¦  «        r8ˆfd„‰ j        D ¦   «         D ]$}	t5          ‰                      |	¦  «        ¦  «         Œ%�Œf‰ j        �+‰ j                             ˆfd„‰ j        D ¦   «         ¦  «         ˆfd„‰ j        D ¦   «         D ]
Š‰ j        ‰= Œ‰ j         
                    ¦   «         D ]\  Š}
‰‰vr|
                      ¦   «          ŒtC          j"        ‰ ˆfd	„‰ j        D ¦   «         ¦  «         ˆ fd
„‰ j#         
                    ¦   «         D ¦   «         ‰ _#        ˆfd„‰ j        D ¦   «         ‰ _        ˆ fd„‰ j        D ¦   «         ‰ _$        tJ           &                    ‰ ¦  «         t          j         '                    ¦   «          tQ          j)        ¦   «          tU          j*        ¦   «         ‰ _+        d S )NTr  rÛ   r   c                 óD   •— g | ]}|                      ‰d z   ¦  «        ¯|‘ŒS rò  rù  ró  s     €r=   rZ  z&offload.unload_all.<locals>.<listcomp>Ï  s1   ø€ Ð_Ð_Ð_ E¸e×>NÒ>NÈxÐZ]É~Ñ>^Ô>^Ð_˜%Ð_Ð_Ð_r?   c                 óT   •— g | ]$}|                      d d¦  «        d         ‰k    ¯"|‘Œ%S ©rÛ   r   r   r…  ró  s     €r=   rZ  z&offload.unload_all.<locals>.<listcomp>Ô  s:   ø€ ÐnÐnÐn¨È5Ï;Ê;ÐWZÐ\]ÑK^ÔK^Ð_`ÔKaÐemÒKmÐKm˜eÐKmÐKmÐKmr?   c                 ó   •— g | ]}|‰v¯|‘Œ	S r—   r—   ©rX  rË  r<  s     €r=   rZ  z&offload.unload_all.<locals>.<listcomp>Ø  ó%   ø€ Ð(qÐ(qÐ(q°hÐ\dÐlpÐ\pÐ\p¨Ð\pÐ\pÐ\pr?   c                 ó   •— g | ]}|‰v¯|‘Œ	S r—   r—   r)  s     €r=   rZ  z&offload.unload_all.<locals>.<listcomp>Ù  s$   ø€ Ð[Ð[Ð[ hÀhÐVZÐFZÐFZ˜ÐFZÐFZÐFZr?   c                 ó   •— g | ]}|‰v¯|‘Œ	S r—   r—   r)  s     €r=   rZ  z&offload.unload_all.<locals>.<listcomp>Þ  r*  r?   c                 ón   •— i | ]1\  }}|d                                dd¦  «        d          ‰j        v ¯.||“Œ2S )r   rÛ   r   )rÁ   r¯  )rX  r£  r3  rV   s      €r=   r¨  z&offload.unload_all.<locals>.<dictcomp>ß  sL   ø€ ÐÐÐ©*¨#¨uÐSVÐWXÔSY×S_ÒS_Ð`cÐefÑSgÔSgÐhiÔSjÐnrÔn~ÐS~ÐS~˜3 ÐS~ÐS~ÐS~r?   c                 ó   •— g | ]}|‰v ¯|‘Œ	S r—   r—   r)  s     €r=   rZ  z&offload.unload_all.<locals>.<listcomp>à  s%   ø€ Ð!fÐ!fÐ!f¨xÐU]ÐaeÐUeÐUe (ÐUeÐUeÐUer?   c                 ó*   •— g | ]}‰j         |         ‘ŒS r—   )rŽ  r‚  s     €r=   rZ  z&offload.unload_all.<locals>.<listcomp>á  s    ø€ Ð[Ð[Ð[¸˜dœk¨(Ô3Ð[Ð[Ð[r?   ),r  rN   r  rû  r�   r£  rË  r§  Údrop_residentr¸  r›   Úunloadr  r  rÇ  rÄ  rÇ  r  rš  r—  r™  r  r«  rÂ   rz  r�  r   r)  r´  Ú	on_unloadr¯  r·  r   r   Ú_unload_resourcesr°  r�  rÞ  r®  rá  rß  rà  r‹   r–  )rV   r<  r  Ú	residencyr1  r  r	  r  r*  r¡  ÚgraphsrË  s   ``         @r=   Ú
unload_allzoffload.unload_all²  sX  øøø€ Ø×ÒÑÔÐÝŒ
×ÒÑ Ô Ð Ý˜Ô)Ñ*Ô*ð 	%ð 	%ˆDØŒ} Ô 6Ð6Ð6¸4¼=ÐPTÐ;TÐ;TØ×"Ò"Ñ$Ô$Ð$øØ#'Ô#8×#>Ò#>Ñ#@Ô#@ð 	#ð 	#ÑˆH�iØ˜tÐ#Ð#Ø× Ò Ñ"Ô"Ð"øØŒ9Ð ØŒI�OŠOÑÔÐØÔð 3¨ð 3°×1BÒ1BÑ1DÔ1Dð 3Ø×"Ò"¨TÐ"Ñ2Ô2Ð2ØÔ.ð 	Bñ 	BˆHØ˜4ÐÐØØ×"Ò" 8¨TÑ2Ô2Ð2Ø"Ô=¸hÔGð =ð =�
Ø×&Ò& x°Ñ<Ô<Ð<Ð<àÔ-¨hÔ7ˆLØ˜tÒ#Ð#Ø×&Ò& x°Ñ>Ô>Ð>Ø%¨™^¨lÑ:�
ØJTÐX\ÔXnÐJnÐJn DÔ$:¸:Ô$FÐ$FÐtxÐ!Ø$¨Ò,Ð,Ø+×1Ò1°#Ñ6Ô6�CØ×*Ò*¨8Ð5FÀsÈ1ÁuÀvÀvÔ5NÑOÔOÐOØ/3�Ô" 8Ñ,Ø_Ð_Ð_Ð_¨T¬]Ð_Ñ_Ô_ð Lð L�Ø×&Ò& x°µs¸8±}´}ÀqÑ7HÐ7IÐ7IÔ1JÑKÔKÐKÐKØ× Ò  Ñ*Ô*ð Bð oÐnÐnÐn°Ô1GÐnÑnÔnð Bð B�EÝ& t×'9Ò'9¸%Ñ'@Ô'@ÑAÔAÐAÐAùàÔÐ(ØÔ×'Ò'Ð(qÐ(qÐ(qÐ(qÀ$ÔBXÐ(qÑ(qÔ(qÑrÔrÐrØ[Ð[Ð[Ð[°$Ô2BÐ[Ñ[Ô[ð 	+ð 	+ˆHØÔ  Ð*Ð*Ø $Ô 0× 6Ò 6Ñ 8Ô 8ð 	ð 	ÑˆH�fØ˜tÐ#Ð#Ø—’‘”�øÝÔ! $Ð(qÐ(qÐ(qÐ(qÀ$ÔBXÐ(qÑ(qÔ(qÑrÔrÐrØÐÐÐ¸¼×8MÒ8MÑ8OÔ8OÐÑÔˆŒØ!fÐ!fÐ!fÐ!f¸4Ô;QÐ!fÑ!fÔ!fˆÔØ[Ð[Ð[Ð[ÀDÔDZÐ[Ñ[Ô[ˆÔÝ�Š˜ÑÔÐÝŒ
×ÒÑ Ô Ð Ý
Œ
‰ŒˆÝ'+¤y¡{¤{ˆÔ$Ð$Ð$r?   c                 ó*  — g }i }|D ]‡}t          j        |¦  «        r\|j        t           j        k    r*|                     |¦  «                             d¬¦  «        }n|j        s|                     d¬¦  «        }|                     |¦  «         Œˆ|D ]}||         }t          j        |¦  «        r\|j        t           j        k    r*|                     |¦  «                             d¬¦  «        }n|j        s|                     d¬¦  «        }|||<   Œ€||fS rÔ  )rN   rT   r,   rö  rU   r  r	  rž   )rV   r,   re   rf   Únew_argsÚ
new_kwargsÚargr¢   s           r=   Úmove_args_to_gpuzoffload.move_args_to_gpuç  s  € ØˆØˆ
àð 	!ð 	!ˆCÝŒ˜sÑ#Ô#ð 6Ø”9¥¤Ò-Ð-ØŸ&š& ™-œ-×,Ò,¸$Ð,Ñ?Ô?�C�CØœð 6ØŸ(š(°˜(Ñ5Ô5�CØ�OŠO˜CÑ Ô Ð Ð Øð 	ð 	ˆAØ˜”)ˆCÝŒ˜sÑ#Ô#ð 6Ø”9¥¤Ò-Ð-ØŸ&š& ™-œ-×,Ò,¸$Ð,Ñ?Ô?�C�CØœð 6ØŸ(š(°˜(Ñ5Ô5�CØˆJ�q‰MˆMà˜Ð#Ð#r?   c                 ól   — | j         rd S t          j        ¦   «         }|| j        z
  dk     rdS || _        dS )Nr|  FT)r’  r‹   r–  )rV   Ú	cur_clocks     r=   r  zoffload.ready_to_check_memý  sB   € ØÔ!ð 	ØˆVÝ”I‘K”Kˆ	à˜Ô4Ñ4°eÒ;Ð;Ø�5Ø'0ˆÔ$Øˆtr?   c                 ób  — t           j                             ¦   «         }d| j        z  }||k    r|t           j                             ¦   «         }|d|z  k    rWt           j                             ¦   «          t          j        ¦   «         }| j        dk    rt          j	        d|› �¦  «         d S d S d S d S )NçÍÌÌÌÌÌì?gffffffæ?rÙ   zEmpty Cuda cache at )
rN   r  Úmemory_reservedr•  Úmemory_allocatedrá  r‹   rª   r   r‘  )rV   Úmem_reservedÚmem_thresholdÚmem_allocatedÚtms        r=   r  zoffload.empty_cache_if_needed  s²   € Ý”z×1Ò1Ñ3Ô3ˆØ˜DÔ4Ñ4ˆØ˜=Ò(Ð(Ý!œJ×7Ò7Ñ9Ô9ˆMØ  |Ñ 3Ò3Ð3å”
×&Ò&Ñ(Ô(Ð(Ý”I‘K”K�ØÔ$ qÒ(Ð(Ý”JÐ:°bÐ:Ð:Ñ;Ô;Ð;Ð;Ð;ð )Ð(à3Ð3ð )Ð(r?   Útarget_modulec                 ór   — |                      d¬¦  «        D ]} dS |                     d¬¦  «        D ]} dS dS )NFrÌ  T)rÁ  rÂ  )rV   rF  r!  s      r=   Úany_param_or_bufferzoffload.any_param_or_buffer  sU   € à×)Ò)°5Ð)Ñ9Ô9ð 	ð 	ˆAØ�4�4à×&Ò&°Ð&Ñ6Ô6ð 	ð 	ˆAØ�4�4àˆur?   c                 óŒ   — ||         }t          |t          ¦  «        rt          |dd¦  «        }||         S t          |¦  «        S )NrZ  r   )r™   r�   rS   r°   )rV   Úloras_scalingrÆ   Úactive_adapterÚscaling_listr[  s         r=   rp  zoffload._get_lora_scaling   sH   € Ø$ ^Ô4ˆÝ�l¥DÑ)Ô)ð 	'Ý˜U O°QÑ7Ô7ˆGØ Ô(Ð(å˜Ñ&Ô&Ð&r?   rL   c                 ó  — |j         }t          |dd ¦  «        }d }	d }
|j        }|j        }d}d}|D ]Á}|                     |dz   d ¦  «        }|d k    rŒ"|d d…         \  }}}}}|                      |||¦  «        |z  }|dk    rŒS|r|�|                     ¦   «         nd }	d}|r|�|                     ¦   «         nd }
d}|�|                     ||¬¦  «         d }|�|                     ||¬¦  «         d }ŒÂ ||i |¤Ž}|	�|	|_        |
�|
|_        |S )Nr2   Tro  r¹   r   Fr„  )	r:   rS   rS  rT  ry   rp  rw  r†  rœ  )rV   rÆ   rÏ   rN  rg   re   rf   r:   r2   Úoriginal_weightÚoriginal_biasÚactive_adaptersrJ  Úfirst_weightÚ
first_biasrK  rœ  Údiff_wr!  r:  rê  rr  Úrets                          r=   rS  zoffload._lora_generic_forward*  sm  € àÔ!ˆÝ˜	 6¨4Ñ0Ô0ˆØˆØˆØÔ6ˆØÔ,ˆØˆØˆ
Ø-ð 	ð 	ˆNØ—>’> .°6Ñ"9¸4Ñ@Ô@ˆDØ�tŠ|ˆ|ØØ*.¨r°¨r¬(Ñ'ˆF�A�v˜q %Ø×,Ò,¨m¸UÀNÑSÔSÐV[Ñ[ˆGØ˜!Š|ˆ|ØØð %Ø39Ð3E §¢¡¤ È4�Ø$�Øð #Ø/3Ð/?˜tŸzšz™|œ|˜|ÀT�Ø"�
àÐ!Ø—’˜F¨7�Ñ3Ô3Ð3Ø�ØÐ!Ø—	’	˜&¨�	Ñ1Ô1Ð1Ø�øàˆd�DÐ$˜FÐ$Ð$ˆàÐ&°¨¬ØÐ$°- d¤iàˆ
r?   ÚblendÚ	dora_modec                 ó  — t          |dg ¦  «        }t          |di ¦  «        }	|€Q|j        }d}t          |t          ¦  «        r|j                             ¦   «         }n|j                             ¦   «         }|j        }
d}|                     ¦   «         }t          j
                             |ddt          j        ¬¦  «                             |¦  «        }||z  }|                     |
¦  «        |d<   d }d }d }d }|D �]@}|                     |dz   d ¦  «        }|€Œ|d d	…         \  }}}}}|€Œ2|                      |	||¦  «        t          |¦  «        z  }|d
k    rŒ`|�J|�Ht          j        ||¦  «        }||z  }|                     |¦  «         |€|n|                     |¦  «        }|dk    r|}nY|dk    rA|€|                     ¦   «         }|                     |                     |¦  «        |¬¦  «         nt+          d|› �¦  «        ‚|�0|                     |¦  «        }|€|n|                     |¦  «        }d }�ŒB|€|}|�Ž|                     |¦  «         |                     ¦   «         }t          j
                             |ddt          j        ¬¦  «                             |¦  «        }||z  }||z  }|                     |
¦  «        |d<   d }n||z  }|�2|€|}n-|r|                     ¦   «         n|}|                     |¦  «         ||fS )NrS  rT  Tg:Œ0âŽyE>r   )rÅ  Úkeepdimr,   .ro  r¹   r   Ú	ref_exactrU  r„  zUnknown dora_mode: )rS   r2   r™   r$   r:   Ú
dequantizerw  r,   r°   rN   ÚlinalgÚvector_normrö  Ú	clamp_minrU   ry   rp  ÚmmÚmul_r†  rÅ  rÑ  Úmul)rV   rÆ   rÏ   Úadapters_datar:   r2   rO  rV  rP  rJ  Ú
base_dtypeÚepsÚW0Úg0Ú
dir_updateÚgÚ
bias_deltar³   rœ  rP  rQ  r:  Úg_absrê  r•   ÚdVÚdbÚVÚVns                                r=   Ú_dora_linear_forwardzoffload._dora_linear_forwardR  s9  € õ " %Ð)AÀ2ÑFÔFˆÝ! %Ð)9¸2Ñ>Ô>ˆàˆ>Ø”>ˆDØ ˆMÝ˜)¥\Ñ2Ô2ð 2Ø"Ô)×4Ò4Ñ6Ô6��à"Ô)×/Ò/Ñ1Ô1�à”\ˆ
ØˆØ�\Š\‰^Œ^ˆÝŒ\×%Ò% b¨a¸ÅUÄ]Ð%ÑSÔS×]Ò]Ð^aÑbÔbˆð 	ˆb‰ˆØ—u’u˜ZÑ(Ô(ˆˆs‰Øˆàˆ
ØˆØˆ
ð $ð  	ñ  	ˆDØ ×$Ò$ T¨F¡]°DÑ9Ô9ˆDØˆ|˜XØ)-¨b¨q¨b¬Ñ&ˆAˆq�&˜% Øˆ}˜hà×&Ò& }°e¸TÑBÔBÅUÈ5Á\Ä\ÑQˆAØ�AŠvˆv�xð � A MÝ”X˜a ‘^”^�Ø�b‘�Ø—’˜‘
”
�
Ø#-Ð#5˜R˜R¸:¿?º?È2Ñ;NÔ;N�
ð ˜KÒ'Ð'à��Ø˜gÒ%Ð%à�9ØŸš™
œ
�AØ—’�u—y’y ‘}”}¨A�Ñ.Ô.Ð.Ð.å Ð!B°yÐ!BÐ!BÑCÔCÐCð Ð!Ø—Z’Z ‘]”]�Ø#-Ð#5˜R˜R¸:¿?º?È2Ñ;NÔ;N�
Ø�ùàˆ9ØˆAð Ð!Ø�KŠK˜
Ñ#Ô#Ð#Ø—’‘”ˆAÝ”×)Ò)¨!°¸DÍÌÐ)ÑVÔV×`Ò`ÐadÑeÔeˆBØ�‰GˆAØ�‰FˆAØŸ$š$˜zÑ*Ô*ˆF�3‰KØˆAˆAà�a‰KˆFð Ð!Øˆ|Ø!��à'4Ð>�t—z’z‘|”|�|¸$�Ø—	’	˜*Ñ%Ô%Ð%à�tˆ|Ðr?   c           	      ó€  — t          |j        d         ¦  «        }t          |j        d         ¦  «        }t          |¦  «        dk    r"|                     |j        d         df¦  «        S |                     d||¦  «        }g }|D ]‰\  }	}
}}t          j        ||	|
…                              d¦  «        |¦  «        }|                     t          j        ||||…         j	        ¦  «         
                    d|
|	z
  ||z
  z  ¦  «        ¦  «         ŒŠt          |¦  «        dk    r|d         nt          j        |d¬¦  «        S )Nr   r   r¾   rÄ  )rõ  r÷   rÂ   Ú	new_zerosrù   rN   ÚmatmulÚ	unsqueezerž   r}  rü   Úcat)rV   Úx_2dr=  r>  rÚ  rE  rG  Úx_3dr»  Úr0Úr1Úc0Úc1Úys                 r=   Ú_lokr_chunk_forwardzoffload._lokr_chunk_forward³  s)  € Ý�”˜qÔ!Ñ"Ô"ˆÝ�”˜qÔ!Ñ"Ô"ˆÝˆu‰:Œ:˜Š?ˆ?Ø—>’> 4¤:¨a¤=°!Ð"4Ñ5Ô5Ð5à�yŠy˜˜R Ñ$Ô$ˆØˆØ#ð 	`ð 	`‰NˆB��B˜Ý”˜W R¨ Uœ^×5Ò5°aÑ8Ô8¸$Ñ?Ô?ˆAØ�MŠM�%œ, q¨'°"°R°%¬.Ô*:Ñ;Ô;×CÒCÀBÈÈbÉÐUWÐZ\ÑU\ÑH]Ñ^Ô^Ñ_Ô_Ð_Ð_Ý ™KœK¨1Ò,Ð,ˆv�aŒyˆyµ%´)¸FÈÐ2JÑ2JÔ2JÐJr?   rb  c                 ó.  — |j         }|j        }|j        }	|j        }
d}d}|	D ]R}|                     |dz   d ¦  «        }|€Œ|d         �d}|d         }|                     dd¦  «        dk    rd}|r|r nŒS|j                             d	d ¦  «        p|j        }|�rÞ|�sÛd}t          |t          ¦  «        r| 	                    ¦   «         }n| 
                    ¦   «         }|	D �]#}|                     |dz   d ¦  «        }|€Œ|d d…         \  }}}}}|                      |
||¦  «        |z  }|d
k    s|�ŒR|j        }|� |j        |k    r|                     |¦  «        }|� |j        |k    r|                     |¦  «        }|� |j        |k    r|                     |¦  «        }|�|                     |||¬¦  «         |�H|€| 
                    ¦   «         }d}n|r| 
                    ¦   «         }d}|                     ||¬¦  «         �Œ%|                      ||||||¦  «        \  }}|}|�*|j        |j        k    r|                     |j        ¦  «        }t           j        j                             |||¬¦  «        }�n|}|�*|j        |j        k    r|                     |j        ¦  «        }t)          |dd¦  «        r |j        |g|¢R i |¤Ž}n't           j        j                             |||¬¦  «        }|	�r¡|j        }|j        |k    r|                     |¦  «        }|                     ¦   «         dk    r|n |                     d|j        d         ¦  «        }|                     ¦   «         dk    r|n |                     d|j        d         ¦  «        }|	D �]Þ}|                     |dz   d ¦  «        }|€Œ|\  }}}}}} |                      dd¦  «        }!|                      |
||¦  «        |z  }|d
k    s|�Œa|j        }|� |j        |k    r|                     |¦  «        }|� |j        |k    r|                     |¦  «        }|� |j        |k    r|                     |¦  «        }|!dk    �rm|�|€ŒÚt3          |j        d         ¦  «        }"t3          |j        d         ¦  «        }#t3          |j        d
         ¦  «        t3          |j        d
         ¦  «        z  }$|                      dd ¦  «        }%|%€…|                     d|"|#¦  «        }&t!          j        |                     d
¦  «        |&¦  «        }'t!          j        |'|j        ¦  «        }'|                     |'                     d|$¦  «        |¬¦  «         nF|                      dg ¦  «        }(|                      ||||(¬¦  «        }'|                     |'|¬¦  «         |�|                     ||¬¦  «         ~'�ŒB|!dk    r9|                     ||j        d|¬¦  «         |�|                     ||¬¦  «         �Œ�|€|                     ||¬¦  «         �Œœ||j        z  }'|                     |'|j        d|¬¦  «         |�|                     ||¬¦  «         ~'�Œà|}|j        |k    r|                     |¦  «        }|S )NFro  r  Tr¹   r¹  rµ  r¶  rI  r   r„  )r2   Ú"_mm_requires_native_linear_forwardrÙ   r¾   r   rö  rø  )rÚ  rô  r‚  )r:   r2   rS  rT  ry   rŽ  r,   r™   r$   rZ  rw  rp  rU   r…  r†  rn  rN   rO   rP   rh  rS   rK  rÅ  rü   r÷   rõ  rù   rq  rr  r}  r{  ))rV   rÆ   rÏ   rN  rb  re   rf   r:   r2   rP  rJ  Úany_doraÚany_lokrrK  rœ  r/  r,   rO  Úlora_A_weightÚlora_B_weightr:  ri  rê  rr  r  Ú	base_biasr;  Úcompute_dtypert  Ú	result_2dr8  r9  Úadapter_metar?  rE  rG  rB  rÔ  ru  rz  rÚ  s)                                            r=   rL  zoffload._lora_linear_forwardÂ  s  € ØÔ!ˆØŒ~ˆØÔ6ˆØÔ,ˆØˆØˆØ-ð 
	ð 
	ˆNØ—>’> .°6Ñ"9¸4Ñ@Ô@ˆDØˆ|ØØ�AŒwÐ"Ø�Ø˜”7ˆDØ�xŠx˜ Ñ'Ô'¨6Ò1Ð1Ø�Øð ˜Hð Ø�øàÔ"×&Ò&Ð'9¸4Ñ@Ô@ÐPÀFÄLˆØñ k	5˜Hñ k	5Ø ˆMÝ˜)¥\Ñ2Ô2ð (Ø×*Ò*Ñ,Ô,��àŸš™œ�Ø"1ð 5ñ 5�Ø!—~’~ n°vÑ&=¸tÑDÔD�Ø�<ØØEIÈ"È1È"ÄXÑB�˜}¨f°e¸UØ×0Ò0°ÀÀ~ÑVÔVÐY^Ñ^�Ø˜a’<�< 5Ð#4ØØ%œ|�Ø Ð,°Ô1DÈÒ1TÐ1TØ$1×$4Ò$4°\Ñ$BÔ$B�MØ Ð,°Ô1DÈÒ1TÐ1TØ$1×$4Ò$4°\Ñ$BÔ$B�MØÐ%¨&¬,¸,Ò*FÐ*FØ#ŸYšY |Ñ4Ô4�FØ Ð,Ø—M’M -°Àg�MÑNÔNÐNØÐ%Ø�|Ø%Ÿ|š|™~œ~˜Ø(-˜˜Ø&ð .Ø#Ÿzšz™|œ|˜Ø(-˜Ø—I’I˜f¨G�IÑ4Ô4Ð4ùØ×4Ò4°U¸IÀzÐSYÐ[_ÐanÑoÔo‰LˆF�DØˆIØÐ$¨¬¸A¼GÒ)CÐ)CØ%ŸLšL¨¬Ñ1Ô1�	Ý”XÔ(×/Ò/°°6À	Ð/ÑJÔJˆF‰Fð ˆIØÐ$¨¬¸A¼GÒ)CÐ)CØ%ŸLšL¨¬Ñ1Ô1�	Ý�yÐ"FÈÑNÔNð OØ7˜Ô7¸ÐK¸DÐKÐKÐKÀFÐKÐK��åœÔ,×3Ò3°A°vÀIÐ3ÑNÔN�àñ =5Ø &¤�Ø”7˜mÒ+Ð+ØŸš˜]Ñ+Ô+�AØŸEšE™GœG qšL˜L�q�q¨a¯iªi¸¸A¼GÀB¼KÑ.HÔ.H�Ø&,§j¢j¡l¤l°aÒ&7Ð&7˜F˜F¸V¿^º^ÈBÐPVÔP\Ð]_ÔP`Ñ=aÔ=a�	à&5ð 3ñ 3�NØ%Ÿ>š>¨.¸6Ñ*AÀ4ÑHÔH�DØ�|Ø ØIMÑF�F˜F F¨E°5¸,Ø#/×#3Ò#3°F¸FÑ#CÔ#C�Là"×4Ò4°]ÀEÈ>ÑZÔZÐ]bÑb�GØ !’|�| uÐ'8Ø Ø#)¤<�LØÐ)¨f¬l¸lÒ.JÐ.JØ!'§¢¨<Ñ!8Ô!8˜ØÐ)¨f¬l¸lÒ.JÐ.JØ!'§¢¨<Ñ!8Ô!8˜ØÐ)¨f¬l¸lÒ.JÐ.JØ!'§¢¨<Ñ!8Ô!8˜à# vÒ-Ñ-Ø!˜>¨V¨^Ø$Ý  ¤¨a¤Ñ1Ô1˜Ý  ¤¨a¤Ñ1Ô1˜Ý"% f¤l°1¤oÑ"6Ô"6½¸V¼\È!¼_Ñ9MÔ9MÑ"M˜Ø ,× 0Ò 0°¸tÑ DÔ D˜Ø ˜=Ø#'§9¢9¨R°°RÑ#8Ô#8˜DÝ %¤¨V×-=Ò-=¸aÑ-@Ô-@À$Ñ GÔ G˜AÝ %¤¨Q°´Ñ 9Ô 9˜AØ%ŸNšN¨1¯9ª9°R¸Ñ+AÔ+AÈ˜NÑQÔQÐQÐQà$0×$4Ò$4°\À2Ñ$FÔ$F˜EØ $× 8Ò 8¸¸vÀvÐUZÐ 8Ñ [Ô [˜AØ%ŸNšN¨1°G˜NÑ<Ô<Ð<Ø!Ð-Ø%ŸNšN¨6¸˜NÑAÔAÐAØÙ Ø# vÒ-Ð-Ø!×(Ò(¨¨v¬x¸aÀwÐ(ÑOÔOÐOØ!Ð-Ø%ŸNšN¨6¸˜NÑAÔAÐAÙ à�~Ø!Ÿš v°W˜Ñ=Ô=Ð=Ñ=à  6¤8™O˜Ø!×(Ò(¨¨F¬H¸1ÀGÐ(ÑLÔLÐLØ!Ð-Ø%ŸNšN¨6¸˜NÑAÔAÐAØ™AØ$�Ø”< <Ò/Ð/Ø#ŸYšY |Ñ4Ô4�Fàˆr?   c                 ó2  — |j         }i }||vsJ ‚|||<   |||<   ||_        ||j        d<   ||_        t	          |t
          j        j        ¦  «        st          |dd¦  «        rt          }	nt          }	t          j        t          j        |	|¦  «        |¦  «        S )NrM  Úis_nvfp4F)rX   rH  rŽ  rK  r™   rN   rO   r`  rS   rQ  rT  r7  r8  r9  )
rV   rÏ   Úcurrent_modelrË  r  Úloras_model_shortcutsrÎ   Úold_forwardrN  Ú	target_fns
             r=   Ú	hook_lorazoffload.hook_loraF  s¬   € ØÔ'ˆàˆ
ØÐ%:Ð:Ð:Ð:Ð:Ø0:Ð˜nÑ-Ø&0Ð˜Ñ#Ø",ˆ	ÔØ/<ˆ	ÔÐ+Ñ,Ø)4ˆ	Ô&å�i¥%¤(¤/Ñ2Ô2ð 	1µg¸iÈÐUZÑ6[Ô6[ð 	1Ý/ˆIˆIå0ˆIÝÔ'­	Ô(9¸)ÀYÑ(OÔ(OÐQ\Ñ]Ô]Ð]r?   c                 óÀ   ‡ — |‰ j         v rd S ‰                      |¦  «        s'‰                      ˆ fd„‰ j         D ¦   «         ¬¦  «         ‰                      |¦  «         d S )Nc                 óP   •— g | ]"}‰j                              |¦  «        d k    ¯ |‘Œ#S )rÊ  )r�  ry   )rX  r³   rV   s     €r=   rZ  z/offload.ensure_model_loaded.<locals>.<listcomp>^  s6   ø€ Ð!qÐ!qÐ!q¨4ÈTÔM_×McÒMcÐdhÑMiÔMiÐmpÒMpÐMp $ÐMpÐMpÐMpr?   r	  )r§  rÍ  r6  r#  rè  s   ` r=   Úensure_model_loadedzoffload.ensure_model_loadedW  ss   ø€ Ø�tÔ-Ð-Ð-ØˆFð ×)Ò)¨(Ñ3Ô3ð 	sØ�OŠOÐ!qÐ!qÐ!qÐ!q°4Ô3IÐ!qÑ!qÔ!qˆOÑrÔrÐrØ�Š�hÑÔÐÐÐr?   c                 óÖ  — || j         vs|| j        |         v rdS | j        |         } t          |dd¦  «        pt          ||¦  «        }|dz   |z   }|t          |dt
          ¦  «        k    r|                      |||¦  «        nd}|du p|d         }	|€dn|d         | j        |<   |	| j         	                    |d	¦  «        k    r;|	| j        |<   | j
                             |d¦  «         |                      ||	¦  «         |	r#|| j        |         k    s|| j        v s	|| j        v rdS |�||d         v rdS | j        €dn| j        j         	                    |¦  «        }
|
�||
j        v rdn|S )
a‰  cpuCompute: the rows of this call of a block left out of VRAM if the CPU computes its large weights (0 otherwise): a short call
        (decoding) for which the measured CPU time beats the transfers. Pinned blocks are streamed meanwhile, as many as balance the CPU time
        (_cpu_plan); a block already transferred (or on its way) or about to be kept by the automatic preload runs in VRAM.r   Ú_mm_cpu_compute_rowsNrÛ   Ú_mm_cpu_compute_max_rows)Fr—   r—   r   F)rº  rš  rŽ  rS   r{  ÚCPU_COMPUTE_MAX_ROWSÚ	_cpu_planrÅ  r¾  ry   rÃ  r•  Ú_retire_inflightr—  r«  r¦  r´  rã  r\  )rV   rË  rÒ  re   rf   rÆ   ri  r	  r�  r  rm  s              r=   Ú_cpu_compute_callzoffload._cpu_compute_calla  sÖ  € ð ˜4Ô+Ð+Ð+¨{¸dÔ>]Ð^fÔ>gÐ/gÐ/gØ�1Ø”˜HÔ%ˆØJ•˜Ð5°tÑ<Ô<ÐJÅ
ÈDÐRXÑYÔYˆØ ‘^ kÑ1ˆ
Ø=AÅWÈUÐTnõ  qEñ  FFô  FFò  >Fð  >Fˆt�~Š~˜h¨¨jÑ9Ô9Ð9ð  LWˆØ˜�Ð'  Q¤ˆØ,0¨L b b¸dÀ1¼gˆÔ˜(Ñ#Ø�D”N×&Ò& x°Ñ7Ô7Ò7Ð7Ø',ˆDŒN˜8Ñ$ØÔ×#Ò# H¨dÑ3Ô3Ð3Ø×!Ò! (¨EÑ2Ô2Ð2Øð 	˜ tÔ'9¸(Ô'CÒCÐCÀzÐUYÔUbÐGbÐGbÐfpÐtxô  uJð  gJð  gJØ�1ØÐ 
¨d°1¬gÐ 5Ð 5Ø�1ØÔ(Ð0ˆtˆt°dÔ6GÔ6M×6QÒ6QÐRZÑ6[Ô6[ˆØÐ$¨¸¼Ð)DÐ)DˆqˆqÈ$ÐNr?   c                 óÚ  ‡ ‡‡‡‡— ‰ j                              ||f¦  «        }|€dS ‰ j        |         Š‰ j                             ||f¦  «        ‰ j                             ||f¦  «        }}|��||d         k    �r|d         sX‰ j                             ||fd¦  «        dz   x}‰ j        ||f<   |t          k    r ‰ j         ||f= ‰ j        ||f= ‰ j        ||f= dS n¤|�¢t          j	        ¦   «         ‰ j
                             |¦  «        }	}|	�T|	d         |k    rH|	d         |                     ¦   «         k    r*t          j        s|                     ||	d         z
  ¦  «         |||                     ¦   «         f‰ j
        |<   |‰ j        v }
t!          t#          j        |¦  «        dz  ¦  «        t'          ‰¦  «        |€dn|                     ¦   «         |
rt          j        ndf}|�|d         |k    r
|dd…         S dt+          ¦   «         z  }|dz   Šˆˆfd„‰ j        |         D ¦   «         }‰ j        p||t0          z  k     }t3          ¦   «         dc}Š|�r—|
r;‰                      |¦  «        Št7          t'          |¦  «        |z  ||z   z  ¦  «        }nšˆ fd	„|D ¦   «         Št9          j        ˆ fd
„|D ¦   «         ¦  «        }||z  ||z   z  }t9          j        ˆ fd„‰D ¦   «         ¦  «        }|r=t=          t'          ‰¦  «        t7          ||z  t'          ‰¦  «        z  ¦  «        ¦  «        nd}dŠ‰rô‰ j                             ||ftA          ¦   «         ¦  «        }|j!        �-|j!        d         t'          |¦  «        t'          ‰¦  «        fk    r%t'          |¦  «        t'          ‰¦  «        f|f|_!        |j!        d         Š| "                    ‰ t'          ‰¦  «        ‰z
  ¦  «         ‰|                     ¦   «         z  Š|dd…         |                     ¦   «         |d         fz   }|
r—‰‰ j#        |<   ‰  $                    |¦  «        D ]M}t           %                    ‰ |¦  «        s0t           &                    ‰ ||‰  '                    |¦  «        ¦  «         ŒN| (                    ˆ fd„‰D ¦   «         d‰…         ¦  «         n/| (                    ˆˆfd„tS          ‰¦  «        D ¦   «         ¦  «         |
r|s
d‰ j#        |<   ||||r|d         ndf‰ j        ||f<   ‰ j*        dk    rÍ|�0|d         t'          |d         ¦  «        f|t'          |¦  «        fk    r›|�|j+        �‰ j*        dk    r‡tY          j-        d|› d|› dd|z  dz  d›dd|z  dz  d›d�	|rBt'          |¦  «        t'          |¦  «        z
  › dt'          |¦  «        › dt'          |¦  «        › d�ndt'          |¦  «        › d�z   ¦  «         ||fS )a'  (whether the CPU computes the short calls of this row count, the pinned blocks streamed meanwhile), None until the CPU time is measured.
        The CPU computes when it beats the staging ring on the blocks that are not pinned; pinned blocks then stream, spread evenly, as many as
        end their transfers with the CPU (computing in their storage costs the CPU time, streaming them costs nothing but PCIe bandwidth), give
        or take the offset that timing the calls finds (_PassClimb; a call starts at its first block out of VRAM, entry_name).Nr  r   r   rÙ   r  rÛ   c                 óL   •— g | ] \  }}|t          ‰¦  «        d …         ‰v¯|‘Œ!S rd   r¦  )rX  r¡  r!  r  r^  s      €€r=   rZ  z%offload._cpu_plan.<locals>.<listcomp>“  s=   ø€ ÐpÐpÐp™˜ È5ÕQTÐU[ÑQ\ÔQ\ÐQ]ÐQ]ÔK^ÐfoÐKoÐKoˆuÐKoÐKoÐKor?   c                 ó>   •— g | ]}‰                      |¦  «        °|‘ŒS r—   rú  rö  s     €r=   rZ  z%offload._cpu_plan.<locals>.<listcomp>›  s,   ø€ ÐVÐVÐV¨¸D×<NÒ<NÈuÑ<UÔ<UÐV˜eÐVÐVÐVr?   c              3   ó2   •K  — | ]}‰j         |         V — Œd S rd   rõ  rö  s     €r=   rc  z$offload._cpu_plan.<locals>.<genexpr>œ  s+   øè è € Ð$ZÐ$ZÈU TÔ%AÀ%Ô%HÐ$ZÐ$ZÐ$ZÐ$ZÐ$ZÐ$Zr?   c              3   ó2   •K  — | ]}‰j         |         V — Œd S rd   rõ  rö  s     €r=   rc  z$offload._cpu_plan.<locals>.<genexpr>ž  s,   øè è € Ð+hÐ+hÐTY¨DÔ,HÈÔ,OÐ+hÐ+hÐ+hÐ+hÐ+hÐ+hr?   c                 ó>   •— g | ]}‰                      |¦  «        °|‘ŒS r—   rú  rö  s     €r=   rZ  z%offload._cpu_plan.<locals>.<listcomp>®  s-   ø€ Ð `Ð `Ð `¨5Àd×FXÒFXÐY^ÑF_ÔF_Ð ` Ð `Ð `Ð `r?   c              3   ó€   •K  — | ]8\  }}|d z   ‰z  t          ‰¦  «        z  |‰z  t          ‰¦  «        z  k    ¯4|V — Œ9dS rz  r¦  )rX  rå  r¡  rÉ  rY  s      €€r=   rc  z$offload._cpu_plan.<locals>.<genexpr>°  sš   øè è € ð   Rð   R©(¨!¨UÐPQÐTUÑPUÐY^ÉÕbeÐfpÑbqÔbqÑOqÐtuÐx}Ñt}õ  BEð  FPñ  BQô  BQñ  uQò  PQð  PQ ð  PQð  PQð  PQð  PQð   Rð   Rr?   zCPU compute of 'ú' (z rows, g    eÍÍArµ  z GB/s on the CPU, z GB/s over PCIe): r«  z) blocks out of VRAM computed on the CPU, z pinned ones streamedzits z6 blocks out of VRAM are streamed (faster than the CPU)).r¿  ry   rš  rÁ  rÂ  rÄ  r�  rÀ  r‹   Úperf_counterrÃ  r‹  rÞ  r\  r�  rÇ  rõ  r¤  Úlog2rÂ   r]  ru  rÆ  r»  ÚCPU_COMPUTE_RING_SHAREr‚  ra  Úroundrd  rà  r.  rš  r}  r‰  rŽ  rÈ  rU  rc  r†  rV  r
  r¹  rª   rƒ  r   r‘  )rV   rË  ri  r	  rj  rä  ÚclimbÚpassesÚnowÚpreviousr  r£  Úpcier×  Úcomputesr  Úbalancerð  rr  Úpinned_bytesr¡  rÉ  rY  r  r^  s   `                    @@@@r=   r”  zoffload._cpu_planx  s1  øøøøø€ ð
 Ô×"Ò" H¨dÐ#3Ñ4Ô4ˆØˆ;Ø�4ØÔ3°HÔ=ˆ	Øœ×*Ò*¨H°dÐ+;Ñ<Ô<¸d¼o×>QÒ>QÐS[Ð]aÐRbÑ>cÔ>c�ˆØÑ *°°q´	Ò"9Ñ"9Ø˜!”9ð 	MØ?CÔ?P×?TÒ?TÐV^Ð`dÐUeÐghÑ?iÔ?iÐlmÑ?mÐm�˜Ô*¨H°dÐ+;Ñ<ØÕ0Ò0Ð0ØÔ(¨(°DÐ)9Ð:¸DÔ<LÈhÐX\ÐM]Ð<^Ð`dÔ`qÐs{ð  ~Bð  sCð  aDØ˜4ð 1ð Ð"Ý $Ô 1Ñ 3Ô 3°TÔ5H×5LÒ5LÈXÑ5VÔ5V�X�ØÐ'¨H°Q¬K¸4Ò,?Ð,?ÀHÈQÄKÐSX×S`ÒS`ÑSbÔSbÒDbÐDbÕkpÔkxÐDbØ—I’I˜c H¨Q¤KÑ/Ñ0Ô0Ð0Ø15°s¸E¿MºM¹O¼OÐ0L�Ô# HÑ-Ø˜TÔ-Ð-ˆÝ•4”9˜S‘>”> AÑ%Ñ&Ô&­¨I©¬ÀÀ¸¸ÐSX×S`ÒS`ÑSbÔSbÐu{ð  eFÕdiÔdqÐdqð  BFð  GˆØÐ &¨¤)¨sÒ"2Ð"2Ø˜!˜A˜#”;ÐØ•:‘<”<ÑˆØ˜C‘ˆØpÐpÐpÐpÐp TÔ%=¸hÔ%GÐpÑpÔpˆØÔ*ÐQ¨c°DÕ;QÑ4QÒ.QˆÝ™%œ% ˆˆ�%Øñ 	RØð vØ!×.Ò.¨xÑ8Ô8�
Ý¥ C¡¤¨3¡°#¸±*Ñ =Ñ>Ô>��àVÐVÐVÐV°ÐVÑVÔV�
Ý œÐ$ZÐ$ZÐ$ZÐ$ZÐVYÐ$ZÑ$ZÔ$ZÑZÔZ�Ø ™¨¨d©
Ñ3�Ý'œ|Ð+hÐ+hÐ+hÐ+hÐ]gÐ+hÑ+hÔ+hÑhÔh�ØbnÐu�#�c *™oœo­u°V¸lÑ5JÍSÐQ[É_Ì_Ñ5\Ñ/]Ô/]Ñ^Ô^Ð^Ðtu�ØˆEØð :Øœ×2Ò2°H¸dÐ3CÅZÁ\Ä\ÑRÔR�Ø”<Ð'¨5¬<¸¬?½sÀ3¹x¼xÍÈZÉÌÐ>YÒ+YÐ+YÝ%(¨¡X¤X­s°:©¬Ð$?ÀÐ#I�E”LØœ Qœ�Ø—’˜U˜F¥C¨
¡O¤O°eÑ$;Ñ<Ô<Ð<Ø˜Ÿš™œÑ(�Ø˜"˜1˜"”g §¢¡¤°#°a´&Ð 9Ñ9�Øð RØ-2�Ô  Ñ*Ø!×.Ò.¨xÑ8Ô8ð Uð U�EÝ Ÿ>š>¨$°Ñ6Ô6ð UÝŸš d¨H°e¸T¿_º_ÈUÑ=SÔ=SÑTÔTÐTøØ—’Ð `Ð `Ð `Ð `°JÐ `Ñ `Ô `ÐagÐbgÐagÔ hÑiÔiÐiÐià—’ð   Rð   Rð   Rð   Rð   RµiÀ
Ñ6KÔ6Kð   Rñ   Rô   Rñ  Rô  Rð  RØð 	.˜(ð 	.Ø)-ˆDÔ˜XÑ&Ø,/°¸8ÈsÐE\ÀSÈÄVÀVÐX\Ð+]ˆŒ˜ $Ð'Ñ(ØÔ Ò!Ð! v ~¸&À¼)ÅSÈÐPQÌÁ^Ä^Ð9TÐYaÕcfÐgoÑcpÔcpÐXqÒ9qÐ9qÐx}ð  yFð  JOô  JUð  J]ð  aeô  arð  vwò  awð  awÝŒJð  R¨(ð  Rð  R°tð  Rð  RÀAÈÁGÈcÁMð  Rð  Rð  RÐjkÐnrÑjrÐuxÑjxð  Rð  Rð  Rð  Rð [cð g�S ™XœX­¨H©¬Ñ5ð  Wð  W½sÀ3¹x¼xð  Wð  WÕruÐv~ÑrÔrð  Wð  Wð  Wð  WØf¥c¨#¡h¤hÐfÐfÐfñhñ iô ið ið ˜Ð!Ð!r?   c                 óò  — t           j        rd S | j                             |t	          | j        |         ¦  «        t          z  ¦  «        }|r|dz
  | j        |<   d S ||f}| j                             |g ¦  «        }|                     || j	        |dz   |z            z  ¦  «         |d dt          z  …= t	          |¦  «        t          k    r/t          |¦  «        t	          |¦  «        dz           | j        |<   d S d S )Nr   rÛ   rÃ  rÙ   )rÞ  r\  rÀ  ry   rÂ   rÆ  ÚCPU_COMPUTE_TIMEDrš  rž   r‘  ÚCPU_COMPUTE_SAMPLESr’  r¿  )rV   rË  rÒ  ri  r”  Úwarmupr£  r†  s           r=   Ú_cpu_measurezoffload._cpu_measureº  s   € õ Œ=ð 	ØˆFØÔ!×%Ò% hµ°DÔ4LÈXÔ4VÑ0WÔ0WÕ[lÑ0lÑmÔmˆØð 	Ø)/°!©ˆDÔ˜XÑ&ØˆFØ˜ÐˆØÔ"×-Ò-¨c°2Ñ6Ô6ˆØ�Š�w Ô!=¸hÈ¹nÈ{Ñ>ZÔ![Ñ[Ñ\Ô\Ð\ØÐ-�RÕ-Ñ-Ð-Ð.Ýˆw‰<Œ<Õ.Ò.Ð.Ý$*¨7¡O¤OµC¸±L´LÀAÑ4EÔ$FˆDÔ˜SÑ!Ð!Ð!ð /Ð.r?   c                 ó¾  ‡— |dz   Šˆfd„g | j         ¢| j        ¢R D ¦   «         }|s|r| j        �| j        j        sd S |                      ¦   «          t
          j                             ¦   «          t           	                    |¦  «        D ]-}|  
                    ||t          ‰¦  «        d …         ¦  «         Œ.|r"| j        �| j                             ¦   «          d S d S d S )NrÛ   c                 ó>   •— g | ]}|                      ‰¦  «        ¯|‘ŒS r—   rù  ©rX  r¡  r  s     €r=   rZ  z,offload._retire_inflight.<locals>.<listcomp>Ï  s.   ø€ ÐkÐkÐk˜UÐRW×RbÒRbÐciÑRjÔRjÐk�5ÐkÐkÐkr?   )r«  r¦  r  rò  r  rN   r  rû  rš   Úfromkeysr  rÂ   r  )rV   rË  r  rå  r¡  r  s        @r=   r•  zoffload._retire_inflightÊ  s   ø€ ð ˜C‘ˆØkÐkÐkÐkÐ&N¨¬Ð&N¸Ô8MÐ&NÐ&NÐkÑkÔkˆØð 	 ð 	¨$¬)Ð*?ÀDÄIÄNÐ*?ØˆFØ×ÒÑÔÐÝŒ
×ÒÑ Ô Ð Ý—]’] 7Ñ+Ô+ð 	Bð 	BˆEØ×"Ò" 8¨Uµ3°v±;´;°<°<Ô-@ÑAÔAÐAÐAØð 	�T”YÐ*ØŒI�OŠOÑÔÐÐÐð	ð 	Ð*Ð*r?   c                 ó  ‡ — ‰ j         |         }t          j        ˆ fd„‰ j        |         D ¦   «         ¦  «        }|‰ j                             |d¦  «        z   }t          |dd¦  «        }|r||z
  nW|t          |dd¦  «        z   dt          j         	                    t          j         
                    ¦   «         ¦  «        j        z  z
  }|r5t          ddt          d|¦  «        z  |z  t          t          z  |z  ¦  «        ndS )až  cpuComputePinning "auto": half of the bytes of the towers expected out of VRAM (the model with its _mm_cpu_compute_reserve for its KV
        cache and activations beyond 90% of the VRAM, or the model beyond its _auto_preload_max), as a share of its towers, and never more than
        CPU_COMPUTE_PINNING_RAM_SHARE of the RAM (the reserved RAM left bounds it too). Nothing is pinned for a model that fits in VRAM.c              3   ó8   •K  — | ]\  }}‰j         |         V — Œd S rd   rõ  )rX  r¡  r!  rV   s      €r=   rc  z-offload._cpu_pinning_share.<locals>.<genexpr>Þ  s/   øè è € ÐuÐuÁhÀeÈQ˜dÔ:¸5ÔAÐuÐuÐuÐuÐuÐur?   r   Ú_auto_preload_maxNÚ_mm_cpu_compute_reserver?  g      à?)rŽ  rd  rà  rÆ  r‘  ry   rS   rN   r  r“  r  r”  r.  r  ÚCPU_COMPUTE_PINNING_RAM_SHAREr¶   )rV   rË  rÆ   r:  r.   r’  r×  s   `      r=   Ú_cpu_pinning_sharezoffload._cpu_pinning_shareÙ  s5  ø€ ð ”˜HÔ%ˆÝ”ÐuÐuÐuÐuÐRVÔRjÐksÔRtÐuÑuÔuÑuÔuˆØ˜4Ô7×;Ò;¸HÀaÑHÔHÑHˆÝ�eÐ0°$Ñ7Ô7ˆØ"ð  rˆg˜‰mˆm¨µ'¸%ÐAZÐ\]Ñ2^Ô2^Ñ(^ÐadÕglÔgq÷  hHò  hHõ  INô  IS÷  Ibò  Ibñ  Idô  Idñ  heô  heô  hrñ  brñ  )rˆØqwÐ~�s�3˜�c ! S™kœkÑ)¨FÑ2Õ4QÕTcÑ4cÐflÑ4lÑmÔmÐmÐ}~Ð~r?   c           	      óö  ‡‡‡— d„ Šg dd}}}|D ]ä}|dz   |z   Šˆfd„| j         D ¦   «         D ]Æ}i }| j         |         D ]1}	|                     |	d         g ¦  «                             |	¦  «         Œ2ˆfd„|                     ¦   «         D ¦   «         Šˆˆfd„| j         |         D ¦   «         }
|                     |‰|
f¦  «         || j        |         z  }|t          j        d„ |
D ¦   «         ¦  «        z  }ŒÇŒåt          j        d„ |D ¦   «         ¦  «        r|t          |z  k    rd	S | j         |         }|D ]g\  }Š}
|d
„ |
D ¦   «         z  }ˆfd„| j         |         D ¦   «         | j         |<   | j        |xx         t          j        d„ |
D ¦   «         ¦  «        z  cc<   Œh| j        |xx         |z  cc<   | j	        dk    r@t          d|› dt          j        d„ |D ¦   «         ¦  «        › d|t          z  d›d�¦  «         d	S d	S )añ  The modules of the blocks of the towers whose own parameters and buffers weigh less than BASE_SMALL_MODULE_SIZE (norms, short
        convolutions, small projections) join the base of the model, in VRAM whenever it is loaded, unless they weigh more than
        BASE_SMALL_MODULES_SHARE of the towers. Streamed with their block, those that cannot join the block's buffer (tensor classes not
        rebuilt from their inner tensors, tensors shared by several blocks) are copied one by one: new tensors at each transfer, which change
        the key of the block's CUDA graphs (captured again instead of replayed), and copies from pageable memory. Tied tensors count at
        their full size, so that a module sharing a large tensor stays in its block.c                 óZ   — t          | ¦  «        x}rt          |¦  «        n| j        j        S rd   ©rØ  rá  rœ  r  r°  s     r=   rº  z0offload._small_modules_to_base.<locals>.<lambda>ë  ó/   € ÕNgÐhiÑNjÔNjÐ?j¸{Ð~Õ-¨kÑ:Ô:Ð:ÐqrÔqwÔq~€ r?   r   rÛ   c                 ó�   •— g | ]B}|                      ‰¦  «        ¯|t          ‰¦  «        d …                              ¦   «         ¯@|‘ŒCS rd   ©rÀ   rÂ   r[  r²  s     €r=   rZ  z2offload._small_modules_to_base.<locals>.<listcomp>ï  ót   ø€ ð  Cð  Cð  C EÀu×GWÒGWÐX^ÑG_ÔG_ð  CÐdiÕjmÐntÑjuÔjuÐjvÐjvÔdw×dÒdñ  eBô  eBð  C˜%ð  Cð  Cð  Cr?   c                 ól   •— h | ]0\  }}t          j        ˆfd „|D ¦   «         ¦  «        t          k     ¯.|’Œ1S )c              3   ó:   •K  — | ]} ‰|d          ¦  «        V — ŒdS )rÙ   Nr—   ©rX  rx  r  s     €r=   rc  z;offload._small_modules_to_base.<locals>.<setcomp>.<genexpr>ó  s7   øè è € ÐTwÐTwÐimÐU[ÐU[Ð\`ÐabÔ\cÑUdÔUdÐTwÐTwÐTwÐTwÐTwÐTwr?   )rd  rà  ÚBASE_SMALL_MODULE_SIZE)rX  r<   r›   r  s      €r=   rÇ  z1offload._small_modules_to_base.<locals>.<setcomp>ó  si   ø€ ð  Rð  Rð  R¡M F¨EÍÌÐTwÐTwÐTwÐTwÐqvÐTwÑTwÔTwÑHwÔHwõ  {Qò  IQð  IQ˜ð  IQð  IQð  IQr?   c                 ó^   •— g | ])}|d          ‰v ¯||d         �d n ‰|d         ¦  «        f‘Œ*S )r   rk  NrÙ   r—   )rX  rx  r  Úsmalls     €€r=   rZ  z2offload._small_modules_to_base.<locals>.<listcomp>ô  sw   ø€ ð  Nð  Nð  NÐSWð  }Að  BCô  }Dð  HMð  }Mð  }M˜$ T¨!¤WÐ%8  ¸f¸fÀTÈ!ÄW¹o¼oÐNð  }Mð  }Mð  }Mr?   c              3   ó    K  — | ]	\  }}|V — Œ
d S rd   r—   r?  s      r=   rc  z1offload._small_modules_to_base.<locals>.<genexpr>÷  s&   è è € Ð*EÐ*E±G°A°t¨4Ð*EÐ*EÐ*EÐ*EÐ*EÐ*Er?   c              3   ó"   K  — | ]
\  }}}|V — Œd S rd   r—   )rX  r!  r"  s      r=   rc  z1offload._small_modules_to_base.<locals>.<genexpr>ø  s(   è è € Ð:Ð:¡k a¨¨E˜EÐ:Ð:Ð:Ð:Ð:Ð:r?   Nc                 ó   — g | ]\  }}|‘ŒS r—   r—   )rX  rx  r!  s      r=   rZ  z2offload._small_modules_to_base.<locals>.<listcomp>ü  s   € Ð/Ð/Ð/™g˜d A�TÐ/Ð/Ð/r?   c                 ó(   •— g | ]}|d          ‰v¯|‘ŒS rL  r—   )rX  rx  rÆ  s     €r=   rZ  z2offload._small_modules_to_base.<locals>.<listcomp>ý  s+   ø€ Ð,tÐ,tÐ,t°dÐ_cÐdeÔ_fÐnsÐ_sÐ_s¨TÐ_sÐ_sÐ_sr?   c              3   ó    K  — | ]	\  }}|V — Œ
d S rd   r—   r?  s      r=   rc  z1offload._small_modules_to_base.<locals>.<genexpr>þ  s&   è è € Ð?ZÐ?ZÉÈÈDÀÐ?ZÐ?ZÐ?ZÐ?ZÐ?ZÐ?Zr?   rÙ   rv  rè  c              3   ó<   K  — | ]\  }}}t          |¦  «        V — Œd S rd   r¦  )rX  r!  rÆ  s      r=   rc  z1offload._small_modules_to_base.<locals>.<genexpr>  s.   è è € Ð5YÐ5YÁ[ÀQÈÈqµc¸%±j´jÐ5YÐ5YÐ5YÐ5YÐ5YÐ5Yr?   z small modules of its blocks (rµ  ú  MB) kept in VRAM with the model)r�  rš  rž   r›   r‘  rd  rà  rÎ  ÚBASE_SMALL_MODULES_SHARErª   rþ  rÿ  )rV   rË  rË   r�  Útowers_sizeÚ
moved_sizerÍ   r¡  r´  rx  r"  r@  r  r  rÆ  s               @@@r=   Ú_small_modules_to_basezoffload._small_modules_to_baseä  s(  øøø€ ð Ð~ˆØ(*¨A¨q˜:ˆkˆØ&ð 
	Fð 
	FˆJØ ‘^ jÑ0ˆFð Cð  Cð  Cð  C¨TÔ-Cð  Cñ  Cô  Cð Fð F�Ø�Ø Ô2°5Ô9ð Að A�DØ×&Ò& t¨A¤w°Ñ3Ô3×:Ò:¸4Ñ@Ô@Ð@Ð@ð Rð  Rð  Rð  R°W·]²]±_´_ð  Rñ  Rô  R�ð Nð  Nð  Nð  Nð  NÐ[_Ô[qÐrwÔ[xð  Nñ  Nô  N�Ø—’˜U E¨5Ð1Ñ2Ô2Ð2Ø˜tÔ;¸EÔBÑB�Ø�hœlÐ*EÐ*E¸uÐ*EÑ*EÔ*EÑEÔEÑE�
�
ðFõ Œ|Ð:Ð:°TÐ:Ñ:Ô:Ñ:Ô:ð 	¸jÕKcÐfqÑKqÒ>qÐ>qØˆFØÔ% hÔ/ˆØ#'ð 	[ð 	[ÑˆE�5˜%ØÐ/Ð/¨Ð/Ñ/Ô/Ñ/ˆDØ,tÐ,tÐ,tÐ,t¸dÔ>TÐUZÔ>[Ð,tÑ,tÔ,tˆDÔ" 5Ñ)ØÔ(¨Ð/Ð/Ô/µ8´<Ð?ZÐ?ZÐTYÐ?ZÑ?ZÔ?ZÑ3ZÔ3ZÑZÐ/Ð/Ñ/Ð/ØÔ$ XÐ.Ð.Ô.°*Ñ<Ð.Ð.Ñ.ØÔ Ò!Ð!Ýð  r˜Hð  rð  r­¬Ð5YÐ5YÐTXÐ5YÑ5YÔ5YÑ)YÔ)Yð  rð  rð  zDõ  EKñ  zKð  rð  rð  rð  rñ  sô  sð  sð  sð  sð "Ð!r?   c           	      ó|  ‡ ‡‡‡	‡
— d„ Šˆfd„‰ j         D ¦   «         }ˆ fd„|D ¦   «         Š	ˆ	ˆ fd„|D ¦   «         Š
‰
sdS ‰ j                              ‰g ¦  «        d}}|D ]}}ˆ
fd„‰ j         |         D ¦   «         }|r`t          j        ˆfd„|D ¦   «         ¦  «        }||z  }ˆ
fd	„‰ j         |         D ¦   «         ‰ j         |<   ‰ j        |xx         |z  cc<   ||z  }Œ~‰ j                             ‰d¦  «        |z   ‰ j        ‰<   ‰ j        d
k    r1t          d‰› dt          ‰
¦  «        › d|t          z  d›d�¦  «         dS dS )a  The tensors that modules of different blocks share (e.g. one rotary table for every layer) join the base of the model: streamed
        with the first block that holds them, the other blocks would keep reading that block's copy once its memory goes to the next
        streamed block.c                 óZ   — t          | ¦  «        x}rt          |¦  «        n| j        j        S rd   r¼  r°  s     r=   rº  z1offload._shared_tensors_to_base.<locals>.<lambda>  r½  r?   c                 óD   •— g | ]}|                      ‰d z   ¦  «        ¯|‘ŒS rò  rù  ró  s     €r=   rZ  z3offload._shared_tensors_to_base.<locals>.<listcomp>  s3   ø€ ÐaÐaÐa˜UÀ×@PÒ@PÐQYÐ\_ÑQ_Ñ@`Ô@`Ða�5ÐaÐaÐar?   c                 ób   •— i | ]+}‰j         |         D ]}|d          ­
|d         |d         f|“ŒŒ,S )rk  Nr   r   r  )rX  r¡  rx  rV   s      €r=   r¨  z3offload._shared_tensors_to_base.<locals>.<dictcomp>	  sJ   ø€ Ð~Ð~Ð~°ÈTÔMcÐdiÔMjÐ~Ð~ÀTÐnrÐstÔnuÐn}�4˜”7˜D œGÐ$ eÐn}Ðn}Ðn}Ðn}r?   c                 ó�   •— h | ]B}‰j         |         D ]2}|d          ®
‰                     |d          |¦  «        |k    ¯*|d          ’Œ3ŒCS )rk  )r�  ry   )rX  r¡  rx  r  rV   s      €€r=   rÇ  z2offload._shared_tensors_to_base.<locals>.<setcomp>
  s¦   ø€ ð  Yð  Yð  Y˜e¸4Ô;QÐRWÔ;Xð  Yð  Y°4Ð\`ÐabÔ\cÐ\oÐtz×t~Òt~ð  @Dð  EFô  @Gð  INñ  uOô  uOð  SXò  uXð  uX�$�q”'ð  uXð  uXð  uXð  uXr?   Nr   c                 óL   •— g | ] }|d          |d         f‰v s
|d         ‰v ¯|‘Œ!S ©r   r   rk  r—   ©rX  rx  rË  s     €r=   rZ  z3offload._shared_tensors_to_base.<locals>.<listcomp>  sF   ø€ ÐyÐyÐy˜dÈÈQÌÐQUÐVWÔQXÐGYÐ]cÐGcÐGcÐgkÐlmÔgnÐrxÐgxÐgx�TÐgxÐgxÐgxr?   c              3   óJ   •K  — | ]}|d          ­
 ‰|d         ¦  «        V — ŒdS )rk  NrÙ   r—   rÃ  s     €r=   rc  z2offload._shared_tensors_to_base.<locals>.<genexpr>  s3   øè è € Ð#YÐ#Y¸ÈÈaÌÈ F F¨4°¬7¡O¤OÈÈÈÈÐ#YÐ#Yr?   c                 óL   •— g | ] }|d          |d         f‰v¯|d         ‰v¯|‘Œ!S rØ  r—   rÙ  s     €r=   rZ  z3offload._shared_tensors_to_base.<locals>.<listcomp>  s‚   ø€ ð  1_ð  1_ð  1_¸$ÐdhÐijÔdkÐmqÐrsÔmtÐcuð  ~Dð  dDð  dDð  IMð  NOô  IPð  X^ð  I^ð  I^°ð  I^ð  I^ð  I^r?   rÙ   rv  rè  z* tensors shared by several of its blocks (rµ  rÍ  )
r�  rš  rd  rà  r‘  ry   rª   rþ  rÂ   rÿ  )rV   rË  rå  r@  rÐ  r¡  r"  ré  r  r  rË  s   ``      @@@r=   Ú_shared_tensors_to_basezoffload._shared_tensors_to_base  s  øøøøø€ ð Ð~ˆØaÐaÐaÐa dÔ&<ÐaÑaÔaˆØ~Ð~Ð~Ð~¸Ð~Ñ~Ô~ˆð Yð  Yð  Yð  Yð  Y wð  Yñ  Yô  YˆØð 	ØˆFØÔ1×<Ò<¸XÀrÑJÔJÈAˆjˆØð 	#ð 	#ˆEØyÐyÐyÐy dÔ&<¸UÔ&CÐyÑyÔyˆEØð #Ý”|Ð#YÐ#YÐ#YÐ#YÀÐ#YÑ#YÔ#YÑYÔY�Ø˜‘�ð 1_ð  1_ð  1_ð  1_À$ÔBXÐY^ÔB_ð  1_ñ  1_ô  1_�Ô& uÑ-ØÔ,¨UÐ3Ð3Ô3°tÑ;Ð3Ð3Ñ3Ø˜dÑ"�
øØ15Ô1M×1QÒ1QÐRZÐ\]Ñ1^Ô1^ÐakÑ1kˆÔ$ XÑ.ØÔ Ò!Ð!Ýð  Y˜Hð  Yð  Y­¨V©¬ð  Yð  YÐ`jÕkqÑ`qð  Yð  Yð  Yð  Yñ  Zô  Zð  Zð  Zð  Zð "Ð!r?   c                 ó  ‡‡— ddl m} d„ Šg g }}|D ]Ñ}|dz   |z   Šˆfd„| j        D ¦   «         D ]³}g g }	}| j        |         D ]‡}
|
\  }}}}}|�dn
 ‰|¦  «        }|s4|€2|dk    r,|t          k    r! ||¦  «        r|                     |
¦  «         ŒO|t          k    r|                     |
¦  «         Œp|	                     |
|f¦  «         Œˆ|                     |||	f¦  «         Œ´ŒÒ|s|s{|rw| j        dk    rl|d         dd	…         \  }}}t          d
|› dt          |¦  «        › dt          |¦  «        j	        › d|› dt          |¦  «        j	        › d|j
        › d�¦  «         dS | j                             |g ¦  «        }g x}| j        |<   g x}| j        |<   d}|D ]c\  }}}	|	D ]4\  }
}|                     |
¦  «         | j        |xx         |z  cc<   ||z  }Œ5|| j        |<   ||z  }|                     ||f¦  «         Œd| j                             |d¦  «        |z   | j        |<   | j        dk    r[t          d|› dt          |¦  «        › dt!          j        ˆfd„|D ¦   «         ¦  «        t$          z  d›d|t$          z  d›d�	¦  «         dS dS )aj  cpuCompute: the blocks of the towers keep the large weights that a CPU kernel computes in their storage; their other parameters and
        buffers join the base of the model, in VRAM whenever it is loaded. A model with a large tensor in its blocks that no CPU kernel computes
        (e.g. unquantized weights) keeps its blocks as they are, without CPU compute.r   )Úcpu_compute_supportedc                 óZ   — t          | ¦  «        x}rt          |¦  «        n| j        j        S rd   r¼  r°  s     r=   rº  z,offload._split_cpu_compute.<locals>.<lambda>  r½  r?   rÛ   c                 ó�   •— g | ]B}|                      ‰¦  «        ¯|t          ‰¦  «        d …                              ¦   «         ¯@|‘ŒCS rd   r¿  r²  s     €r=   rZ  z.offload._split_cpu_compute.<locals>.<listcomp>#  rÀ  r?   Nr   r:   r  zNo CPU compute for model 'rè  z6 large tensors of its blocks have no CPU kernel (e.g. r¼   rŸ  ú ú)rÙ   zCPU compute of model 'z
 weights (c              3   ó:   •K  — | ]\  }}}}} ‰|¦  «        V — Œd S rd   r—   )rX  r!  r{  r  s      €r=   rc  z-offload._split_cpu_compute.<locals>.<genexpr>B  s`   øè è € ð  ^Gð  ^GÑlyÐlmÐopÐrsÐuvÐxyÐ^dÐ^dÐefÑ^gÔ^gð  ^Gð  ^Gð  ^Gð  ^Gð  ^Gð  ^Gr?   rµ  zD MB) computed on the CPU for short calls of the blocks not in VRAM, z9 MB of other block parameters kept in VRAM with the model)Úquant_routerrÞ  r�  ÚCPU_COMPUTE_MIN_SIZErž   rª   rþ  rÂ   r¹  rZ   r,   rš  rº  rÆ  r‘  ry   rd  rà  rÿ  )rV   rË  rË   rÞ  r�  ÚunsupportedrÍ   r¡  Úkeptr"  rx  Úparentr³   r{  r  rÙ  ré  r@  Úcomputedr  rÐ  r  r  s                        @@r=   Ú_split_cpu_computezoffload._split_cpu_compute  s€  øø€ ð 	8Ð7Ð7Ð7Ð7Ð7Ø~Ð~ˆØ ˆkˆØ&ð 	2ð 	2ˆJØ ‘^ jÑ0ˆFð Cð  Cð  Cð  C¨TÔ-Cð  Cñ  Cô  Cð 2ð 2�Ø  "�e�Ø Ô2°5Ô9ð 3ð 3�DØ=AÑ:�F˜D ! Y°
Ø *Ð 6˜1˜1¸F¸FÀ1¹I¼I�DØ$ð 3¨Ð);ÀÈÒ@PÐ@PÐUYÕ]qÒUqÐUqð  wLð  wLð  MNñ  wOô  wOÐUqØŸš DÑ)Ô)Ð)Ð)ØÕ!5Ò5Ð5Ø#×*Ò*¨4Ñ0Ô0Ð0Ð0àŸš d¨D \Ñ2Ô2Ð2Ð2Ø—’˜U D¨%Ð0Ñ1Ô1Ð1Ð1ð2ð ð 	˜dð 	Øð G˜tÔ0°AÒ5Ð5Ø"-¨a¤.°°!°Ô"4‘�˜˜aÝð  F°8ð  Fð  FÅÀKÑ@PÔ@Pð  Fð  Fõ  IMð  NTñ  IUô  IUô  I^ð  Fð  Fð  aeð  Fð  Fõ  imð  noñ  ipô  ipô  iyð  Fð  Fð  |}ô  |Cð  Fð  Fð  Fñ  Gô  Gð  GØˆFØÔ%×0Ò0°¸2Ñ>Ô>ˆØ02Ð2ˆ�4Ô# HÑ-Ø68Ð8ˆ�Ô)¨(Ñ3Øˆ
Ø"&ð 	)ð 	)ÑˆE�4˜Ø#ð #ð #‘
��dØ—’˜DÑ!Ô!Ð!ØÔ,¨UÐ3Ð3Ô3°tÑ;Ð3Ð3Ñ3Ø˜dÑ"�
�
Ø,0ˆDÔ" 5Ñ)Ø˜ÑˆHØ�MŠM˜5 $˜-Ñ(Ô(Ð(Ð(Ø15Ô1M×1QÒ1QÐRZÐ\]Ñ1^Ô1^ÐakÑ1kˆÔ$ XÑ.ØÔ Ò!Ð!Ýð R¨8ð Rð R½¸H¹¼ð Rð RÕQYÔQ]ð  ^Gð  ^Gð  ^Gð  ^Gð  ~Fð  ^Gñ  ^Gô  ^Gñ  RGô  RGõ  HNñ  RNð  nð Rð RØ@JÍ6Ñ@Qð  RðRð Rð Rñ Sô Sð Sð Sð Sð "Ð!r?   c                 óD   ‡ ‡‡— ˆˆˆ fd„}|                      |¦  «         d S )Nc                 óŒ   •— ‰d k    r8‰‰j         ‰         k    r)‰‰j        ‰         vr‰                     ‰‰¦  «         d S d S d S d S rd   )r—  rš  r  )r<   re   rf   rÒ  rË  rV   s      €€€r=   Úpreload_blocks_for_compilezOoffload.hook_preload_blocks_for_compilation.<locals>.preload_blocks_for_compileH  s�   ø€ à˜dÒ"Ð" {°dÔ6HÈÔ6RÒ'RÐ'RÐWbÐjnô  kJð  KSô  kTð  XTð  XTØ×$Ò$ X¨{Ñ;Ô;Ð;Ð;Ð;ð #Ð"Ð'RÐ'Rð  XTð  XTr?   )Úregister_forward_pre_hook)rV   rF  rË  rÒ  r$  rí  s   ` ``  r=   Ú#hook_preload_blocks_for_compilationz+offload.hook_preload_blocks_for_compilationE  sE   øøø€ ð	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	×/Ò/Ð0JÑKÔKÐKÐKÐKr?   c                 óD  — t          |dd ¦  «        }t          |dd ¦  «        }|                      |¦  «         |€,|                      ¦   «         r|                      ¦   «          d S d S || j        |         k    r'|| j        |         vr|                      ||¦  «         d S d S d S )NÚ_mm_model_idÚ_mm_blocks_name)rS   r�  r  r  r—  rš  r  )rV   r<   rË  rÒ  s       r=   Ú
_pre_checkzoffload._pre_checkT  sÅ   € å˜f n°dÑ;Ô;ˆÝ˜fÐ&7¸Ñ>Ô>ˆà× Ò  Ñ*Ô*Ð*ØÐØ×&Ò&Ñ(Ô(ð -Ø×*Ò*Ñ,Ô,Ð,Ð,Ð,ð-ð -à˜DÔ.¨xÔ8Ò8Ð8Ø Ô ?ÀÔ IÐIÐIØ× Ò  ¨;Ñ7Ô7Ð7Ð7Ð7ð 9Ð8ØIÐIr?   c                 óò   — | j                              |¦  «        }|�|S d|j                             dd¦  «        › d|j        › �}d|› d|› d|› d�}d|i}t          ||¦  «         ||         }|| j         |<   |S )	NÚ	_mm_wrap_r¼   r!  z
def z~(module, *args, **kwargs):
    _ = __TYPE_CONST  # anchor type as a constant to make code object unique per class
    nada = "zj"
    mgr = module._mm_manager
    mgr._pre_check(module)
    return module._mm_forward(*args, **kwargs) #ú
Ú__TYPE_CONST)rÐ  ry   r[   ræ   rZ   Úexec)rV   Úmod_clsr¼  ÚfnamerC  Únss         r=   Ú_get_wrapper_for_typezoffload._get_wrapper_for_typea  s»   € ØÔ ×$Ò$ WÑ-Ô-ˆØˆ>ØˆIð V˜GÔ.×6Ò6°s¸CÑ@Ô@ÐUÐUÀ7ÔCSÐUÐUˆðØ
ðð ð ðð ð 27ðð ð ˆð ˜gÐ&ˆÝˆS�"‰ŒˆØ�ŒYˆØ')ˆÔ˜GÑ$Øˆ	r?   c                 óÜ   — | |_         ||_        ||_        ||_        |                      t          |¦  «        ¦  «        }t          j        t          j        ||¦  «        |¦  «        |_	        d S rd   )
rJ  rñ  rò  Ú_mm_forwardrü  r¹  r7  r8  r9  rX   )rV   rF  rÆ   rË  rÒ  Úprevious_methodr$  Ú
wrapper_fns           r=   Ú"hook_check_load_into_GPU_if_neededz*offload.hook_check_load_into_GPU_if_neededy  sm   € ð )-ˆÔ!Ø(0ˆÔ"Ø(3ˆÔ%Ø(7ˆÔ!ð ×/Ò/µ°]Ñ0CÔ0CÑDÔDˆ
õ !*Ô 8½Ô9JÈ:ÐWdÑ9eÔ9eÐgvÑ wÔ wˆÔÐÐr?   c           
      ó®  ‡ ‡‡‡‡‡‡— |j         }t          |dd ¦  «        }	|	�t          |	dd ¦  «        nd }
t          |t          ¦  «        o
|
t          k    }|r	 t          |d¦  «        r©t          |d¦  «        }‰ j        dk    r+t          d‰› d|                     ¦   «         › d|› d�¦  «         ‰  	                    |¦  «        rJ ‚t          |t          ¦  «        s|g}|                     ‰¦  «         t          |d|¦  «         |j        |_        d S ˆˆˆ fd	„Št          |t          j        j        ¦  «        r	ˆˆfd
„}|}nˆˆfd„}|}|r|Šˆˆˆˆ fd„}|}‰ j        r‰�|Šˆˆˆˆ fd„}|}t          |d‰¦  «         t          |d‰ ¦  «         t          |d‰¦  «         t          |dt'          j        t'          j        ||¦  «        ‰¦  «        ¦  «         d S )Nr:   ÚqtypeÚ_mm_idrÙ   rv  z' shares module 'z' with module(s) 'z' c                  óJ  •— ‰                      ‰¦  «         ‰ d k    r,‰                     ¦   «         r‰                     ¦   «          d S d S ‰ ‰j        ‰         k    rE‰ ‰j        ‰         vr8‰ ‰j                             ‰¦  «        k    r‰                     ‰‰ ¦  «         d S d S d S d S rd   )r�  r  r  r—  rš  r¼  ry   r  )rÒ  rË  rV   s   €€€r=   Úcheck_load_into_GPU_neededzVoffload.hook_check_load_into_GPU_if_needed_default.<locals>.check_load_into_GPU_neededž  sý   ø€ Ø×$Ò$ XÑ.Ô.Ð.Ø˜dÒ"Ð"Ø×*Ò*Ñ,Ô,ð 1Ø×.Ò.Ñ0Ô0Ð0Ð0Ð0ð1ð 1à Ô 2°8Ô <Ò<Ð<ÀÐTXÔTsÐt|ÔT}ÐA}ÐA}ð  CNð  RVô  Ra÷  Reò  Reð  fnñ  Roô  Roò  Coð  CoØ×$Ò$ X¨{Ñ;Ô;Ð;Ð;Ð;ð =Ð<ÐA}ÐA}ð  Coð  Cor?   c                 ó(   •—  ‰¦   «           ‰|i |¤ŽS rd   r—   ©r<   re   rf   r	  rÿ  s      €€r=   Ú!check_load_into_GPU_needed_linearz]offload.hook_check_load_into_GPU_if_needed_default.<locals>.check_load_into_GPU_needed_linear©  ó'   ø€ Ø*Ð*Ñ,Ô,Ð,Ø&�¨Ð7°Ð7Ð7Ð7r?   c                 ó(   •—  ‰¦   «           ‰|i |¤ŽS rd   r—   r	  s      €€r=   Ú check_load_into_GPU_needed_otherz\offload.hook_check_load_into_GPU_if_needed_default.<locals>.check_load_into_GPU_needed_other®  r
	  r?   c           	      ób  •— ‰
                      ‰	‰||¦  «        }|s ‰| g|¢R i |¤ŽS ‰‰
j        ‰	<   ‰
j                             ‰	d¦  «        dz   x}‰
j        ‰	<   |t          z  dk    }|r0t
          j                             ¦   «                              ¦   «          t          j
        ¦   «         }	  ‰| g|¢R i |¤Žd ‰
j        ‰	<   |r-‰
                     ‰	‰|t          j
        ¦   «         |z
  ¦  «         S S # d ‰
j        ‰	<   |r-‰
                     ‰	‰|t          j
        ¦   «         |z
  ¦  «         w w xY wrö   )r–  r¼  r½  ry   r¬  rN   r  r  rû  r‹   rŸ  r¯  )r<   re   rf   ri  ÚcallsÚtimedrŒ   rÒ  Úcheck_load_into_GPU_needed_gpurË  rV   s          €€€€r=   Úcheck_load_into_GPU_needed_cpuzZoffload.hook_check_load_into_GPU_if_needed_default.<locals>.check_load_into_GPU_needed_cpu´  s}  ø€ à×-Ò-¨h¸ÀTÈ6ÑRÔR�Øð SØ9Ð9¸&ÐRÀ4ÐRÐRÐRÈ6ÐRÐRÐRØ,7�” Ñ)Ø9=Ô9M×9QÒ9QÐRZÐ\]Ñ9^Ô9^ÐabÑ9bÐb�˜Ô,¨XÑ6ØÕ 1Ñ1°QÒ6�Øð >Ý”J×-Ò-Ñ/Ô/×;Ò;Ñ=Ô=Ð=ÝÔ)Ñ+Ô+�ðdØ9Ð9¸&ÐRÀ4ÐRÐRÐRÈ6ÐRÐRà04�D”O HÑ-Øð dØ×)Ò)¨(°KÀÅtÔGXÑGZÔGZÐ]bÑGbÑcÔcÐcÐcðdøð 15�D”O HÑ-Øð dØ×)Ò)¨(°KÀÅtÔGXÑGZÔGZÐ]bÑGbÑcÔcÐcÐcðdøøøs   Â.C3 Ã3;D.c                 ód   •— ‰j         �‰j                              ‰‰||¦  «          ‰| g|¢R i |¤ŽS rd   )r´  Úon_block)r<   re   rf   rÒ  Ú check_load_into_GPU_needed_plainrË  rV   s      €€€€r=   Úcheck_load_into_GPU_needed_autoz[offload.hook_check_load_into_GPU_if_needed_default.<locals>.check_load_into_GPU_needed_autoÈ  sJ   ø€ ØÔ$Ð0ØÔ%×.Ò.¨x¸ÀdÈFÑSÔSÐSØ7Ð7¸ÐPÀÐPÐPÐPÈÐPÐPÐPr?   rJ  rþ  rX   )Ú_dtyperS   r™   r$   r!   rH   rª   rþ  r  rH  r�   rž   r6  rþ  rX   rN   rO   r`  r¶  r7  r8  r9  )rV   rF  rÆ   rË  rÒ  rÿ  r$  Úcpu_rootr,   r:   Úweight_qtypeÚqint4quantizationÚorig_model_idr		  Ú!check_load_into_GPU_needed_moduler	  r	  r	  r	  r	  r	  s   `  ```            @@@r=   Ú*hook_check_load_into_GPU_if_needed_defaultz2offload.hook_check_load_into_GPU_if_needed_default‰  sç  øøøøøøø€ Ø”ˆÝ˜¨°$Ñ7Ô7ˆØ9?Ð9K•w˜v w°Ñ5Ô5Ð5ÐQUˆÝ& }µlÑCÔCÐ]ÈÕX]ÒH]ÐØð 	Øå�= (Ñ+Ô+ð 	å# M°8Ñ<Ô<ˆMØÔ  1Ò$Ð$ÝÐy ÐyÐy¸=×;RÒ;RÑ;TÔ;TÐyÐyÐhuÐyÐyÐyÑzÔzÐzØ×/Ò/°Ñ>Ô>Ð>Ð>Ð>Ý˜m­TÑ2Ô2ð 0Ø!. �Ø× Ò  Ñ*Ô*Ð*Ý�M 8¨]Ñ;Ô;Ð;Ø$1Ô$=ˆMÔ!ØˆFð	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<õ �m¥U¤X¤_Ñ5Ô5ð 		Qð8ð 8ð 8ð 8ð 8ð 8ð 1RÐ-Ð-ð8ð 8ð 8ð 8ð 8ð 8ð 1QÐ-Øð 	OØ-NÐ*ðdð dð dð dð dð dð dð dð" 1OÐ-ØÔð 	P +Ð"9Ø/PÐ,ðQð Qð Qð Qð Qð Qð Qð Qð 1PÐ-å�˜x¨Ñ2Ô2Ð2Ý�˜}¨dÑ3Ô3Ð3Ý�˜}¨oÑ>Ô>Ð>å�˜y­)Ô*BÅ9ÔCTÐUvð  yFñ  DGô  DGð  IXñ  +Yô  +Yñ  	[ô  	[ð  	[ð  	[ð  	[r?   c                 ó”   ‡‡‡— t          ‰d¦  «        rdS ‰j        xŠ‰_        d„ Šˆˆˆfd„}t          j        |‰¦  «        ‰_        dS )zØA module marked by runtime.lookup_on_cpu: its forward runs on the CPU (tensor inputs copied there, blocking) and its tensor output goes
        to the execution device. One marked by runtime.unused raises if it runs.Ú_mm_cpu_forwardNc                 óX   — t          j        | ¦  «        r|                      d¦  «        n| S )Nrj  )rN   rT   rU   )rz  s    r=   rº  z)offload.hook_cpu_module.<locals>.<lambda>Ü  s#   € µ%´/À%Ñ2HÔ2HÐS˜uŸxšx¨™œ˜Èe€ r?   c                  óZ  •— t          ‰dd¦  «        r$t          t          ‰¦  «        j        › d�¦  «        ‚ ‰ˆfd„| D ¦   «         i ˆfd„|                     ¦   «         D ¦   «         ¤Ž}|                     t          j        dt          j         	                    ¦   «         ¦  «        ¦  «        S )Nr¼  FzU was marked by runtime.unused as never running: its weights are not loaded to the GPUc                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r—   r—   )rX  r:  Úto_cpus     €r=   rZ  z<offload.hook_cpu_module.<locals>.forward.<locals>.<listcomp>á  s!   ø€ Ð9Ð9Ð9¨S˜V˜V C™[œ[Ð9Ð9Ð9r?   c                 ó.   •— i | ]\  }}| ‰|¦  «        “ŒS r—   r—   )rX  r£  rz  r"	  s      €r=   r¨  z<offload.hook_cpu_module.<locals>.forward.<locals>.<dictcomp>á  s*   ø€ Ð=rÐ=rÐ=rÑU_ÐUXÐZ_¸cÀ6À6È%Á=Ä=Ð=rÐ=rÐ=rr?   r  )
rS   rò  r¹  rZ   r›   rU   rN   r-   r  r  )re   rf   r×  r<   r¦  r"	  s      €€€r=   rX   z(offload.hook_cpu_module.<locals>.forwardÞ  sÁ   ø€ Ý�v˜|¨UÑ3Ô3ð TÝ"¥d¨6¡l¤lÔ&;ð  $Sð  $Sð  $Sñ  Tô  Tð  TØ�(Ð9Ð9Ð9Ð9°DÐ9Ñ9Ô9ÐsÐ=rÐ=rÐ=rÐ=rÐci×coÒcoÑcqÔcqÐ=rÑ=rÔ=rÐsÐsˆCØ—6’6�%œ, v­u¬z×/HÒ/HÑ/JÔ/JÑKÔKÑLÔLÐLr?   )rH   rX   r	  r7  r8  )rV   r<   rX   r¦  r"	  s    ` @@r=   Úhook_cpu_modulezoffload.hook_cpu_moduleÖ  sz   øøø€ õ �6Ð,Ñ-Ô-ð 	ØˆFØ,2¬NÐ:ˆ�6Ô)ØSÐSˆð	Mð 	Mð 	Mð 	Mð 	Mð 	Mð 	Mõ #Ô1°'¸8ÑDÔDˆŒˆˆr?   c           
      óØ  ‡ ‡‡‡	— t          |d¦  «        r|j        Š	n|j        Š	ˆ	ˆˆˆ fd„}t          |d|z   ¦  «        rd S t          |d‰¦  «         t          |d|z   ‰¦  «         t          ||t	          j        t	          j        ||¦  «        ‰¦  «        ¦  «         ‰ j        dk    sd S |dk    r8|d k    s|dk    r.|                     ¦   «         }t          d‰› d	|› d
�¦  «         d S d S d S )Nr   c                 ór   •— ‰                      ‰¦  «         ‰d k    r ‰j        ‰g|¢R i |¤Ž\  }} ‰|i |¤ŽS rd   )r�  r;  )r<   re   rf   r,   rË  rÿ  rV   s      €€€€r=   Úcheck_change_modulez7offload.hook_change_module.<locals>.check_change_moduleì  s[   ø€ Ø×$Ò$ XÑ.Ô.Ð.à˜Š}ˆ}Ø4˜tÔ4°UÐL¸TÐLÐLÐLÀVÐLÐL‘��fØ"�? DÐ3¨FÐ3Ð3Ð3r?   Ú_mm_Ú_mm_Idr   rX   r»   zHooked to model 'rž  râ  )
rH   r   r	  r6  r7  r8  r9  rª   r  rþ  )
rV   rF  rÆ   rË  Ú	module_idrÿ  Úprevious_method_namer'	  r  r,   s
   `  ` `   @r=   Úhook_change_modulezoffload.hook_change_moduleæ  s]  øøøø€ Ý�= -Ñ0Ô0ð 	!Ø!Ô-ˆEˆEà”LˆEð	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4õ �= &Ð+?Ñ"?Ñ@Ô@ð 	ØˆFÝ�˜x¨Ñ2Ô2Ð2Ý�˜vÐ(<Ñ<¸oÑNÔNÐNå�Ð3µYÔ5MÍiÔN_Ð`sð  vCñ  ODô  ODð  FUñ  6Vô  6Vñ  	Xô  	Xð  	XàÔ  1Ò$Ð$ØˆFà )Ò+Ð+°¸dÒ1BÐ1BÀiÐRTÂnÀnØŸšÑ*Ô*ˆJÝÐ@ hÐ@Ð@°:Ð@Ð@Ð@ÑAÔAÐAÐAÐAð ,Ð+ÀnÀnr?   c                 ó  ‡‡‡$‡%‡&— i }d}d}|| j         ‰<   ‰| j        ‰<   d| j        ‰<   |dk    s‰�t          ‰¦  «        dk    s| j        sd S | j        ‰         }||z  }t          d|¦  «        }g Š&dŠ%‰D ]²}	d}
d}g }‰dz   |	z   }| j                             ¦   «         D ]k\  }}|                     |¦  «        rQ||z  }t          |t          |¦  «        d …         ¦  «        }| 
                    |||f¦  «         t          |
|¦  «        }
Œl‰& 
                    ||
|f¦  «         ‰%|z  Š%Œ³t          d„ ‰&D ¦   «         ¦  «        }ˆ%ˆ&fd„}| j        }|€+t          j         ||d|z  z
  ¦  «        ¦  «        dk    rdnd}|| j        ‰<   t          ˆfd„t!          | j        ‰         d	d
¦  «        D ¦   «         ¦  «        Š$ˆˆ$ˆfd„| j                             ¦   «         D ¦   «         }|s%|‰%t          j        d„ |D ¦   «         ¦  «        z   k    rd„ ‰&D ¦   «         }n�||dz   |z  z
  d}}t$          rg|t          |¦  «        k     rT||         d         |k    rB|||         d         z  }|dz  }t$          r%|t          |¦  «        k     r||         d         |k    °B|d |…          ||¦  «        }}|D ];\  }}d | j        |<   d | j        |<   |||t          ‰¦  «        dz   d …         <   ||z  }Œ<|}t+          ‰&|¦  «        D �]\  \  }}
}}t          |
|¦  «        }|| j        ‰<   t          |¦  «        }|dk    rd}t          |¦  «        }n
||z
  |z  }|}d }d }|D ]l}|\  }} }| |k     r |d k    r|}n|| j        |<   || j        |<   |}Œ.d | j        |<   d | j        |<   |||t          ‰¦  «        dz   d …         <   ||z  }|d|z   z  }Œm|d k    rCt          ‰&¦  «        dk    r0|| j        |<   || j        |<   | j                             |¦  «         �Œd | j        |<   �Œ||z
  }!| j                             ¦   «         D ]E\  }"}#|#�>|#                     ‰dz   ¦  «        r&|#t          ‰¦  «        dz   d …         |v r
d | j        |"<   ŒF|| j         ‰<   t          d||z
  |!‰%k    rdn|dz   |z  z
  ¦  «        | j        ‰<   | j        dk    rÐ|dk    rNt5          d‰› d||z   t6          z  d›d|t6          z  d›d�t          ‰&¦  «        dk    rdndz   d|› �z   ¦  «         d S t5          d‰› d||z   t6          z  d›d|t6          z  d›d|!‰%z  dz  d›d�	|rd|t6          z  d›d�ndz   d|t6          z  d›d�z   t          ‰&¦  «        dk    rdndz   d|› �z   ¦  «         d S d S )Nr   rÛ   c              3   ó"   K  — | ]
\  }}}|V — Œd S rd   r—   )rX  r!  Úmax_floor_sizes      r=   rc  z*offload.tune_preloading.<locals>.<genexpr>&  s)   è è € ÐHÐHÑ)=¨¨N¸A�nÐHÐHÐHÐHÐHÐHr?   c                 ó$   •‡ — ˆ ˆfd„‰D ¦   «         S )Nc                 óª   •— g | ]O\  }}}|d k    rAt          t          |¦  «        t          |‰z  t          d ‰¦  «        z  |z  ¦  «        ¦  «        nd ‘ŒPS rL  )r.  rÂ   rõ  r  )rX  rÚ  r/	  Ú
tower_sizerW  rˆ  s       €€r=   rZ  zCoffload.tune_preloading.<locals>.preload_counts.<locals>.<listcomp>)  s‡   ø€ ð  pð  pð  pñ  Ceð  CIð  KYð  [eÐhrÐuvÒhvÐhv•C�˜F™œ¥S¨°jÑ)@Å3ÀqÈ&Á>Ä>Ñ)QÐTbÑ)bÑ%cÔ%cÑdÔdÐdÐ|}ð  pð  pð  pr?   r—   )rW  rˆ  r:  s   `€€r=   Úpreload_countsz/offload.tune_preloading.<locals>.preload_counts'  sA   øø€ ð pð  pð  pð  pð  pð  ioð  pñ  pô  pð  pr?   r  rÙ   r   c              3   ó(   •K  — | ]}‰d z   |z   V — ŒdS r6  r—   r7  s     €r=   rc  z*offload.tune_preloading.<locals>.<genexpr>2  s,   øè è € ÐzÐz°4˜ C™¨$Ñ.ÐzÐzÐzÐzÐzÐzr?   Ú_offload_separate_blocksr—   c                 óØ   •— g | ]f\  }}|¯|                      ‰d z   ¦  «        ¯|                      t          ˆfd„‰D ¦   «         ¦  «        ¦  «        °M|                      ‰¦  «        °b||f‘ŒgS )rÛ   c              3   ó(   •K  — | ]}‰d z   |z   V — ŒdS r6  r—   )rX  rÍ   rË  s     €r=   rc  z5offload.tune_preloading.<locals>.<listcomp>.<genexpr>4  s-   øè è € Ð/kÐ/kÐPZ°¸3±ÀÑ0KÐ/kÐ/kÐ/kÐ/kÐ/kÐ/kr?   )rÀ   rÐ  )rX  r³   ré  rË  ÚseparaterË   s      €€€r=   rZ  z+offload.tune_preloading.<locals>.<listcomp>3  sÉ   ø€ ð Pð Pð P¡: 4¨ÐY]ð PÐbf×bqÒbqÐrzð  ~Añ  sAñ  cBô  cBð PØŸ/š/­%Ð/kÐ/kÐ/kÐ/kÐ^jÐ/kÑ/kÔ/kÑ*kÔ*kÑlÔlðPØuy÷  vEò  vEð  FNñ  vOô  vOðP�4˜�,ð Pð Pð Pr?   c              3   ó    K  — | ]	\  }}|V — Œ
d S rd   r—   r?  s      r=   rc  z*offload.tune_preloading.<locals>.<genexpr>5  s&   è è € Ð@\Ð@\É'È!ÈTÀÐ@\Ð@\Ð@\Ð@\Ð@\Ð@\r?   c                 ó4   — g | ]\  }}}t          |¦  «        ‘ŒS r—   r¦  )rX  rÚ  r!  s      r=   rZ  z+offload.tune_preloading.<locals>.<listcomp>6  s$   € Ð=Ð=Ð=¡l f¨a°•c˜&‘k”kÐ=Ð=Ð=r?   zAsync loading plan for model 'z' : base size of rÇ  z MB will be preloaded with a z	 MB asyncz	 circularr»   z shuttle, prefetch window z' : z$ MB will be preloaded (base size of z MB + rz  rµ  z% of recurrent layers dataz + z MB of other blocksz	) with a )rš  r±  r²  rÂ   rž  r‘  r  r›   rÀ   rõ  rž   r¨  rd  rà  rª  rÐ  rS   rŽ  ÚPRELOAD_BLOCKS_OUTSIDE_TOWERSr™  r˜  rD  r³  r�  r¤  rª   rþ  rÿ  )'rV   rË  Úcurrent_budgetrË   ÚcoversÚpreloaded_blocksÚpreload_totalÚmax_blocks_fetchÚ	base_sizerÍ   r/	  r2	  rÚ  r  r³   ré  Úfloor_norª  r3	  rü  r`  Úcountsr­  rç  Úothers_totalÚpreload_blocks_countÚ	nb_blocksÚspace_betweenÚcursorÚfirst_non_preloadedÚprev_non_preloadedrF  rå  Útowers_totalr¡  rr  r8	  rˆ  r:  s'    ` `                                @@@r=   Útune_preloadingzoffload.tune_preloading  s%	  øøøøø€ àÐØˆØÐà4DˆÔ'¨Ñ1Ø*6ˆÔ˜hÑ'Ø'(ˆÔ˜8Ñ$à˜QÒÐ ,Ð"6½#¸lÑ:KÔ:KÈqÒ:PÐ:PÐX\ÔXlÐ:PØˆFØÔ0°Ô:ˆ	Ø˜)Ñ#ˆÝ˜Q Ñ/Ô/ˆàˆØˆ
Ø&ð 	%ð 	%ˆJØˆNØˆJØˆFØ ‘^ jÑ0ˆFØ"Ô:×@Ò@ÑBÔBð ?ð ?‘
��dØ—?’? 6Ñ*Ô*ð ?Ø $Ñ&�JÝ" T­#¨f©+¬+¨,¨,Ô%8Ñ:Ô:�HØ—M’M D¨(°DÐ#9Ñ:Ô:Ð:Ý%(¨¸Ñ%>Ô%>�Nøà�MŠM˜F N°JÐ?ÑAÔAÐAØ˜*Ñ$ˆJˆJõ ÐHÐHÀÐHÑHÔHÑHÔHˆð	pð 	pð 	pð 	pð 	pð 	pð Ô%ˆØˆ>Ý"œ, ~ ~°nÀqÈ7Á{Ñ6RÑ'SÔ'SÑTÔTÐWXÒXÐX�Q�QÐ^_ˆFØ)/ˆÔ˜XÑ&õ
 ÐzÐzÐzÐz½7À4Ä;ÈxÔCXÐZtÐvxÑ;yÔ;yÐzÑzÔzÑzÔzˆðPð Pð Pð Pð Pð P°Ô1M×1SÒ1SÑ1UÔ1Uð Pñ Pô Pˆàð 	A�^ zµH´LÐ@\Ð@\ÐU[Ð@\Ñ@\Ô@\Ñ4\Ô4\Ñ'\Ò\Ð\Ø=Ð=°fÐ=Ñ=Ô=ˆFˆFà'¨6°A©:¸Ñ*@Ñ@À!�$ˆDÝ/ð °D½3¸v¹;¼;Ò4FÐ4FÈ6ÐRVÌ<ÐXYÌ?Ð^bÒKbÐKbØ˜˜tœ QœÑ'�Ø˜‘	�õ 0ð °D½3¸v¹;¼;Ò4FÐ4FÈ6ÐRVÌ<ÐXYÌ?Ð^bÒKbÐKbð $ E T Eœ]¨N¨N¸4Ñ,@Ô,@�FˆFØ ð 	"ð 	"‰JˆD�$Ø+/ˆDÔ" 4Ñ(Ø+/ˆDÔ" 4Ñ(Ø9=Ð˜T¥# h¡-¤-°!Ñ"3Ð"4Ð"4Ô5Ñ6Ø˜TÑ!ˆMˆMØ$ˆåJMÈfÐV\ÑJ]ÔJ]ð "	Bñ "	BÑFÑ0ˆV�^ ZÐ2FÝ" >Ð3CÑDÔDÐØ+;ˆDÔ˜xÑ(å˜6‘{”{ˆIØ# qÒ(Ð(Ø !�Ý˜V™œ��à"+Ð.BÑ"BÐFZÑ!Z�Ø&�Ø"&ÐØ!%ÐØð 0ð 0�Ø %‘��a˜Ø�v’:�:Ø)¨TÒ1Ð1Ø.2Ð+Ð+àEI˜Ô.Ð/AÑBØ7I˜Ô.¨tÑ4Ø)-Ð&Ð&à37�DÔ*¨4Ñ0Ø37�DÔ*¨4Ñ0ØEIÐ$ T­3¨x©=¬=¸1Ñ+<Ð+>Ð+>Ô%@ÑBØ! TÑ)�MØ˜a -Ñ/Ñ/�F�Fà! TÒ)Ð)­c°&©k¬k¸QÒ.>Ð.>Ø=P�Ô&Ð'9Ñ:Ø>P�Ô&Ð':Ñ;ØÔ"×&Ò&Ð'9Ñ:Ô:Ð:Ñ:à=A�Ô&Ð'9Ñ:Ñ:à$ |Ñ3ˆØ!Ô3×9Ò9Ñ;Ô;ð 	5ð 	5‰MˆE�6ØÐ! f×&7Ò&7¸À3¹Ñ&GÔ&GÐ!ÈFÕSVÐW_ÑS`ÔS`ÐcdÑSdÐSeÐSeÔLfÐjzÐLzÐLzØ04�Ô& uÑ-øØ4DˆÔ'¨Ñ1å%(¨¨N¸]Ñ,JÐS_ÐcmÒSmÐSmÈaÈaÐtzÐ}~Ñt~ð  CJñ  tJñ  -Kñ  &Lô  &LˆÔ˜Ñ"àÔ˜qÒ Ð Ø Ò!Ð!Ýð  ~°xð  ~ð  ~ÐS`ÐajÑSjÕlrÑRrð  ~ð  ~ð  ~ð  Wgõ  hnñ  Wnð  ~ð  ~ð  ~ð  ~õ  QTð  U[ñ  Q\ô  Q\ð  `aò  Qað  Qað  BMð  BMð  giñ  jð  mRð  JPð  mRð  mRñ  Rñ  Sô  Sð  Sð  Sð  Såð  j°xð  jð  jÀmÐT]ÑF]Õ_eÑEeð  jð  jð  jð  QZõ  [añ  Qað  jð  jð  jð  nzð  {Eñ  nEð  FIñ  nIð  jð  jð  jð  jð  eqð  nyð  nað  t@õ  AGñ  tGð  nað  nað  nað  nað  nað  wyñ  zð  }pð  IYõ  Z`ñ  I`ð  }pð  }pð  }pð  }pñ  põ  CFð  GMñ  CNô  CNð  RSò  CSð  CSð  tð  tð  Y[ñ  \ð  _Dð  |Bð  _Dð  _Dñ  Dñ  Eô  Eð  Eð  Eð  Eð	 !Ð r?   c                 óÌ  — | j         €d S |                      ¦   «          | j        D ]}|                     ¦   «          Œ| j                             ¦   «          | j                             ¦   «         D ]}|                     ¦   «          Œ| j                             ¦   «          | j        r/ddlm	}  || j                             ¦   «         ¦  «         i | _        | j
        � | j
                             ¦   «          d | _
        | j        �"| j                             d¬¦  «         d | _        i | _        |                      ¦   «          t                               | ¦  «         | j         	                    ¦   «          d | _        | j                             ¦   «          d | _        d | _        d | _        d | _        d„ | j                             ¦   «         D ¦   «         }|D ]
}| j        |= Œd | _        | j                              ¦   «         D ]Œ\  }}t3          |d¦  «         t5          |d¦  «        rFt7          |dd	¦  «        s5t8          5  t:          |j        z  ad d d ¦  «         n# 1 swxY w Y   d
|_        t5          |d¦  «        rt?          |¦  «         d }Œ�d | _         tA          j!        | ¦  «         tD          | k    rd a"tG          j$        ¦   «          tJ          j&         '                    ¦   «          d S )Nr   )rK  TrJ  c                 ó   — g | ]}|‘ŒS r—   r—   )rX  r¢   s     r=   rZ  z#offload.release.<locals>.<listcomp>—  s   € Ð8Ð8Ð8�QˆqÐ8Ð8Ð8r?   rj  r  r  Fr   rŸ  )(rŽ  r6  r¹  r–  r   r¸  ry  rK  r·  rK  r´  r¥  rJ  r«  rÇ  rÞ  r   r¦  r�  r›  r�  rŸ  r�  rn  r›   rh  rH   rS   rö  r÷  r  rû  r   Ú_unregisterrÏ  rß  rà  rN   r  rá  )rV   r½  r4  rK  rn  r¢   rË  rÆ   s           r=   rK  zoffload.releasev  s3  € ð Œ;ÐØˆFà�ŠÑÔÐØÔ'ð 	ð 	ˆFØ�MŠM‰OŒOˆOˆOØÔ×ÒÑ!Ô!Ð!ØÔ.×5Ò5Ñ7Ô7ð 	ð 	ˆIØ�OŠOÑÔÐÐØÔ×#Ò#Ñ%Ô%Ð%ØÔð 	"Ø,Ð,Ð,Ð,Ð,Ð,ØˆG�DÔ$×+Ò+Ñ-Ô-Ñ.Ô.Ð.Ø!ˆDÔØÔÐ(ØÔ×#Ò#Ñ%Ô%Ð%Ø $ˆDÔØÔ!Ð-ØÔ"×+Ò+°Ð+Ñ6Ô6Ð6Ø%)ˆDÔ"ØˆŒØ×ÒÑÔÐÝ�Š�DÑÔÐØŒ×ÒÑÔÐØˆŒØÔ×ÒÑ Ô Ð Ø!ˆÔØ"ˆÔØ#ˆÔØ"ˆÔØ8Ð8˜$Ô0×5Ò5Ñ7Ô7Ð8Ñ8Ô8ˆØð 	*ð 	*ˆAØÔ& qÐ)Ð)à!%ˆÔà#œ{×0Ò0Ñ2Ô2ð 	ð 	‰OˆH�eÝ  ¨Ñ.Ô.Ð.Ý�u˜oÑ.Ô.ð (µw¸uÐF^Ð`eÑ7fÔ7fð (Ý'ð >ð >Ý&¨%Ô*=Ñ=Ð&ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >à&'�Ô#Ý�uÐ1Ñ2Ô2ð /Ý'¨Ñ.Ô.Ð.ØˆEˆEàˆŒÝÔ˜DÑ!Ô!Ð!å˜tÒ#Ð#Ø#Ðå
Œ
‰ŒˆÝŒ
×ÒÑ Ô Ð Ð Ð s   È;IÉI	ÉI	rd   r]  r„  )NNTrU  )YrZ   r[   r\   Úsupports_cotenant_wildcardsr‰   rÛ  rá  rä  ré  rì  rï  rÿ  r  r  r  r  r$  r.  r0  rI  rß  r  ra  rf  rh  rU  rl  rs  rV  rz  r)  r›  r³  r­  r»  r¸  rÄ  rÇ  r  rÍ  râ  ræ  rï  ró  rý  r   r  r  rN   ÚcompilerÚdisabler  r  r  r#  r6  r;  r  r  rO   r7  rH  rp  r^   rS  rý  rn  r{  rL  rŒ  r�  r–  r”  r¯  r•  r¹  rÑ  rÜ  rê  rï  Ú_dynamoró  rü  r	  r	  r$	  r,	  rL	  rK  r—   r?   r=   rŠ  rŠ  û  s  € € € € € Ø"&ÐðK!ð K!ð K!ðZ8"ð 8"ð 8"ðvð ð ðZð Zð Zðkð kð kð8ð 8ð 8ð
^ð ^ð ^ðð ð ðeð eð eð
*ð *ð *ð *ð)ið )ið )iðVð ð ð2ð ð ð6ð ð ð:ð ð ð ð(#ð #ð #ðð ð ð2<ð <ð <ð<ð ð ð*	ð 	ð 	ð[ð [ð [ðð ð ð2Gð Gð Gð
ð ð ðð ð ð
Zð 
Zð 
Zðð ð ðcð cð cð
4Cð 4Cð 4Cð 4Cðlbð bð bð$	6ð 	6ð 	6ðð ð ð
"ð 
"ð 
"ðVð Vð Vð Vð!ð !ð !ðð ð ð/.ð /.ð /.ð /.ðbyð yð yð
ð 
ð 
ð=ð =ð =ðCð Cð Cð$|ð |ð |ðWð Wð Wð
`ð 
`ð 
`ð „^×ÒÑÔðw?ð w?ð w?ñ Ôðw?ðxUð Uð Uð
 „^×ÒÑÔð!Qð !Qñ Ôð!QðN=ð =ð =ð, "$ð 33ð 33ð 33ð 33ð 33ðj$ð $ð $ð,ð ð ð
<ð 
<ð 
<ð°´´ð ð ð ð ð'ð 'ð 'ð%Ð\aÔ\hð %ð %ð %ð %ðZ ØØØ ð_ð _ð ð_ð _ð _ð _ðBKð Kð Kð KðAÀEÄLð AÐfkÔfrð Að Að Að AðH^ð ^ð ^ð" ð  ð  ðOð Oð Oð.@"ð @"ð @"ð @"ðDGð Gð Gð ð ð ð	ð 	ð 	ðsð sð sð>Zð Zð Zð.)Sð )Sð )SðV
Lð 
Lð 
Lð „]Ôð
8ð 
8ñ Ôð
8ðð ð ð0xð xð xð I[ð I[ð I[ð I[ðZEð Eð Eð Bð Bð Bð:qEð qEð qEð qEðf8!ð 8!ð 8!ð 8!ð 8!r?   rŠ  c                   ó   — e Zd ZdZdS )ÚLoadingCancelledz8Loading was cancelled; discard the interrupted pipeline.Nr  r—   r?   r=   rU	  rU	  ³  s   € € € € € ØBÐBÐBÐBr?   rU	  Úmmgp_loading_contextr÷  c              #   óB  K  — | €dV — dS |€i nd„ |                      ¦   «         D ¦   «         }t                               | |f¦  «        }	 |                      dddd¦  «         dV — t                               |¦  «         dS # t                               |¦  «         w xY w)zLForward optional progress through model construction and checkpoint loading.Nc                 óŽ   — i | ]B\  }}t           j                             t           j                             |¦  «        ¦  «        |“ŒCS r—   )r±   rß   ÚnormcaseÚabspath)rX  rß   r³   s      r=   r¨  z#loading_context.<locals>.<dictcomp>À  sR   € ð  .Að  .Að  .AÑ`jÐ`dÐfj­b¬g×.>Ò.>½r¼w¿ºÈtÑ?TÔ?TÑ.UÔ.UÐW[ð  .Að  .Að  .Ar?   zPreparing Modelsr   r   r»   )r›   rú  r‚  r  r  )ÚcallbackrÆ  Útokens      r=   Úloading_contextr]	  º  sÉ   è è € ð ÐØˆˆˆØˆØÐ'��ð  .Að  .AÐnw×n}Òn}ÑnÔnð  .Añ  .Aô  .A€IÝ× Ò  (¨IÐ!6Ñ7Ô7€Eð&Ø�ŠÐ*¨A¨q°"Ñ5Ô5Ð5Øˆˆˆå×Ò˜uÑ%Ô%Ð%Ð%Ð%øÕ×Ò˜uÑ%Ô%Ð%Ð%øøøs   Á
B ÂBc                 óè   ‡— t                                ¦   «         }|€d S |\  }Št          |t          ¦  «        r|n|g}t	          ˆfd„|D ¦   «         d¦  «        }|                     | |||¦  «         d S )Nc              3   óB  •K  — | ]™}t          |t          ¦  «        ¯t          j                             t          j                             |¦  «        ¦  «        ‰v ¯U‰t          j                             t          j                             |¦  «        ¦  «                 V — Œšd S rd   )r™   rý  r±   rß   rY	  rZ	  )rX  rß   rÆ  s     €r=   rc  z"_report_loading.<locals>.<genexpr>Ï  sß   øè è € ð  mð  mÈDÕ]gÐhlÕnqÑ]rÔ]rð  mÕwyÔw~÷  xHò  xHõ  IKô  IP÷  IXò  IXð  Y]ñ  I^ô  I^ñ  x_ô  x_ð  clð  xlð  xl�Y�rœw×/Ò/µ´·²ÀÑ0EÔ0EÑFÔFÔGð  xlð  xlð  xlð  xlð  mð  mr?   r»   )rú  ry   r™   r�   rñ   r  )rí  rî  rð  Úpathsr$  r[	  rË  rÆ  s          @r=   r‹  r‹  É  s¥   ø€ Ý×"Ò"Ñ$Ô$€GØ€ØˆØ!Ñ€HˆiÝ ¥tÑ,Ô,Ð9ˆEˆE°5°'€EÝð  mð  mð  mð  mÐTYð  mñ  mô  mð  oqñ  rô  r€HØ‡O‚O�E˜9 e¨XÑ6Ô6Ð6Ð6Ð6r?   c                   ó"   — e Zd Zdd„Zd„ Zd„ ZdS )rû  Nc                 ó"   — || _         || _        d S rd   )rü  Úprogress)rV   rü  rc	  s      r=   r‰   zLoadingCallback.__init__Ô  s   € Ø.ˆÔØ ˆŒˆˆr?   c                 ó^   — | j         �#|                       ¦   «         rt          d¦  «        ‚d S d S )NzModel loading cancelled)rü  rU	  rˆ   s    r=   r  zLoadingCallback.check_abortØ  s9   € ØÔÐ+°×0DÒ0DÑ0FÔ0FÐ+Ý"Ð#<Ñ=Ô=Ð=ð ,Ð+Ð+Ð+r?   c                 ó”   — |                       ¦   «          | j        �|                      ||||¦  «         |                       ¦   «          d S rd   )r  rc	  )rV   rí  rî  rð  rË  s        r=   r  zLoadingCallback.reportÜ  sL   € Ø×ÒÑÔÐØŒ=Ð$Ø�MŠM˜% ¨E°8Ñ<Ô<Ð<Ø×ÒÑÔÐÐÐr?   ©NN)rZ   r[   r\   r‰   r  r  r—   r?   r=   rû  rû  Ó  sF   € € € € € ð!ð !ð !ð !ð>ð >ð >ðð ð ð ð r?   rû  g333333ë?rø  c                 ó¤  — t          ¦   «                              ¦   «         }t          }t          t          j        dd¦  «        } | €dn| j        t          }"}!t          ¦   «         }#	 t          |#fi |¤ŽS # t          $ rT}$t          j        |$j        ¦  «         d|$_        |#                     ¦   «          |a|"at	          j        |!¦  «         |$d‚d}$~$ww xY w)zMConfigure offloading, optionally reporting phases and accepting cancellation.Údevice_contextN)Úlocalsrý   rŒ  rS   rN   Ú_GLOBAL_DEVICE_CONTEXTr-   rÏ  rŠ  Ú
_configurerU	  r3  Úclear_framesÚ__traceback__rK  Úset_default_device)%Úpipe_or_dict_of_modulesÚpinnedMemoryr  r  rî  ÚquantizeTransformerÚextraModelsToQuantizerƒ  ÚbudgetsÚminimumBudgetÚworkingVRAMÚasyncTransfersÚcompileÚconvertWeightsFloatTor®   ÚcoTenantsMapÚvram_safety_coefficientÚcompile_moderª   r  ÚprefetchWindowÚsmartPinningÚautoPreloadÚ
cudaGraphsÚpreloadExpertsÚ
cpuComputeÚcpuComputePinningÚpinPoolÚcpuComputeForceÚpreloadPriorityrf   Úprevious_pinnable_limitrh	  Úprevious_deviceÚprevious_offloadrV   rë  s%                                        r=   re  re  ã  sØ   € õ ‰XŒX�]Š]‰_Œ_€FÝ0ÐÝ�UÔ9Ð;KÈTÑRÔR€NØ0>Ð0F¨¨ÈNÔLaÕcsÐ%€OÝ‰9Œ9€Dð
Ý˜$Ð)Ð) &Ð)Ð)Ð)øÝð ð ð åÔ˜uÔ2Ñ3Ô3Ð3Ø"ˆÔØ�Š‰ŒˆØ4ÐØ+ÐÝÔ  Ñ1Ô1Ð1Ø˜Ðøøøøðøøøs   Á$A1 Á1
CÁ;AC
Ã
Cc                 ó¼0  ‡ ‡‡‡‡‡‰‡Š‡‹‡Œ‡�‡Ž‡�‡�‡‘‡’‡“‡”‡•‡–‡—‡˜‡™‡š‡›‡œ‡�— ‰‰ _         ‰t          _         i ‰ _        i Š“t          j        dk    }ˆ fd„Š�t          |t          ¦  «        r|dk    s|dk    rt          d¦  «        ‚dŠŠ|	�Wt          |	t          ¦  «        r7ˆ�fd„|	 	                    ¦   «         D ¦   «         Š“‰“ 
                    dd¦  «        ŠŠn ‰�|	¦  «        ŠŠt           ‰�|
¦  «        |‰ j        z  ¦  «        } i }!|‰ _        |‰ _        dd	lm}" |"j        d
k    ‰ _        t          |t          ¦  «        r|nd}#|du p|#du}|r|"j        d
k    rt'          d¦  «         d}n|r|st'          d¦  «         t)          |¦  «        o|‰ _        ‰ j        p|"j        d
k    o|‰ _        g g }%}$t/          j        d¦  «         t3          |dd¦  «        Š�t5          |d¦  «        r t/          j        d¦  «        |_        |j        }ˆ�fd„| 	                    ¦   «         D ¦   «         Š•t=          ‰¦  «        Š|dk    r|‰ _        |dk    rt          |t@          ¦  «        r|g}‰•‰ _!        |�|ng }t          |tD          ¦  «        s|g}|r| #                    d¦  «         |Š—g Š–dŠœt          |t(          ¦  «        r|Šœnt          |tD          ¦  «        r|Š–n|gŠ–g }&d}'t          |t(          ¦  «        r|}'nt          |tD          ¦  «        r|}&n|g}&|'ptI          |&¦  «        dk    ‰ _%        t          |t(          ¦  «        rg nt          |tD          ¦  «        r|n|g}(|du rtE          ‰•¦  «        nA|sg n=|dk    rd„ ‰• 	                    ¦   «         D ¦   «         nt          |tD          ¦  «        r|n|g})|r|sg n,|du rtE          ‰•¦  «        nt          |tD          ¦  «        r|n|g‰ _&        |‰ _'        ‰ j%        r4t.          j(         )                    ¦   «          dt.          j*        j+        _,        t[          ‰¦  «        Št]          ‰¦  «        x}*‰ _/        dŠšdtI          ‰•¦  «        z  ta          ˆ—fd„‰•D ¦   «         ¦  «        z   Š›ˆˆšˆ›fd„}+ddlm1ŠŽ ˆŽfd„‰• 	                    ¦   «         D ¦   «         Š�ˆ�ˆŽfd„‰• 	                    ¦   «         D ¦   «         },i }-ˆ–ˆœfd„‰•D ¦   «         Š’d„ ‰’ 	                    ¦   «         D ¦   «         te          ‰ j&        ¦  «        z  ‰ _3        |sd}n‰ j&        r|€d}|€dn|*‰f‰ _4        dd lm5}. |. 6                    ‰•|*‰ j         ¦  «         ‰•D �]7Š”‰�‰ 7                    ¦   «          ‰•‰”         ŠŒ |+d!‰”¦  «         t3          ‰Œd"|¦  «        }/tq          ‰Œ¦  «         9                    ¦   «          ‰”‰—v r$ |+d#‰”¦  «         tu          ‰Œ|‰ j         ‰”¬$¦  «          |+d%‰”¦  «         d}0t3          ‰Œd&d¦  «        }1te          ¦   «         }2tw          ‰Œ¦  «        }3‰Œ <                    ¦   «         D �]›\  Š˜}4t5          |4d'¦  «        }5t{          ˆ˜fd(„|3D ¦   «         ¦  «        }6|4 >                    d¬)¦  «        D �]R\  }7}8d|8_?        t�          |8¦  «        rŒtƒ          |8¦  «        }9|9r>t…          |8¦  «        }:|:|2vr)|6s'|2 C                    |:¦  «         |0t‰          |9¦  «        z  }0~9Œl|5so|8jE        jF        };|/dk    rI|;t.          jG        k    r9|1dk    r|/n|1};|;t.          jG        k    r|8jE         H                    |;¦  «        |8_E        |1€|;}1n|1|;k    r	 |1|;k    sJ ‚|8 I                    ¦   «         |2vr_|6s]|2 C                    |8 I                    ¦   «         ¦  «         |0t/          jJ        |8jE        ¦  «        |8jE         K                    ¦   «         z  z  }0�ŒT�Œ�|1€|/�|/nt.          jL        }1|1‰Œ_M        ˆŒfd*„|3D ¦   «         }<‰Œ N                    ¦   «         D ]I}=tŸ          |=¦  «        |<vr6|0t/          jJ        |=jE        ¦  «        |=jE         K                    ¦   «         z  z  }0ŒJ|0t¡          j0        d+„ ‰�‰”          Q                    ¦   «         D ¦   «         ¦  «        z  }0|0|!‰”<   �Œ9ˆŠˆ“ˆ•fd,„‰•D ¦   «         }>t¥          tE          ‰•¦  «        |!|>| ‰ j        |¦  «        }?‰•D �]¿Š”|!‰”         }0|?‰”         }@|dk    r€d-}At          |t          ¦  «        r4‰”|v r ‰�|‰”         ¦  «        }An)d‰”cxv r|v rn n ‰�|d         ¦  «        }An ‰�|¦  «        }A|Adk    r$‰ j        |Az
  }B|Bdk     rdn|B}B|@dk    s|B|@k     r|Bn|@}@|r|@nd|-‰”<   |}Cd‰ jS        ‰”<   |@dk    r9|0|@k    r3t          |@|C‰ j        z  ¦  «        }@t©          d|@|0z
  ¦  «        ‰ jS        ‰”<   |0|C‰ j        z  k    r|@dk    s|@|C‰ j        z  k    r«‰dk    r¥|@dk    r;t'          d.‰”› d/|0tª          z  d0›d1|Cd2z  d3›d4|C‰ j        z  tª          z  d0›d5�	¦  «         n/t'          d6|@tª          z  d0›d7‰”› d8‰ j        tª          z  › d5�¦  «         t'          d9|Cd2z  d3›d:|C‰ j        z  tª          z  d0›d;�¦  «         |C‰ j        z  }@|@‰“‰”<   �ŒÁt­          jW        ‰ ‰•¦  «         ‰•D �]åŠ”‰�‰ 7                    ¦   «          ‰•‰”         ŠŒd‰Œ_X        |du s‰”|(v rt3          ‰Œd<d¦  «        nd}Dt³          ‰Œ|D¬=¦  «        \  }E}Ftµ          t3          ‰Œd>d¦  «        ¦  «        Š‰ˆ‰fd?„Š‘t.          j[        j\        t.          j[        j]        t.          j[        j^        fŠ‹t¿          j`        ˆ‹fd@„‰Œ a                    ¦   «         D ¦   «         ¦  «        }Gˆ‹fdA„|G 	                    ¦   «         D ¦   «         }H‰‰r;dB„ ‰Œ <                    ¦   «         D ¦   «         Š™ˆ‘fdC„|ED ¦   «         ˆ‘ˆ™fdD„|FD ¦   «         }F}E|'p‰”|&v }Id}J|du s‰”|(v r©|Fr§ddElbmc}K  |K‰”tÉ          je        ‰ jf        ‰Œ¦  «        tÉ          je        ‰ jg        ‰Œ¦  «        tÉ          je        ‰ jh        ‰Œ¦  «        tÉ          je        ‰ ji        ‰”¦  «        tÉ          je        ‰ jj        ‰Œ¦  «        ¦  «        x}J‰ jb        ‰”<   te          |F¦  «        }L |+dF‰”¦  «         ‰“‰”         }M|M|!‰”         cxk    odk    nc }N|Nr|ErtÖ          sd}MdG\  }O}P}Q}R}StØ          rte          |F¦  «        ndd}U}Td‰ jm        ‰”<   |dk    o‰”|v }V|Vri i }X}W|W‰Œ_n        |X‰Œ_o        g g }Z}Y|Mdk    rtµ          t3          ‰ŒdHd¦  «        ¦  «        nd}[tw          ‰Œ¦  «        }3|3D ]_}\tá          d|\ q                    dI¦  «        dz   ¦  «        D ]6}]d‰Œ r                    |\ s                    dI|]¦  «        d         ¦  «        _X        Œ7Œ`‰”|)v r|Mdk    rte          |F¦  «        nte          ¦   «         }^‰Œ <                    ¦   «         D �]l\  Š�}_‰�|, 
                    ‰”d¦  «        v rŒté          ˆ�fdJ„|3D ¦   «         d¦  «        }`|`�‰�|`k    r‰  u                    |_¦  «         ŒYt5          |_dK¦  «        stí          |_dKtï          ¦   «         ¦  «         |Mdk    �r?tI          ‰�¦  «        dk    �r+|Odk    rš‰� x                    |O¦  «        r}|O y                    dI¦  «        }a‰� y                    dI¦  «        }b|btI          |a¦  «        dz
           }ctõ          |c¦  «        \  }d}e|e|Rk    r |Sr|Rdk    s|Q}P|OtA          |e¦  «        z   |_|Tv }U}Q|e}RndG\  }O}P}Q}R}S|Odk    r…tõ          ‰�¦  «        \  }d}et          |_t.          j[        j\        t.          j[        j]        f¦  «        r,|ddIz   dd-t          |_t.          j[        j]        ¦  «        f\  }O}P}R}Sn|edk    r|dd|edf\  }O}P}R}S‰�|_|Tv }U}Qté          ˆ�fdL„|[D ¦   «         d¦  «        }f|f�|fdfn|_|Hv s‰‰r ‰‘‰�¦  «        s|Tr|Q�|UsdMn|Q|Pf\  }g}htI          ‰� y                    dI¦  «        ¦  «        dk    }it5          |_dN¦  «        r|_j{        ng }j|istI          |j¦  «        dk    s
J dO¦   «         ‚dPg|jz   }kt3          |_dQd¦  «        }l|kD �]å}mt5          |_|m¦  «        sŒ|mdPk    r-|Vr+t5          |_dR¦  «        r‰  |                    |_‰Œ‰”|W|X‰�¦  «        }nnt3          |_|m¦  «        }n|J�1|mdPk    r+|_|Lv r't3          |_dSd¦  «        s|J }                    |_|n¦  «        }ntý          |n¦  «        �rK|ir|g€|VrtI          |_j        ¦  «        r	 |ir3|g€1|VrtI          |_j        ¦  «        s‰  €                    |_‰Œ‰”‰�|n|m¦  «         nâ|Ir
|_|Fv r|ldk    r|ldk    r”‰  �                    |_‰”|g‰�¬T¦  «         ‰�d-          ‚                    ¦   «         r0dI ƒ                    ‰� y                    dI¦  «        dd-…         ¦  «        n‰�}o|o|Zvr|Z #                    |o¦  «         |Y #                    |_¦  «         n<|Ir‰  „                    |_‰Œ‰”|g|n‰�¬T¦  «         n‰  …                    |_‰Œ‰”|g|n‰�|_|^v ¬U¦  «         ‰  †                    ‰”|g|_|h‰�¦  «         �Œç�Œn |+dV‰”¦  «         |Irz‰ j         dk    rItI          |Z¦  «        dk    r#dW„ |ZD ¦   «         }pt'          dX‰”› dY|p› dI�¦  «         nt'          dZ‰”› d[�¦  «         |YD ]#}qt/          j‡        |qjˆ        d\|¬]¦  «        |q_ˆ        Œ$|Er‰  ‰                    ‰”¦  «         |Er�t          r‰  ‹                    ‰”|E¦  «         |^r‰  Œ                    ‰”|E¦  «         ‰  �                    ‰”|M|E|N¦  «         ‰ j        r/|Mdk    r)|Er'‰ j        r |Is‰ j        r|$n|% #                    ‰”¦  «         i ‰ _Ž        �Œç‰ j         d^k    �r g }r‰ j�         	                    ¦   «         D ]¶\  }7}sd_|7v rtõ          |7¦  «        n|7d-f\  }d}e|rr|rd-         nd}t|t�o|edk    ri|td         |dk    r]|e|td^         dz   k    rNt©          g |td`         ¢|s‘R Ž dat          g |td`         ¢|s‘R Ž z  k    r!|e|td^<   |td`          #                    |s¦  «         Œœ|r #                    |d|e|e|sgg¦  «         Œ·|rD ]Ë\  }d}u}v}wt          |w¦  «        tª          z  db›t©          |w¦  «        tª          z  db›}y}xtI          |w¦  «        dk    r$dc|x|yk    r|xn|xddz   |yz   › detI          |w¦  «        › df�ndg}zt'          dh|udk     r|dn|dtA          |u¦  «        z   |u|vk    rdgndd|v› �z   › dit¡          j0        |w¦  «        tª          z  db›dj|z› �¦  «         ŒÌ|$s|%rddkl�m‘}{  |{‰ |$‰|#|%¦  «        ‰ _�        ‰� 	                    ¦   «         D ]q\  Š”}|||sŒ‰Ž ’                    ‰ ‰”|||-‰”         |¦  «        }}|}‰ j“        ‰”<   ‰”|}fˆ fdl„	}~‰ j”         #                    ‰ j!        ‰”          •                    |~¦  «        ¦  «         Œrˆˆ fdm„‰ j–        D ¦   «         }| 	                    ¦   «         D ]#\  Š”}€|€dk    r‰  —                    ‰”¦  «        |‰”<   Œ$‰  ˜                    ‰’|||‰|*‰‰|¦	  «	         ‰œr9‰ j“         	                    ¦   «         D ]\  Š”}}|} ™                    ˆˆˆfdn„¦  «         Œ ‰ j�        �‰ j�         š                    ¦   «          |r‘ˆ fdo„‰ j›        D ¦   «         }�ˆ fdp„|�D ¦   «         }‚|‚s‰  œ                    ¦   «          nY‰ j�        €R|€Pt¡          j=        ˆ’fdq„|‚D ¦   «         ¦  «        r0‰  ž                    t©          ˆ fdr„|‚D ¦   «         ¦  «        |*‰¦  «         ‰ j&        D ]-Š”ˆ”fds„‰ jŸ        D ¦   «         D ]}ƒ‰                       |ƒ¦  «         ŒŒ.‰ j–         Q                    ¦   «         D ])}„|„D ]$\  }…}\}8}†}†dx|8_¡        t3          |…|\¦  «        _¡        Œ%Œ*‰d^k    raddtlm¢}‡ |‡ £                    ‰ j!        ¦  «         	                    ¦   «         D ].\  Š”}ˆ�tI          j¥        |‡ ¦                    ‰”|ˆ¦  «        ¦  «         Œ/‰�‰ §                    dV‰›‰›dg¦  «         t/          j        d¦  «         t.          j¨         ©                    ¦   «          �tU          j«        ¦   «          ‰ S )uaÀ   Hook to a pipeline or a group of modules in order to reduce their VRAM requirements:
    pipe_or_dict_of_modules : the pipeline object or a dictionary of modules of the model
    quantizeTransformer: set True by default will quantize on the fly the video / image model
    pinnedMemory: move models in reserved memor. This allows very fast performance but requires 50% extra RAM (usually >=64 GB)
    extraModelsToQuantize: a list of models to be also quantized on the fly (e.g the text_encoder), useful to reduce bith RAM and VRAM consumption
    convertWeightsFloatTo: default dtype for remaining FP32 parameters. A model-level _convertWeightsFloatTo overrides it; None preserves FP32.
    budgets: 0 by default (unlimited). If non 0, it corresponds to the maximum size in MB that every model will occupy at any moment.
        0 loads a model whole; a budget at least its size preloads every block of its towers, which leave the VRAM under pressure as any
        preload instead of spilling (a model without towers is loaded whole)
    minimumBudget: 0 by default (none). The least budget in MB of every model, also of those given one in budgets or by a _budget
        attribute (in bytes): a smaller budget is raised to it, 0 (the whole model) stays. Models kept in VRAM together (co-tenants of
        each other, coTenantsMap) share it as a total instead: each keeps its own budget, and what it leaves beyond those goes to them in
        the order of preloadPriority (default: transformer, transformer2, then the others), each up to its size; what remains then is room
        for state kept in VRAM (mmgp.state_ring). At most vram_safety_coefficient of the VRAM
    preloadExperts: with an explicit budget, use its remaining space for individual GPU experts after ordinary blocks. Dynamic
        preload applies the same priority independently. False keeps experts on CPU for fixed-budget execution. With pinnedMemory=True,
        the reserved RAM the models leave also holds pinned copies of the experts that can go to the GPU, most used first, so that
        placing them is a plain transfer; the experts that stay on the CPU are never pinned.
        (in fact the real usage is twice this number). It is very efficient to reduce VRAM consumption but this feature may be very slow
        if pinnedMemory is not enabled
    vram_safety_coefficient: float between 0 and 1 (exclusive), default 0.85. Sets the maximum portion of VRAM that can be used for models.
        Lower values provide more safety margin but may reduce performance.        
    prefetchWindow: with asyncTransfers, number of blocks transferred ahead of the block being computed. None (default): 2 for the models whose
        budget also preloads blocks, 1 for the others. The host queues the copies without waiting for the GPU, which orders them after the
        compute of the blocks whose memory they reuse: the shuttle holds window + 1 blocks, taken from the budget of the model. Windows
        beyond 1 fall back to 1 when their extra blocks exceed PREFETCH_VRAM_SHARE of the VRAM. 0 keeps the shuttle synchronized by the host
        at every block. Windows apply to models whose blocks are pinned or go through the staging ring.
        Hints never block copies; other platforms keep their existing path.
    autoPreload: False by default. With the MMGP VRAM allocator (mmgp.allocator), the models processed block by block (with a budget, async
        transfers, not compiled) keep in VRAM as many of their blocks as the VRAM left by the activations of each workload allows, measured
        during its first cycle; the preload of their budget applies to the workloads not measured yet. True keeps the measures for the
        process, a dictionary keeps them in it (e.g. tied to a model definition, measured again when it changes). See mmgp.auto_preload.
    cudaGraphs: False by default. True or model ids: the blocks of the towers of these models replay CUDA graphs in the scopes their code
        opens (mmgp.cuda_graphs.scope, e.g. around the denoising loop), which removes most of the host work of short steps. A block has a
        graph per location of its weights (kept in VRAM, or each slot of the swapped blocks); its LoRA copies come and go with it as without
        graphs, copied before each replay into buffers that its graphs read.
        See mmgp.cuda_graphs for the contract of a block call.
    cpuCompute: False by default. True, "auto" (the models that declare _mm_cpu_compute_reserve, e.g. language model decoders) or model ids:
        the blocks of the towers of these models that are not kept in VRAM compute their large
        linears on the CPU, in their storage, for short calls (decoding: at most the model's _mm_cpu_compute_max_rows rows, CPU_COMPUTE_MAX_ROWS
        by default) instead of being transferred; longer calls (prompts) stream them as before. A linear computes on the CPU when its quantization
        handler has a CPU kernel for its weight (quant_router.cpu_compute_supported); the rest of each block (norms, small weights) joins the
        model's base, always in VRAM with it. The model may count the rows of a block call itself (_mm_cpu_compute_rows(args, kwargs)). The CPU
        computes the short calls of a row count only when its measured time beats the transfers through the staging ring, which keeps the formats
        whose decoding costs more than their bytes (2-bit or ternary weights) streamed.
    cpuComputeForce: False by default. True: the CPU computes the short calls of the cpuCompute models whatever the measured times (to test
        it; the measured rates still balance the blocks streamed meanwhile). Weights without a CPU kernel keep streaming.
    cpuComputePinning: 0 by default. A share (or model id -> share) of the blocks of the towers of the cpuCompute models pinned to reserved RAM,
        spread evenly: in short calls, as many pinned blocks out of VRAM as end their transfers with the CPU computing the others are streamed
        meanwhile (the CPU does not cross the PCIe link). About half of the blocks out of VRAM is enough on a PCIe 4.0 x16 desktop: "auto" pins
        that, from the VRAM, the size of the model and its _mm_cpu_compute_reserve (bytes its runtime needs beside its weights), nothing when it
        fits in VRAM, and at most CPU_COMPUTE_PINNING_RAM_SHARE of the RAM.
    smartPinning: None by default. Minimum pinning of the models processed block by block (with a budget) that pinnedMemory does not pin:
        with asyncTransfers, 0 copies their blocks ahead through a staging ring of reserved RAM (RING_DEFAULT_BLOCKS of the largest such
        blocks, copied by a background thread, then transferred like pinned blocks), n > 0 also pins 1 block in n of them, spread evenly.
        Reserved RAM is shared in this order: the staging ring if blocks are left unpinned, the models of pinnedMemory in the order of the
        pipe (first their blocks processed at each step, spread evenly if they do not all fit, the ring taking the others, then their blocks
        preloaded in VRAM, then their parameters outside the blocks), then this minimum.
    pinPool: False by default. True or model ids, with asyncTransfers: the blocks these models stream are pinned while they run, into one
        pool of reserved RAM shared by every model of the process, instead of RAM pinned for good for each model. A block enters at its first
        transfer (cpuCompute: when its short calls stream it): the pages its tensors in private RAM fill are locked in place, the rest (tensors
        mapped from a checkpoint file) copied into locked RAM; its transfers then read pinned memory. The pool takes the blocks out of VRAM spread evenly, up to the
        reserved RAM that pinnedMemory and the staging ring leave (perc_reserved_mem_max), while the system keeps POOL_RAM_FLOOR available;
        the running model comes first: the entries of models that do not run leave when it needs their room or the RAM runs short, at quiet
        points only (models loaded or unloaded). The blocks it cannot take cross the staging ring (made as with smartPinning 0). Blocks pinned
        for good (pinnedMemory, smartPinning n) keep their pinning. For cpuCompute models, the pool holds the blocks that the balance of the CPU
        and the PCIe link streams (cpuComputePinning does not apply).
    r¯   c                 ó°   •— t          | t          ¦  «        r7|                      d¦  «        r"t          | d d…         ¦  «        dz  ‰j        z  S | t
          z  S )Nr{  r¾   rz  )r™   rý  r.  r°   r•  rÿ  )r,  rV   s    €r=   Úget_parsed_budgetz%_configure.<locals>.get_parsed_budgetE  sQ   ø€ Ý�a�#ÑÔð 	 1§:¢:¨c¡?¤?ð 	Ý˜˜3˜B˜3œ‘=”= 3Ñ&¨Ô)AÑAÐAà•v‘:Ðr?   r   r   zCvram_safety_coefficient must be a float between 0 and 1 (exclusive)Nc                 ó.   •— i | ]\  }}| ‰|¦  «        “ŒS r—   r—   )rX  r¢   r,  r‹	  s      €r=   r¨  z_configure.<locals>.<dictcomp>R  s+   ø€ ÐUÐUÐU¹5¸1¸q˜aÐ"3Ð"3°AÑ"6Ô"6ÐUÐUÐUr?   rÊ  )r¶  ÚvmmTzbAutomatic VRAM preload needs the MMGP VRAM allocator (mmgp.allocator.install()): the budgets applyFzzAutomatic VRAM preload needs asynchronous transfers (the blocks are kept as they are transferred ahead): the budgets applyÚ_mmgp_ignore_modelsr—   r5  r  c                 ó|   •— i | ]8\  }}t          |t          j        j        ¦  «        ¯$|‰v¯(|t	          |¦  «        “Œ9S r—   ©r™   rN   rO   r7  rô   ©rX  r¢   r£   Úignored_modelss      €r=   r¨  z_configure.<locals>.<dictcomp>t  sp   ø€ ð  Uð  Uð  U©d¨a°ÕYcÐdeÕglÔgoÔgvÑYwÔYwð  UÐ|}ð  FTð  }Tð  }TˆaÕ& qÑ)Ô)ð  }Tð  }Tð  }Tr?   rÀ  rm  c                 ó8   — g | ]\  }}t          |d ¦  «        ¯|‘ŒS )r·  )rH   )rX  rË  rÆ   s      r=   rZ  z_configure.<locals>.<listcomp>š  sb   € ð  Tqð  Tqð  TqÑapÐaiÐkpõ  GNð  OTð  Voñ  Gpô  Gpð  TqÐT\ð  Tqð  Tqð  Tqr?   i'  rk  c              3   ó    •K  — | ]}|‰v V — Œ	d S rd   r—   )rX  rË  Úmodels_to_quantizes     €r=   rc  z_configure.<locals>.<genexpr>ª  s)   øè è € Ð'^Ð'^È8¨Ð4FÐ(FÐ'^Ð'^Ð'^Ð'^Ð'^Ð'^r?   c                 óF   •— ‰�‰                      | ‰‰|¦  «         ‰dz  Šd S r“  )r  )rí  rË  r  Úphase_noÚphase_totals     €€€r=   Úloading_phasez!_configure.<locals>.loading_phase¬  s2   ø€ àÐ'Ð)9×)@Ò)@ÀÈÐR]Ð_gÑ)hÔ)hÐ)hØ�A‰ˆˆˆr?   )Úexpertsc                 óB   •— i | ]\  }}|‰                      |¦  «        “ŒS r—   )Úbanks)rX  rË  rÆ   rš	  s      €r=   r¨  z_configure.<locals>.<dictcomp>²  s+   ø€ ÐYÐYÐY±°xÀ�H˜gŸmšm¨EÑ2Ô2ÐYÐYÐYr?   c                 óR   •— i | ]#\  }}‰|         ¯|‰                      |¦  «        “Œ$S r—   )Úexcluded_names)rX  rË  rÆ   Úexpert_banksrš	  s      €€r=   r¨  z_configure.<locals>.<dictcomp>³  sR   ø€ ð  Bð  Bð  BÁ_ÀXÈuÐjvÐwô  kAð  B˜ 7×#9Ò#9¸%Ñ#@Ô#@ð  Bð  Bð  Br?   c                 ó   •— i | ]	}|‰p|‰v “Œ
S r—   r—   )rX  rË  ÚmodelsToPinÚpinAllModelss     €€r=   r¨  z_configure.<locals>.<dictcomp>µ  s%   ø€ ÐWÐWÐWÀHˆh˜Ð?¨°KÐ(?ÐWÐWÐWr?   c                 ó   — h | ]	\  }}|¯|’Œ
S r—   r—   )rX  rË  Úpins      r=   rÇ  z_configure.<locals>.<setcomp>¶  s!   € ÐNÐNÐN¡} x°È#ÐN˜(ÐNÐNÐNr?   )r%  Ú	PreparingÚ_convertWeightsFloatToÚQuantization)r.   rª   rË  zScanning SizesÚ_model_dtyper   c              3   óT   •K  — | ]"}‰|k    p‰                      |d z   ¦  «        V — Œ#dS ©r¼   Nrù  )rX  r³   r•  s     €r=   rc  z_configure.<locals>.<genexpr>×  s@   øè è € ÐkÐkÐW[˜¨Ò,ÐR°×0FÒ0FÀtÈcÁzÑ0RÔ0RÐkÐkÐkÐkÐkÐkr?   rÌ  c                 ó‚   •— h | ];}‰                      |¦  «                             ¦   «         D ]}t          |¦  «        ’ŒŒ<S r—   )rÅ  rÂ  rÆ  )rX  r³   r,  rˆ  s      €r=   rÇ  z_configure.<locals>.<setcomp>÷  sG   ø€ ÐjÐjÐj ¸m×>YÒ>YÐZ^Ñ>_Ô>_×>gÒ>gÑ>iÔ>iÐjÐj¸•r˜!‘u”uÐjÐjÐjÐjr?   c              3   ó4   K  — | ]}|j         |j        z  V — Œd S rd   )Únum_expertsÚexpert_nbytes)rX  Úbanks     r=   rc  z_configure.<locals>.<genexpr>þ  s.   è è € Ð*}Ð*}ÐUY¨4Ô+;¸dÔ>PÑ+PÐ*}Ð*}Ð*}Ð*}Ð*}Ð*}r?   c                 ót   •— i | ]4}|t          ‰|         d ¦  «        r‰|         j        n|‰v r‰|         n‰“Œ5S )Ú_budget)rH   r±	  )rX  rË  rW  Úmodel_budgetsrŽ  s     €€€r=   r¨  z_configure.<locals>.<dictcomp>  s}   ø€ ð )ð )ð )Øð µw¸vÀhÔ?OÐQZÑ7[Ô7[ð  b˜6 (Ô+Ô3Ð3ð  }Eð  IVð  }Vð  }VÐanÐowÔaxÐaxð  \bð )ð )ð )r?   r¾   rv  z' is too large (rµ  z MB) to fit entirely in rz  z.0fz% of the VRAM (max capacity is z) MB)zBudget (z MB) for Model 'zK' is too important so that this model can fit in the VRAM (max capacity is zFBudget allocation for this model has been consequently reduced to the z% of max GPU Memory (zy MB). This may not leave enough working VRAM and you will probably need to define manually a lower budget for this model.Ú_cuda_graph_towers)rÈ   Ú_offload_base_modulesc                 óF   •‡ — t          j        ˆ fd„‰D ¦   «         ¦  «        S )Nc              3   óT   •K  — | ]"}‰|k    p‰                      |d z   ¦  «        V — Œ#dS rª	  rù  )rX  r@  r³   s     €r=   rc  z/_configure.<locals>.<lambda>.<locals>.<genexpr>8  s>   øè è € Ð+qÐ+qÐ\`¨D°DªLÐ,W¸D¿OºOÈDÐSVÉJÑ<WÔ<WÐ+qÐ+qÐ+qÐ+qÐ+qÐ+qr?   )rd  rÎ  )r³   Úbase_moduless   `€r=   rº  z_configure.<locals>.<lambda>8  s(   øø€ �xœ|Ð+qÐ+qÐ+qÐ+qÐdpÐ+qÑ+qÔ+qÑqÔq€ r?   c              3   ó˜   •K  — | ]D}t          |‰¦  «        s2|j                             ¦   «         D ]}|®t          |‰¦  «        °|V — ŒŒEd S rd   )r™   rð   ry  )rX  r<   ÚchildÚ
containerss      €r=   rc  z_configure.<locals>.<genexpr>=  s�   øè è € ð &Hð &H°ÕYcÐdjÐlvÑYwÔYwð &HØ39´?×3IÒ3IÑ3KÔ3Kð&Hð &HØ*/ÈuÐO`ÕisÐtyð  |Fñ  jGô  jGÐO`ð ',ØO`ÐO`ÐO`ÐO`ÐO`ð&Hð &Hr?   c                 ó¸   •— h | ]V\  }}|d k    ¯t          j        ˆfd„|                     ¦   «         D ¦   «         ¦  «        °=|                     ¦   «         D ]}|’ŒŒWS )r   c              3   ó8   •K  — | ]}t          |‰¦  «        V — Œd S rd   )r™   )rX  rÅ  rº	  s     €r=   rc  z'_configure.<locals>.<setcomp>.<genexpr>?  s]   øè è € ð  e^ð  e^ð  FIÕeoÐpsÐuñ  fAô  fAð  e^ð  e^ð  e^ð  e^ð  e^ð  e^r?   )rd  rÎ  r´  )rX  r<   rY  rÅ  rº	  s       €r=   rÇ  z_configure.<locals>.<setcomp>?  s°   ø€ ð 7ð 7ð 7¡- &¨%ÀeÈaÂiÀiÕX`ÔXdð  e^ð  e^ð  e^ð  e^ð  MS÷  M[ò  M[ñ  M]ô  M]ð  e^ñ  e^ô  e^ñ  Y^ô  Y^ÀiØ%+§^¢^Ñ%5Ô%5ð GPÀiØ!ð ÀiÀiÀiÀir?   c                 ó   — i | ]\  }}||“Œ	S r—   r—   r�  s      r=   r¨  z_configure.<locals>.<dictcomp>B  s   € ÐWÐWÐW©¨¨v˜ ÐWÐWÐWr?   c                 óP   •— g | ]"} ‰|                      d ¦  «        ¦  «        ° |‘Œ#S r`  )rÄ   )rX  r³   Úin_bases     €r=   rZ  z_configure.<locals>.<listcomp>C  s:   ø€ Ð+kÐ+kÐ+k°TÐQXÐQXÐY]×YdÒYdÐehÑYiÔYiÑQjÔQjÐ+k¨DÐ+kÐ+kÐ+kr?   c                 ó6   •— g | ]} ‰‰|         ¦  «        °|‘ŒS r—   r—   )rX  r<   r¿	  Únames_ofs     €€r=   rZ  z_configure.<locals>.<listcomp>C  sk   ø€ ð  ntð  ntð  ntÐyð  Zað  Zað  bjð  kqô  brñ  Zsô  Zsð  ntÐntð  ntð  ntð  ntr?   )ÚBlockGraphszHooks and LoRA Slots)NNNr¾   Fr5	  r¼   c              3   óX   •K  — | ]$}‰|k    s‰                      |d z   ¦  «        ¯ |V — Œ%dS rª	  rù  ©rX  r³   rÎ   s     €r=   rc  z_configure.<locals>.<genexpr>i  sI   øè è € ÐÐ¨¸~ÐQUÒ?UÐ?UÐYg×YrÒYrÐswÐz}Ñs}ÑY~ÔY~Ð?U˜tÐ?UÐ?UÐ?UÐ?UÐÐr?   Ú_hf_hookc              3   óX   •K  — | ]$}‰|k    s‰                      |d z   ¦  «        ¯ |V — Œ%dS rª	  rù  rÄ	  s     €r=   rc  z_configure.<locals>.<genexpr>‰  s]   øè è € ð  Bð  B dÀÐSWÒAWÐAWÐ[i×[tÒ[tÐuyÐ|Ñuñ  \Aô  \AÐAW˜TÐAWÐAWÐAWÐAWð  Bð  Br?   rf	  Ú_offload_hooksz9custom offload hooks can only be set at the of the modulerX   Ú_compile_mer:   Ú_cuda_graph_segments)r$  )r$  r	  ÚFinalizationc                 ó   — g | ]}|d z   ‘ŒS )z.*r—   )rX  r³   s     r=   rZ  z_configure.<locals>.<listcomp>±  s   € Ð.dÐ.dÐ.d¸t¨t°d©{Ð.dÐ.dÐ.dr?   zPytorch compilation of 'z#' is scheduled for these modules : zPytorch compilation of model 'z' is not yet supported.Úinductor)ÚbackendÚmoderÙ   rÛ   r  g      ø?ry  r
  r:  z MB x râ  r»   zSize of submodel 'rè  rÛ  )ÚAutoPreloadc                 óˆ   •— ‰                      |¦  «         ‰j        �|‰j        j        vr|                     ¦   «          d S d S rd   )r�  r´  rã  r†  )r<   re   rË  r4  rV   s       €r=   Úprepare_expertsz#_configure.<locals>.prepare_expertsß  sQ   ø€ Ø×$Ò$ XÑ.Ô.Ð.àÔ Ð(¨H¸DÔ<MÔ<SÐ,SÐ,SØ×!Ò!Ñ#Ô#Ð#Ð#Ð#ð -TÐ,Sr?   c                 ó‚   •— i | ];}|‰j         v¯|t          ‰t          ¦  «        r‰                     |d ¦  «        n‰pd “Œ<S rL  )rÇ  r™   rš   ry   )rX  rË  r‚	  rV   s     €€r=   r¨  z_configure.<locals>.<dictcomp>å  s‘   ø€ ð  Ið  Ið  Ið  HPð  hpð  x|ô  xHð  hHð  hH�8Å:ÐN_ÕaeÑCfÔCfð  CÐ.×2Ò2°8¸QÑ?Ô?Ð?Ðl}ð  mCð  BCð  hHð  hHð  hHr?   c                 ó,   •— t          | |‰‰‰¬¦  «        S )N)r®   rª   r  )r  )r<   r³   r  r®   rª   s     €€€r=   rº  z_configure.<locals>.<lambda>ì  s*   ø€ ­~¸fÀdÐbwð  GSØO_ð0añ 0aô 0a€ r?   c                 óš   •— g | ]G}|                      d d¦  «        d         ‰j        |                      d d¦  «        d                  v¯E|‘ŒHS r'  r’  rö  s     €r=   rZ  z_configure.<locals>.<listcomp>ò  s¤   ø€ ð  _ð  _ð  _ UÈÏÊÐTWÐYZÑH[ÔH[Ð\]ÔH^Ðfjô  gFð  GL÷  GRò  GRð  SVð  XYñ  GZô  GZð  [\ô  G]ô  g^ð  I^ð  I^˜5ð  I^ð  I^ð  I^r?   c                 óJ   •— g | ]}‰                      |¦  «        d          ­|‘Œ S rn  r=  rö  s     €r=   rZ  z_configure.<locals>.<listcomp>ó  s2   ø€ Ð^Ð^Ð^˜e¸$×:KÒ:KÈEÑ:RÔ:RÐSTÔ:UÐ:]�EÐ:]Ð:]Ð:]r?   c              3   ó\   •K  — | ]&}‰|                      d d¦  «        d                  V — Œ'dS rw  r…  )rX  r¡  r�  s     €r=   rc  z_configure.<locals>.<genexpr>ö  sB   øè è € ÐH~ÐH~ÐlqÈÐPU×P[ÒP[Ð\_ÐabÑPcÔPcÐdeÔPfÔIgÐH~ÐH~ÐH~ÐH~ÐH~ÐH~r?   c              3   óZ   •K  — | ]%}‰                      |¦  «        d          d         V — Œ&dS r<  r=  rö  s     €r=   rc  z_configure.<locals>.<genexpr>÷  s;   øè è € Ð!WÐ!WÀU $×"3Ò"3°EÑ":Ô":¸1Ô"=¸aÔ"@Ð!WÐ!WÐ!WÐ!WÐ!WÐ!Wr?   c                 óD   •— g | ]}|                      ‰d z   ¦  «        ¯|‘ŒS rò  rù  ró  s     €r=   rZ  z_configure.<locals>.<listcomp>ù  s3   ø€ ÐdÐdÐd À5×CSÒCSÐT\Ð_bÑTbÑCcÔCcÐd�eÐdÐdÐdr?   )Ú	ram_debug)¬rª   r   Úmodules_datar±   r³   r™   r°   rÑ  rš   r›   ry   r.  r•  rž  r¨  r»   r¶  r·  r  rþ  r�  rµ  r¶  rN   rn	  rS   rH   r-   Úhf_device_mapr5  r¬   r�  rý  rŽ  r�   rž   rÂ   r’  rÇ  r»  rQ	  r  rS	  rî   Úcache_size_limitr´   r¸   r·   rà  rš	  r‚  Úpinned_modelsr®  r%  Úmap_parametersr  r¶  r˜  r�  rÔ  r¿   rÎ  r  r€  r±  rØ  rä  r�  rá  rœ  r,   rö  rU   rþ   rA  rÞ  rø  r	  rÂ  rÆ  rd  ry  rß  r¤  r  rÿ  r   Ú	_registerro   rÕ   rÐ  rO   rÅ   Ú
SequentialÚ
ModuleDictr  ÚCounterr´  r·  rÂ	  r7  r9  rý  ræ  r  r   ró  ÚCOVERING_BUDGET_BLOCKSÚBASE_BLOCKS_OUTSIDE_TOWERSr—  rŸ  r   r*  rY  rÅ  rK  rñ   r$	  r6  r>  rÀ   rÁ   rÃ   rÇ	  rŒ  ÚwraprS  r•  r,	  rï  r[  rå   r	  r	  rÛ  rw	  rX   rÜ  rÄ  rÑ  rê  rL	  rŸ  r‘  r´  rÏ	  Ú	Residencyr¸  r¹  rî  rº  r¹  r³  r¤	  Úafter_pinningr˜  rÇ  r  r­  r�  rV  Ú_mm_cpu_computerÙ	  Úweight_backingr   r‘  Úweight_backing_textr  r  rá  rß  rà  )žrV   ro	  rp	  r  r  rî  rq	  rr	  rƒ  rs	  rt	  ru	  rv	  rw	  rx	  r®   ry	  rz	  r{	  rª   r  r|	  r}	  r~	  r	  r€	  r�	  r‚	  rƒ	  r„	  r…	  Ú
windows_osÚminimum_budgetÚmodel_sizesÚvram_allocatorÚauto_measuresÚauto_modelsÚfixed_modelsÚmodelsToCompileÚcompileAllModelsÚgraphed_modelsÚ
cpu_modelsr·   r™	  Úexpert_exclusionsÚexpert_budgetsr%  Úmodel_convertWeightsFloatToÚcurrent_model_sizeÚmodel_dtypeÚcountedÚcpu_modulesrW  Úignore_dtypeÚon_cpurã  r{  r©  rã  r,   Úcpu_buffersr,  rÓ  Úpreload_floorsÚmodel_budgetÚmodel_minimumVRAMÚ
new_budgetÚcoefÚgraph_towersrË   rÊ   ÚparentsÚshared_modulesÚcompilationInThisOner5  rÂ	  Ú
towers_setr<	  r=	  rÉ   Úprev_blocks_nameÚcur_blocks_namerÔ   Ú
is_mod_seqrÚ  Úin_towerÚany_lorar  r‰  Úmodules_to_be_compiledÚmodules_names_to_be_compiledÚseparate_blocksr³   ÚdepthÚ	cpu_rootsrÏ   Ú
cpu_modulerÐ   rÑ   r«   rÒ   rÓ   r8	  rÒ  Úprevious_nameÚtop_submoduleÚoffload_hooksÚsubmodule_method_namesÚ
compile_meÚsubmodule_method_nameÚsubmodule_methodÚcompile_item_nameÚformated_compiled_namesÚsubmodelrÎ  ré  rÈ  r]  r9  r×  r€  r�  rY  rÏ	  rœ	  r4  rÑ	  r¯  rÞ  Úswapped_entriesÚunpinnedr¡  ré  rè  r!  rÙ	  r5  r·	  rW  rº	  rˆ  rŸ	  rš	  r‹	  r’	  r¿	  r�  r²	  rË  rŽ  r¡	  r•	  r•  rÁ	  r—	  r˜	  r¢	  rÎ   sž   `              `   ``      `                                                                                                             @@@@@@@@@@@@@@@@@@@@@r=   rk	  rk	  ø  sá"  øøøøøøøøøøøøøøøøøøøøøøøøøø€ ðJ %€DÔØ ,…LÔØ€DÔà€Må”'˜T’/€Jðð ð ð ð õ Ð-­uÑ5Ô5ð `Ð9PÐTUÒ9UÐ9UÐYpÐtuÒYuÐYuÝÐ^Ñ_Ô_Ð_à€FØˆ?Ý�g¥Ñ%Ô%ð 	0ØUÐUÐUÐUÀGÇMÂMÁOÄOÐUÑUÔUˆMØ"×&Ò& s¨AÑ.Ô.ˆFˆFà&Ð& wÑ/Ô/ˆFÝÐ*Ð*¨=Ñ9Ô9Ð;RÐUYÔUmÑ;mÑnÔn€NØ€Kà)€DÔØ)€DÔØ-Ð-Ð-Ð-Ð-Ð-Ø .Ô 5¸Ò >€DÔÝ#-¨k½4Ñ#@Ô#@ÐJ�K�KÀd€MØ Ð%ÐB¨¸dÐ)B€KØð L�~Ô,°Ò5Ð5ÝÐrÑsÔsÐsØˆˆØ	ð L˜^ð LÝð  Kñ  	Lô  	Lð  	LÝ"& {Ñ"3Ô"3Ð"F¸€DÔàÔ4Ði¸Ô8MÐQVÒ8VÐ8iÐ[i€DÔØ " B�€Kõ 
Ô˜TÑ"Ô"Ð"åÐ4Ð6KÈRÑPÔP€NÝÐ&¨Ñ5Ô5ð Då05´¸VÑ0DÔ0DÐÔ-Ø!8Ô!CÐð Uð  Uð  Uð  UÐ6M×6SÒ6SÑ6UÔ6Uð  Uñ  Uô  U€Fõ *¨,Ñ7Ô7€Là�tÒÐØ)ˆÔØ�‚}€}� E­3Ñ/Ô/€}Ø�ˆØ€D„Kà6KÐ6WÐ2Ð2Ð]_ÐÝÐ+­TÑ2Ô2ð 7Ø 5Ð6ÐØð 4Ø×$Ò$ ]Ñ3Ô3Ð3Ø.Ðà€KØ€LÝ�,¥Ñ%Ô%ð %Ø#ˆˆÝ	�L¥$Ñ	'Ô	'ð %Ø"ˆˆà#�nˆà€OØÐÝ�'�4Ñ Ô ð $Ø"ÐÐÝ	�G�TÑ	"Ô	"ð $Ø!ˆˆà"˜)ˆà-ÐGµ°_Ñ1EÔ1EÀaÒ1G€DÔÝ% jµ$Ñ7Ô7Ðy�R�RÍ:ÐV`ÕbfÑKgÔKgÐ=y¸Z¸ZÐnxÐmy€NØ!+¨tÐ!3Ð!3•�f‘”�À:ð :S¸¸ð  uð  CIò  uIð  uIð  Tqð  TqÐtz÷  uAò  uAñ  uCô  uCð  Tqñ  Tqô  Tqð  TqÝ$.¨z½4Ñ$@Ô$@ÐR�j�jÀzÀlð à!(ð  ]°ð  ]�r�rÐT[Ð_cÐTcÐTcÅDÈÁLÄLÀLÕt~ð  @Gõ  IMñ  uNô  uNð  j]ÐipÐipð  U\ð  T]€DÔØ-€DÔØÔð 6ÝŒ×ÒÑÔÐØ05�ŒÔÔ-õ 7Ð7LÑMÔMÐÝ9SÐTiÑ9jÔ9jÐjÐ˜DÔ6à€HØ•c˜&‘k”k‘/¥CÐ'^Ð'^Ð'^Ð'^ÐW]Ð'^Ñ'^Ô'^Ñ$^Ô$^Ñ^€Kðð ð ð ð ð ð ð
 ÐÐÐÐÐØYÐYÐYÐYÈ&Ï,Ê,É.Ì.ÐYÑYÔY€Lð Bð  Bð  Bð  Bð  BÐX^×XdÒXdÑXfÔXfð  Bñ  Bô  BÐØ€NØWÐWÐWÐWÐWÐPVÐWÑWÔW€FØNÐN¸¿º¹¼ÐNÑNÔNÕQTÐUYÔUeÑQfÔQfÑf€DÔØð ØˆˆØ	Ô	ð ˜lÐ2ØˆØ".Ð"6˜$˜$Ð=RÐT`Ð<a€DÔð ÐÐÐÐÐØ
×Ò˜&Ð"7¸Ô9JÑKÔKÐKØð ?3ñ ?3ˆØÐ'Ð)9×)EÒ)EÑ)GÔ)GÐ)GØ)/°Ô)9ˆØˆ�k 8Ñ,Ô,Ð,Ý&-¨mÐ=UÐWlÑ&mÔ&mÐ#å�ÑÔ×#Ò#Ñ%Ô%Ð%ð Ð)Ð)Ð)ØˆM˜.¨(Ñ3Ô3Ð3Ý�mÐ-=ÈdÔN_ÐjrÐsÑsÔsÐsàˆÐ&¨Ñ1Ô1Ð1àÐÝ˜m¨^¸TÑBÔBˆõ ‘%”%ˆÝ" =Ñ1Ô1ˆØ+×9Ò9Ñ;Ô;ð 	[ñ 	[‰NˆK˜Ý" 1 mÑ4Ô4ˆLÝÐkÐkÐkÐkÐ_jÐkÑkÔkÑkÔkˆFØ×*Ò*°UÐ*Ñ;Ô;ð [ñ [‘��1Ø"'�”Ý˜a‘=”=ð ØÝ7¸Ñ:Ô:�Øð [Ý)¨!Ñ,Ô,�CØ 'Ð)Ð)°&Ð)ØŸš CÑ(Ô(Ð(Ø*Õ.@ÀÑ.MÔ.MÑMÐ*Ø#˜à'ð 8Ø !¤¤˜Ø6¸$Ò>Ð>À5ÍEÌMÒCYÐCYàCNÐRVÒCVÐCVÐ$?Ð$?Ð\g˜EØ$­¬Ò5Ð5Ø)*¬¯ª°5Ñ)9Ô)9 ¤Ø&Ð.Ø*/˜K˜Kà*¨eÒ3Ð3Ø $Ø#.°%Ò#7Ð#7Ð#7Ð#7Ø—z’z‘|”|¨7Ð2Ð2¸6Ð2ØŸš A§J¢J¡L¤LÑ1Ô1Ð1Ø*­u¬{¸1¼6Ñ/BÔ/BÀQÄV×EXÒEXÑEZÔEZÑ/ZÑZÐ*ùñ7[ð8 ÐØ9TÐ9`Ð5Ð5ÕfkÔftˆKØ*ˆÔØjÐjÐjÐj¨ÐjÑjÔjˆØ×&Ò&Ñ(Ô(ð 	Sð 	SˆAå�!‰uŒu˜KÐ'Ð'Ø"¥u¤{°1´6Ñ':Ô':¸Q¼V×=PÒ=PÑ=RÔ=RÑ'RÑRÐ"øð 	�hœlÐ*}Ð*}Ð]iÐjrÔ]s×]zÒ]zÑ]|Ô]|Ð*}Ñ*}Ô*}Ñ}Ô}Ñ}ÐØ 2ˆ�HÑÑð)ð )ð )ð )ð )ð )Ø!'ð)ñ )ô )€Iå$¥T¨&¡\¤\°;À	È>Ð[_Ô[mÐo~ÑÔ€NØð #/ñ #/ˆØ(¨Ô2ÐØ% hÔ/ˆØ˜$ÒÐØ "ÐÝ˜+¥tÑ,Ô,ð CØ˜{Ð*Ð*Ø(9Ð(9¸+ÀhÔ:OÑ(PÔ(PÐ%Ð%Ø˜HÐ3Ð3Ð3Ð3¨Ð3Ð3Ð3Ð3Ð3Ø(9Ð(9¸+ÀcÔ:JÑ(KÔ(KÐ%øà$5Ð$5°kÑ$BÔ$BÐ!à  1Ò$Ð$Ø!Ô5Ð9JÑJ�
Ø",°¢/ /˜Q˜Q°z�
Ø.:¸aÒ.?Ð.?À:ÐP\ÒC\ÐC\ 
 
Ðbn�Ø3AÐ#H < <Àqˆ�xÑ Ø%ˆØ%&ˆÔ˜Ñ"Ø˜1ÒÐÐ!3°|Ò!CÐ!Cõ ˜|¨T°DÔ4LÑ-LÑMÔMˆLÝ),¨Q°Ð?QÑ0QÑ)RÔ)RˆDÔ˜XÑ&Ø  tÔ'?Ñ ?Ò?Ð?ÀLÐTUÒDUÐDUÐYeÐhlÐosô  pHñ  iHò  ZHð  ZHØ˜qÒ Ð Ø 1Ò$Ð$Ýð  X Hð  Xð  XÐ>PÕQWÑ>Wð  Xð  Xð  XÐvzð  ~Añ  wAð  Xð  Xð  Xð  fjð  mqô  mEñ  fEõ  FLñ  fLð  Xð  Xð  Xð  Xñ  Yô  Yð  Yð  Yåð  K \µ&Ñ%8ð  Kð  Kð  KÈxð  Kð  Kð  eiô  e}õ  ~Dñ  eDð  Kð  Kð  Kñ  Lô  Lð  LÝð  kÐ_cÐfiÑ_ið  kð  kð  kð  EIð  LPô  Ldñ  Edõ  ekñ  Ekð  kð  kð  kð  kñ  lô  lð  lØ# dÔ&>Ñ>�ð #/ˆ�hÑÑåÔ�d˜FÑ#Ô#Ð#ð ð U"ñ U"ˆØÐ'Ð)9×)EÒ)EÑ)GÔ)GÐ)GØ)/°Ô)9ˆØ%+ˆÔ#àKUÐY]ÐK]ÐK]ÐaiÐm{Ða{Ða{•w˜}Ð.BÀBÑGÔGÐGð  BDˆÝ':¸=ÐWcÐ'dÑ'dÔ'dÑ$ˆ�nõ �W ]Ð4KÈRÑPÔPÑQÔQˆØqÐqÐqÐqˆõ ”hÔ)­5¬8Ô+>ÅÄÔ@SÐTˆ
ÝÔ%ð &Hð &Hð &Hð &H¸-×:OÒ:OÑ:QÔ:Qð &Hñ &Hô &Hñ Hô Hˆð7ð 7ð 7ð 7°7·=²=±?´?ð 7ñ 7ô 7ˆàð 	tØWÐW¸×9TÒ9TÑ9VÔ9VÐWÑWÔWˆHØ+kÐ+kÐ+kÐ+k¸\Ð+kÑ+kÔ+kð  ntð  ntð  ntð  ntð  ntð  DRð  ntñ  ntô  nt˜.ˆLØ/ÐN°8¸Ð3NÐØˆØ˜$ÐÐ (¨nÐ"<Ð"<À.Ð"<Ø0Ð0Ð0Ð0Ð0Ð0Ø2=°+¸hÍ	ÔHYÐZ^ÔZqð  tAñ  IBô  IBõ  DMô  DUð  VZô  Vpð  rñ  D@ô  D@Ý>GÔ>OÐPTÔPgÐivÑ>wÔ>wõ  zCô  zKð  LPô  L]ð  _gñ  zhô  zhÝ>GÔ>OÐPTÔPbÐdqÑ>rÔ>rñ3tô 3tð tˆF�TÔ% hÑ/õ ˜^Ñ,Ô,ˆJàˆÐ,¨hÑ7Ô7Ð7Ø& xÔ0ˆØ ;¨xÔ#8Ð<Ð<Ò<Ð<¸1Ò<Ð<Ð<Ð<ˆØð 	˜<ð 	Õ/Eð 	ØˆNØZuÑWÐÐ+¨_¸^ÈZõ 3MÐT�3˜~Ñ.Ô.Ð.ÐRTÐV[�ˆØ'+ˆÔ˜8Ñ$Ø˜D’LÐ6 X°Ð%6ˆØð 	IØ68¸"Ð3ÐØ.>ˆMÔ+Ø3HˆMÔ0Ø?AÀ2Ð <Ðà[iÐlmÒ[mÐ[m�%¥¨Ð7QÐSUÑ VÔ VÑWÔWÐWÐsuˆõ # =Ñ1Ô1ˆØð 	_ð 	_ˆDÝ˜q $§*¢*¨S¡/¤/°AÑ"5Ñ6Ô6ð _ð _�ØX^�×+Ò+¨D¯KªK¸¸UÑ,CÔ,CÀAÔ,FÑGÔGÔUÐUð_à+3°zÐ+AÐ+AÀnÐWXÒFXÐFX•C˜Ñ'Ô'Ð'Õ^aÑ^cÔ^cˆ	Ø)6×)DÒ)DÑ)FÔ)Fð C	oñ C	oÑ%ˆN˜IØÐ!2×!6Ò!6°xÀÑ!DÔ!DÐDÐDØÝÐÐÐÐ°ÐÑÔð  BFñ  Gô  GˆJØÐ%Ø! ZÒ/Ð/Ø×(Ò(¨Ñ3Ô3Ð3Øõ ˜9 jÑ1Ô1ð 9Ý˜	 :­v©x¬xÑ8Ô8Ð8Ø Ò!Ñ!¥c¨.Ñ&9Ô&9¸AÒ&=Ñ&=Ø$¨Ò,Ð,Ø%×0Ò0Ð1BÑCÔCð FØ'8×'>Ò'>¸sÑ'CÔ'C˜Ø%3×%9Ò%9¸#Ñ%>Ô%>˜
Ø",­S°Ñ->Ô->¸qÑ-@Ô"A˜Ý$9¸%Ñ$@Ô$@™	˜˜cØ .Ò0Ð0¸*Ð0ÈÐYZÒIZÐIZØ/>Ð,Ø9JÍSÐQTÉXÌXÑ9UÐW`ÐdjÐWj¨X˜Oà),˜˜ð kFÑgÐ)Ð+;¸_È^Ð]gà$¨Ò,Ð,Ý 5°nÑ EÔ E‘I�C˜#Ý! )­e¬hÔ.AÅ5Ä8ÔCVÐ-WÑXÔXð XØZ]Ð`cÑZcÐeiÐkmÕoyð  {Dõ  FKô  FNô  FYñ  pZô  pZð  [ZÑWÐ)Ð+;¸^ÈZÈZØ˜qš˜ØZ]Ð_cÐehÐjoÐZoÑWÐ)Ð+;¸^ÈZØ4BÀIÐQWÐDW¨˜åð  Bð  Bð  Bð  B¨oð  Bñ  Bô  Bð  DHñ  Iô  IˆHØ=EÐ=Q¨(°DÐ)9Ð)9Ðgpð  uCð  hCð  hCð  GSð  hCð  X_ð  X_ð  `nñ  Xoô  Xoð  hCØð hCØ-Ð9À(Ð9ð XdÐWcØQ`ÐbrÐPsñ 'ˆK˜å × 4Ò 4°SÑ 9Ô 9Ñ:Ô:¸AÒ=ˆMÝ8?À	ÐK[Ñ8\Ô8\Ðd˜IÔ4Ð4ÐbdˆMØ Ðx¥C¨Ñ$6Ô$6¸!Ò$;Ð$;Ð$;Ð=xÑ$;Ô$;Ð;Ø&/ [°MÑ%AÐ"Ý  ¨M¸4Ñ@Ô@ˆJØ)?ð oñ oÐ%Ý˜yÐ*?ÑAÔAÐKÀ8Ø(¨IÒ5Ð5¸(Ð5ÅwÈyÐYaÑGbÔGbÐ5Ø'+§~¢~°iÀÐPXÐZjð  mBð  DRñ  (Sô  (SÐ$Ð$å'.¨yÐ:OÑ'PÔ'PÐ$ØÐ%Ð*?À9Ò*LÐ*LÐQZÐ^hÐQhÐQhÕqxð  zCð  E[ð  ]bñ  rcô  rcÐQhØ'-§{¢{°9Ð>NÑ'OÔ'OÐ$ÝÐ,Ñ-Ô-ñ oØ$ð ¨Ð)<ÀÐ)<ÍcÐR[ÔRgÑNhÔNhÐ)<ØØ$ð L¨Ð)<ÀhÐ)<ÕSVÐW`ÔWlÑSmÔSmÐ)<Ø×/Ò/°	¸=È(ÐTbÐdtð  wLñ  Mô  Mð  Mð  MØ-ð 	L°)¸~Ð2MÐ2MÐV`ÐdiÒViÐViÐmwÐ{ÒmÐmØ×@Ò@ÀÈHÐVaÐm{Ð@Ñ}Ô}Ð}ØWeÐfhÔWi×WqÒWqÑWsÔWsð  ,H¨3¯8ª8°N×4HÒ4HÈÑ4MÔ4MÈcÈrÈcÔ4RÑ+SÔ+SÐ+Sð  zHÐ)Ø,Ð4PÐPÐPÐRn×RuÒRuð  wHñ  SIô  SIð  SIØ.×5Ò5°iÑ@Ô@Ð@Ð@à/ð LØ ×CÒCÀIÈ}Ð^fÐhsð  vFð  R`ÐCñ  bô  bð  bð  bà ×KÒKÈIÐWdÐfnÐp{ð  ~Nð  Zhð  u~ð  BKð  uKÐKñ  Lô  Lð  Là×-Ò-¨h¸ÀYÐP]Ð_mÑnÔnÐnùñ1oð6 	ˆ�n hÑ/Ô/Ð/àð 		lØÔ  !Ò#Ð#ÝÐ3Ñ4Ô4°QÒ6Ð6Ø.dÐ.dÐGcÐ.dÑ.dÔ.dÐ+ÝÐ|°XÐ|Ð|ÐbyÐ|Ð|Ð|Ñ}Ô}Ð}Ð}åÐ\¸8Ð\Ð\Ð\Ñ]Ô]Ð]à2ð lð l�Ý"'¤-°Ô0@ÈJÐ^jÐ"kÑ"kÔ"k�Ô Ð ð ð 	3Ø×(Ò(¨Ñ2Ô2Ð2Øð 	@Ö2ð 	@Ø×'Ò'¨°,Ñ?Ô?Ð?Øð 	<Ø×#Ò# H¨lÑ;Ô;Ð;Ø×Ò˜X ~°|ÀVÑLÔLÐLØÔð 	\ .°1Ò"4Ð"4¸Ð"4È$ÔJ^Ð"4Ðg{Ð"4Ø Ô7ÐIˆ[ˆ[¸\×QÒQÐRZÑ[Ô[Ð[Ø!ˆÔÑð Ô˜1ÒÑàˆØÔ3×9Ò9Ñ;Ô;ð 	7ð 	7‰GˆAˆtØ36¸!°8°8Õ,¨QÑ/Ô/Ð/À!ÀRÀ‰HˆC�Ø"(Ð2�F˜2”J�J¨dˆEØÐ  S¨A¢X X°%¸´(¸c²/°/ÀcÈUÐSTÌXÐXYÉ\ÒFYÐFYÕ^aÐ^rÐchÐijÔckÐ^rÐmqÐ^rÐ^rÐ^rÐvyÕ|ð  }Qð  BGð  HIô  BJð  }Qð  LPð  }Qð  }Qð  }Qñ  wQò  _Qð  _QØ��a‘Ø�a”—’ Ñ%Ô%Ð%Ð%à—’˜s C¨¨t¨fÐ5Ñ6Ô6Ð6Ð6Ø'-ð 	fð 	fÑ#ˆC�˜˜eÝ˜u™:œ:¥fÑ,Ð2Ð2µs¸5±z´zÅ&Ñ7HÐ4NÐ4N�ˆCÝZ]Ð^cÑZdÔZdÐghÒZhÐZhÐV  t¢ ˜˜°°s±¸TÑ1AÐVÐVÍÈUÉÌÐVÐVÐVÐVÐnpˆEÝð  e¨e°aªi¨i s s¸SÅ3ÀuÁ:Ä:Ñ=MÐW\Ð`dÒWdÐWdÐQSÐQSÐjtÐnrÐjtÐjtÑ=uð  eð  eõ  {Cô  {Gð  HMñ  {Nô  {Nõ  OUñ  {Uð  eð  eð  eð  ^cð  eð  eñ  fô  fð  fð  fð ð f�lð fØ-Ð-Ð-Ð-Ð-Ð-Ø'˜K¨¨k¸<ÈÐXdÑeÔeˆÔØ'×-Ò-Ñ/Ô/ð 
cð 
c‰ˆ�%Øð 	ØØ×%Ò% d¨H°e¸^ÈHÔ=UÐWbÑcÔcˆ	Ø*3ˆÔ˜hÑ'Ø3;Àyð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð
 	Ô× Ò  ¤¨XÔ!6×!PÒ!PÐQ`Ñ!aÔ!aÑbÔbÐbÐbð Ið  Ið  Ið  Ið  Ið  TXô  Tdð  Iñ  Iô  I€KØ&×,Ò,Ñ.Ô.ð Fð F‰ˆ�%Ø�FŠ?ˆ?Ø$(×$;Ò$;¸HÑ$EÔ$EˆK˜Ñ!øØ×Ò�V˜\¨>¸>ÐK`Ðbwð  zFð  HXð  Zeñ  fô  fð  fØð bØ#'Ô#8×#>Ò#>Ñ#@Ô#@ð 	bð 	bÑˆH�iØ�MŠMð að að að að að añ bô bð bð bàÔÐ$ØÔ×'Ò'Ñ)Ô)Ð)Øð ~ð _ð  _ð  _ð  _¨dÔ.Dð  _ñ  _ô  _ˆØ^Ð^Ð^Ð^ Ð^Ñ^Ô^ˆØð 	~Ø×ÒÑ Ô Ð Ð ØŒYÐ <Ð#7½H¼LÐH~ÐH~ÐH~ÐH~Ðu}ÐH~ÑH~ÔH~Ñ<~Ô<~Ð#7Ø×Ò�cÐ!WÐ!WÐ!WÐ!WÈhÐ!WÑ!WÔ!WÑWÔWÐYnÐp|Ñ}Ô}Ð}ØÔ$ð #ð #ˆØdÐdÐdÐd¨Ô)?ÐdÑdÔdð 	#ð 	#ˆEØ�OŠO˜EÑ"Ô"Ð"Ð"ð	#àÔ$×+Ò+Ñ-Ô-ð Mð MˆØ%-ð 	Mð 	MÑ!ˆF�D˜!˜Q ØHLÐLˆAÔ¥¨°Ñ 5Ô 5Ô EÐ Eð	Mà�qÒÐØ(Ð(Ð(Ð(Ð(Ð(Ø'×6Ò6°t´{ÑCÔC×IÒIÑKÔKð 	Fð 	F‰NˆH�dÞŒJ�y×4Ò4°X¸tÑDÔDÑEÔEÐEÐEØÐ#Ð%5×%<Ò%<¸^È[ÐZeÐgiÑ%jÔ%jÐ%jÝ	Ô˜VÑ$Ô$Ð$Ý	„J×ÒÑÔÐÞ„J�L„L€Là€Kr?   Ú
profile_noc           	      óŒ  ‡— dt          |¦  «        › dt          j        |¦  «        › dt          › d�}t	          j        d|d›d�¦  «         t          |¦  «        }| }t          |dd	¦  «        Št          |d
¦  «        r|j	        }ˆfd„| 
                    ¦   «         D ¦   «         }d„ | 
                    ¦   «         D ¦   «         }g }d}d}	d}
|                     d¦  «        }|	D ]D}|�|                     ¦   «          ||v r(||         }|
D ]}||v r|                     |¦  «          nŒŒEi }d|v rd|d<   d}d}d}|t          j        k    r
d}|}d|d<   n–|t          j        k    rd}d|d<   n~|t          j        k    rd}d|d<   nf|t          j        k    r
d}|}d|d<   nL|t          j        k    r
d}|}d|d<   n2|t          j        k    rd}|}d|d<   d|v rd|d<   nt)          d¦  «        ‚d}|dk    rt+          |¦  «        dk    rd}d}||||||dœ}d|v |d<   |t          j        t          j        fv rd|d<   |t          j        k    rI|                     dd ¬!¦  «         t.          D ]*}||v r$t          ||         d"d¦  «        €d||         _        Œ+|d#k    rm|d$t          j        |¦  «        › d%�z   }| 
                    ¦   «         D ]=\  }}||v r||z   d&|› d'||         › d(||         › d)�z   }Œ(||z   d&|› d'||         › d)�z   }Œ>| 
                    ¦   «         D ]\  }}||         ||<   Œ|rt3          |¦  «         t5          | fd*|i|¤ŽS )+aÂ  Apply a configuration profile that depends on your hardware:
    pipe_or_dict_of_modules : the pipeline object or a dictionary of modules of the model
    profile_name : num of the profile:
        AutoRAM_AutoVRAM (=0): profile 4 without RAM pinned for good: the parts of the models streamed at each step are pinned while
            their model runs, into reserved RAM shared by all the models (pinPool), and language model decoders compute the layers left
            in RAM on the CPU when it is faster (cpuCompute "auto"). Add autoPreload=True for the automatic VRAM preload
        HighRAM_HighVRAM (=1): profile 2 with automatic VRAM preload. All models kept in reserved RAM; keep as many blocks as fit
            beside the measured workload in VRAM, streaming the rest
        HighRAM_LowVRAM (=2): all models kept in reserved RAM, sent to the GPU part by part. Runs models larger than the VRAM, leaves VRAM
            for long videos or large images and switches models fast, needs a lot of RAM
        LowRAM_HighVRAM (=3): profile 4 with automatic VRAM preload. Only the main model ('transformer') kept in reserved RAM;
            keep as many blocks as fit beside the measured workload in VRAM, streaming the rest
        LowRAM_LowVRAM (=4): only the main model ('transformer') kept in reserved RAM, sent to the GPU part by part. The most versatile:
            runs models larger than the VRAM and leaves VRAM for long videos or large images
        VerylowRAM_LowVRAM (=5): no reserved RAM (only a small staging ring with smartPinning), all models sent to the GPU part by
            part. For PCs short of RAM and VRAM, slower with short steps such as images
        Every profile quantizes the main model to 8 bits by default
    overrideKwargs: every parameter accepted by Offload.All can be added here to override the profile choice
        For instance set quantizeTransformer = False to disable transformer quantization which is by default in every profile
    z Applying MMGP Memory Profile z - z (vz) z	[1m[95mz*^100z[0mrŽ	  r—   r5  c                 ó|   •— i | ]8\  }}t          |t          j        j        ¦  «        ¯$|‰v¯(|t	          |¦  «        “Œ9S r—   r�	  r‘	  s      €r=   r¨  zprofile.<locals>.<dictcomp>.  so   ø€ ð  Fð  Fð  F©t¨q°!Í*ÐUVÕX]ÔX`ÔXgÑJhÔJhð  FÐmnð  wEð  nEð  nEˆqÕ'¨Ñ*Ô*ð  nEð  nEð  nEr?   c                 ó4   — i | ]\  }}|t          |¦  «        “ŒS r—   )r§   r¢  s      r=   r¨  zprofile.<locals>.<dictcomp>/  s'   € ÐHÐHÐH©t¨q°!�AÕ'¨Ñ*Ô*ÐHÐHÐHr?   TrŒ  )Út5ÚllamaÚllmr  NrÀ  i°  Fi¸  rÊ  i�  zUnknown profiler»   r   r¤  )rp	  rr	  rs	  rv	  rq	  r|	  rs	  r€	  r~	  rm  )rƒ	  r�	  rq  rÙ   z	Profile 'z' sets the following options:z- 'z':  'z' overriden with value 'r£  rª   )rõ  r   Útostrr   r   r‘  r¬   rS   rH   r5  r›   ry   r  rž   ÚAutoRAM_AutoVRAMÚHighRAM_HighVRAMÚHighRAM_LowVRAMÚLowRAM_HighVRAMÚLowRAM_LowVRAMÚVerylowRAM_LowVRAMrã   rÂ   r
  ry  rq  rþ  re  )ro	  r!
  rª   ÚoverrideKwargsÚmessager´  rC  Údefault_extraModelsToQuantizerq	  Úmodels_to_scanÚcandidates_to_quantizer  rË  r³   rf  rs	  rr	  rv	  r|	  rp	  r5  r¨  rf   r¢   r£   r’	  s                            @r=   Úprofiler4
    sž  ø€ ð, v­s°:©¬ÐuÐuÅ<ÔCUÐV`ÑCaÔCaÐuÐuÕfqÐuÐuÐu€GÝ„JÐ7 Ð7Ð7Ð7Ð7Ñ8Ô8Ð8å)¨,Ñ7Ô7€Là%€GÝ˜WÐ&;¸RÑ@Ô@€Nåˆw˜Ñ%Ô%ð $ØÔ#ˆð Fð  Fð  Fð  F°w·}²}±´ð  Fñ  Fô  F€GØHÐH°w·}²}±´ÐHÑHÔH€Là$&Ð!ØÐà7€NØ3ÐØ%×)Ò)Ð*<Ñ=Ô=ÐØ#ð ð ˆØÐ'Ð)9×)EÒ)EÑ)GÔ)GÐ)GØ�|Ð#Ð#Ø Ô)ˆDØ3ð ð �	Ø Ð$Ð$Ø1×8Ò8¸ÑBÔBÐBØ�Eð %øð €GØ˜ÐÐØ!%ˆ�Ñà ÐØ€NØ€Nà•\Ô2Ò2Ð2ØˆØ =ÐØˆ�‰ˆØ	•|Ô4Ò	4Ð	4ØˆØˆ�‰ˆà	•|Ô3Ò	3Ð	3ØˆØˆ�‰ˆà	•|Ô3Ò	3Ð	3Ø#ˆØ =ÐØˆ�‰ˆà	•|Ô2Ò	2Ð	2Ø#ˆØ =ÐØˆ�‰ˆà	•|Ô6Ò	6Ð	6ØˆØ =ÐØˆ�‰Ø˜GÐ#Ð#Ø%(ˆG�MÑ"øõ Ð)Ñ*Ô*Ð*à
€DØ�$‚€�3˜w™<œ<¨1Ò,Ð,Øˆà€DØ+ÐH]Ðjqð  GUð  nAð  Ucð  eð  e€FØ(¨NÐ:€FÐÑØ•lÔ3µ\Ô5QÐRÐRÐRØ $ˆˆ}ÑØ•\Ô2Ò2Ð2Ø�Š˜d¨vˆÑ6Ô6Ð6õ
 3ð 	:ð 	:ˆHØ˜7Ð"Ð"¥w¨w°xÔ/@ÐBSÐUYÑ'ZÔ'ZÐ'bØ49�˜Ô!Ô1øà�Q‚€ØÐ`¥<Ô#5°jÑ#AÔ#AÐ`Ð`Ð`Ñ`ˆØ—<’<‘>”>ð 	@ð 	@‰CˆAˆaØ�NÐ"Ð"Ø˜d‘{Ð%j¨1Ð%jÐ%j°6¸!´9Ð%jÐ%jÐVdÐefÔVgÐ%jÐ%jÐ%jÑj��à˜d‘{Ð%?¨1Ð%?Ð%?°6¸!´9Ð%?Ð%?Ð%?Ñ?��à×#Ò#Ñ%Ô%ð &ð &‰ˆˆ!Ø" 1Ô%ˆˆq‰	ˆ	àð Ýˆd‰ŒˆåÐ&ÐNÐN°|ÐNÀvÐNÐNÐNr?   rL  )r¹   r—   rd   )Tr]  râ  rY   )	NTFFFr¾   NNr¾   )rj  )NFTrf	  (  rN   rß  r>  r  r‹   r7  rî  r±   r�  ró  r  rd  r¤  rý  rd  r3  Ú
contextlibr   Úcontextvarsr   Úconcurrent.futuresr   r,  r  r¿  rX  r  r¸  r   r   r
   ÚtypesÚmmgpr   r   r   Ú
read_aheadr   r   r   r   r   r   rä  r   r   r   r   r   r   r   r   r   r=  r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   rO   r¹  r*   rl   Útransformers.modeling_utilsÚmodeling_utilsÚmuÚget_parameter_devicerj   rq   ÚModuleUtilsMixinr-   Úfgetrs   rt   Úpropertyrx   r}   r€   Úmmmr©   rÿ  rø  rÜ  r…  Úint8Ú
sizeofint8r÷  rŒ  r  rö  rí  r�  rð  r¶   rƒ   rœ   r§   r¬   r´   r¸   rÕ   rì   rô   r  rò  r  r  rN  rt  r}  r‚  rv  r�  rY  r�  r‘  r”  r–  r™  r¤  r«  rH   r¬  r­  r±  r¶  rÔ  rØ  rÛ  rá  rä  ÚBIG_TENSOR_MAX_SIZEr  r?  Úndarrayr  r  r  r  r  rÝ  r(  rb  rc  rD  rû  r  r!  r'  r*  r4  r-  r¸  r¶  r“  rå  r¸  r¡  r­  r¬  r‘  r“  r�  rÄ  rÎ  rä	  rã	  r;	  ro  ru  r{  r}  rã   r˜  r¨  rž  rœ  r±  r¿  rØ  rÏ  rß  ræ  ré  rë  r4  r  r�  rx  ry  r³   Ú	Structurer  ÚWinDLLÚVirtualQueryr1  r#  ÚPOINTERr&  ÚargtypesÚrestypeÚVirtualUnlockr+  r   r)  rJ  rL  Ú
namedtuplerT  rV  rÞ  r¸  r½  rÃ  rÕ  rö  r  r#  rÃ   r:  r>  rE  r7  rý  rH  rš   rZ  ro  rs  r�  rM  rO  rV  rû  r]  r  rh  r§  rÞ  rÉ  rÍ  rÕ  r›  r0  r8  r<  r>  rQ  rT  rV  rZ  r\  r^  rl  rm  rs  ru  r{  r€  rˆ  rÏ  rŠ  rU	  rú  r]	  r‹  rû  re  rk	  r	  r.
  r4
  r—   r?   r=   ú<module>rO
     s«  ððj €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø "Ð "Ð "Ð "Ð "Ð "Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ *Ð *Ð *Ð *Ð *Ð *Ð *Ð *ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  Pð  PàÐ�%”(Ô$Ñ%Ô%ðGð Gð Gð Gð G�˜uœxÔ1ñ Gô Gñ &Ô%ðGð0	1ð 	1ð 	1ð
	Ø,Ð,Ð,Ð,Ð,Ð,Ø!#Ô!8Ðð5ð 5ð 5ð
 <€BÔÐøð	Ø€Døøøð
	Ø,Ð,Ð,Ð,Ð,Ð,ØÔ&Ô-Ô2€Lð"ð "ð "ð
 "* ¨'Ñ!2Ô!2€BÔÔÐøð	Ø€Døøøð €ð	ð 	ð 	ðð ð ð Ô€àÐ à
€Ø”.Ô)€ØŒZÔ €
ØÐ ØÐ Ø#�Y”^Ñ%Ô%Ð ØÐ à&�Ô&Ñ(Ô(Ô.€ð:ð :ð :ð :ð :ñ :ô :ð :ð*Eð Eð Eð ð  ð  ðð ð ð!ð !ð !ð !ð"ð "ð "ð "ð/(ð /(ð /(ð /(ðfð ð ð4ð ð ðð ð ð ð0dð dð dð dð d˜,ñ dô dð dð4%ð 4%ð 4%ð 4%ð 4%ñ 4%ô 4%ð 4%ðn5%ð 5%ð 5%ð 5%ð 5%˜nñ 5%ô 5%ð 5%ðp	ð 	ð 	ð 	ð
ð 
ð 
ð
ð 
ð 
ð
#ð #ð #ðCð Cð Cð Cð !�” Ñ#Ô#€ðð ð ð Ð ð'ð 'ð 'ðð ð ð
ð ð ð*+ð +ð +ð2 €wˆwÐ2Ñ3Ô3ð IØ'H€GÔ$Ø€wˆwÐ2Ñ3Ô3ð IØ'H€GÔ$ð0ð 0ð 0ð	)ð 	)ð 	)ðð ð ð  ð  ð  ð"ð ð ðJð Jð Jðð ð ð Ð Ø€ð3ð 3ð 3ð 3ð 3ñ 3ô 3ð 3ðl	ð 	ð 	ð 	ð 	�”ñ 	ô 	ð 	ð*ð *ð *ð €ðCð Cð CàÐ Ø0Ð ØÐ ØÐ Ø&Ð Ø!Ð ØÐ ð%ð %ð %ðð ð ð:ð :ð :ðpð pð pð}>ð }>ð }>ð }>ð }>ñ }>ô }>ð }>ð@ Ð ØÐ ØÐ ØÐ ØÐ Ø $Ð ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ Ø)Ð ØÐ Ø"Ð ØÐ Ø $Ð ØÐ ð"ð "ð "ð$ð ð ð2(ð 2(ð 2(ð 2(ð 2(ñ 2(ô 2(ð 2(ðj	ð 	ð 	ð 	ð 	�Yñ 	ô 	ð 	ð €ð	"ð 	"ð 	"ð 	"ð
Jð 
Jð 
Jð_ð _ð _ð
ð ð ð6 3Ð ðð ð ð*ð ð ð8Að Að AðRð Rð RðDð Dð Dð Dð Dñ Dô Dð DðN €	Ø��W˜o°Ñ3Ñ4Ô4€Ø!%Ð ØFÐ à„7ˆd‚?€?ðGð Gð Gð Gð G˜VÔ-ñ Gô Gð Gð #�V”] :¸dÐCÑCÔCÔP€NØ%œ°°´Ð?QÑ0RÔ0RÐTZÔTcÐd€NÔØ#œ_€NÔØ#�f”m J¸tÐDÑDÔDÔR€OØ &¤°´ÐA€OÔð	0ð 	0ð 	0ð6ð 6ð 6ð(yð yð yð04ð 4ð 4ð 4ð 4ñ 4ô 4ð 4ð$ #ˆKÔ" ;Ð0tÑuÔu€	ðMð Mð Mð Mð Mñ Mô Mð Mð^ 	ˆ‰Œ€ðgð gð gð
ð ð ðSð Sð Sð
ð ð ð ð8 37ÐJ]Ðnoð }ð }ð }ð }ð@ 6;ÈTÐexð  STð  deð  x|ð  FJð lð lð lð lðZð ð ð ð&5ð 5ð 5ð}ð }ð }ð6#ð #ð #ð?ð ?ð ?ð ØØðð ØŒ8Œ?ðà
ðð ŒHŒOðð ð ð ð$' ð ' �u”x”ð ' °Dð ' ÈDð ' ð ' ð ' ð ' ðVð ð ð ð>ð ð ð */¸qÈeÐ`ið  Cð fð fð fð fðN@	ð @	ð @	ð @	ðFð ð ð1ð 1ð 1ð ð  ð  ð .ð .ð .ð9ð 9ð 9ð 9ð>ð ð ð ð BGÐ\aÐqvð  JOð  dhð  ~Bð  OSð  cgð  |@ð  QSð  fjð  ~Bð  NRð  mqð  CHô  CQð  kpð  @Bð  W[ð  quð  DHð \ð \¨Sð \ð \ð \ð \ð|,ð ,ð ,ð^#&ð #&ð #&ðJð ð ð ð0:ð :ð :ð :ð2 €ˆUÑÔØ49ÈeÐchð  |Að  QUð  jnð  AEð  X\ð  ptð  @Dð  ^bð  tyô  tBð  \að  rtð  LQð  fjð  @Dð  SWð Eð Eð Eñ ÔðEðN
 05ÈÐ_aÐvzð  HLð  aeð Q+ð Q+ð Q+ð Q+ðh#ð #ð #ð #ðJð ð ðð ð ð ð ñ ô ð ðð ð ð@ð ð ð" Ð ð-ð -ñ -ð*ð *ñ *ð
tð tð tð tð tñ tô tñ tð( ,Ñ+Ñ-Ô-Ñ ð}ð }ñ }ðð ñ ð(kð kð kð kð kñ kô kñ kðAð Añ AðPð Pñ Pð,7ð 7ñ 7ð  Ñ ðs!ð s!ð s!ð s!ð s!ñ s!ô s!ñ s!ðp=Cð Cð Cð Cð C�yñ Cô Cñ Cð �:Ð4¸dÐCÑCÔCÑ ð ð&ð &ð &ñ „ñ&ð7ð 7ñ 7ðð ð ð ð ñ ô ñ ð  16ÈÐ`eÐosð  LPð  koð  DIð  TUð  ghð  x|ð  OSð  _dð  ~Cô  ~Lð  fgð  x|ð  X\ð  luð  FHð  [_ð  rvð  GKð  [`ð  otð  G	K	ð  Z	_	ð  u	v	ð  B
G
ð  [
`
ð  t
x
ð ð ð ñ ð* >CÐUZÐmrð  }Að  Y]ð  x|ð  QVð  abð  tuð  EIð  \`ð  lqð  KPô  KYð  stð  EIð  eið  yBð  SUð  hlð  Cð  TXð  hmð  |A	ð  T	X	ð  g	l	ð  B
C
ð  O
T
ð  h
m
ð  AEð Oð Oð Oñ Oñd Õ �…ð BNÕA`Ðqsð AOð AO°ð AOð AOð AOñ AOð AOð AOs   ÄD# Ä#D'Ä+/E ÅE