CoolFace
Apppublic

fred-dev/comfy_ui_ali

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
model_management.cpython-312.pyc187 linesDownload Raw Back to __pycache__
1�

2���gr����dZddlZddlZddlmZddlmZmZddlZddl	Z	ddl3Z4ddlZddlZGd�de�Z
Gd�de�Ze
jae
jZej$adZd	ad5Z	ej.j0Zej3d�Zeed�eed�fZedd
kxsedd
k(xreddkxrej:j=�adZej@r&ejBd�ejDdd��d	a#ejH�nddl%Z%da#ejHZ&e&dkre%jN�a(ne%jNe&�a(ejBdjSe%jTe&���d	Z	ddl+Z,ej:j[�Z.t*xsej:j=�a	ej`jbj=�rejdaddl3Z	ddl4Z4ejjj[�Z.ejjj=�a6	ddl7Z7ejpj[�Z.ejpj=�a9ejtrejvad�Z<d�Z=d�Z>d�Z?dud�Z@d�ZAe@e?��dzZej��j�dzZDejBdjSeeD��	ejBdjSe��eA�ZEeE�!ejBdjSeE��	ej�j�ZHd6ZJdZKej�rd	ZMn�	ddlNZNddlOZNdZM	eNj�ZM	eNj.j0ZJejBdjSeJ��eJj�d�r&ej�d �ej�d!�d	ZKd"�ZSd#�ZTd$ZUeS�rd%ZUd	aVej�rdaVd	ZM	eS�r1edd
k\r)t�d	k(r ej�d	k(rej�d	k(rdaVe<�se=�se>�r ej�d	k(rej�d	k(rdaV	eT�r�ej�j�e?��j�Z\ejBd&jSe\��ej�d	k(r0ej�d	k(r!edd
k\redd'k\re]d(�d)D��rdaVt�roej`j�j�d�ej`j�j�d�ej`j�j�d�d	Za	eS�rQej�ej�vr9dej`j�j�_edZaejBd*�	edd
k(r-edd+k\r%ej`j�j�d�ej�re
j�ZdZn=ej�r
e
j�Zn$ej�sej�re
j�ad	Znej�rejBd-�dZneree
j�e
j�fvreat&ej$k7re
j�at&ejdk(re
j�aejBd.t j����ej�ZtetrejBd/�d0�Zu	ejBd1jSeue?����gZvd3�ZwGd4�d5�Zxd6�Zyd7�Zze]e7j���Z|d8Z}e|rd9Z}ej��9ej�d:zd:zd:zZ}ej�d;jSe}dz��d<�Z�d=�Z�gfd>�Z�dvd?�Z�d@�Z�dwdA�Z�dB�Z�dC�Z�dD�Z�dE�Z�dF�Z�dxdG�Z�dde�je�je�jgdfdH�Z�e�je�je�jgfdI�Z�dJ�Z�dK�Z�dydL�Z�dxdM�Z�dN�Z�dO�Z�dP�Z�dgfdQ�Z�dR�Z�dS�Z�dT�Z�dxdU�Z�dV�Z�dW�Z�dX�Z�dzdY�Z�dwdZ�Z�d[�Z�d\�Z�d]�Z�d^�Z�d_�Z�d`�Z�da�Z�db�Z�dudc�Z�dd�Z�de�Z�df�Z�dg�Z�dh�Z�di�Z�dj�Z�d{dk�Z�d{dl�Z�dxdm�Z�dwdn�Z�do�Z�ddl�Z�Gdp�dqeI�Z�e��jr�a�d	a�d|dr�Z�ds�Z�dt�Z�y#Y��)xYw#t*xs%e/ed�xrej:j=�aY��mxYw#Y��@xYw#d	a6Y��xYw#d	a9Y���xYw#Y��#xYw#eIZHY��xYw#Y���xYw#Y���xYw#d	ZMY���xYw#Y��
xYw#Y���xYw#Y���xYw#ej�d,�Y���xYw#ej�d2�Y��pxYw)}a�8    This file is part of ComfyUI.9    Copyright (C) 2024 Comfy10 11    This program is free software: you can redistribute it and/or modify12    it under the terms of the GNU General Public License as published by13    the Free Software Foundation, either version 3 of the License, or14    (at your option) any later version.15 16    This program is distributed in the hope that it will be useful,17    but WITHOUT ANY WARRANTY; without even the implied warranty of18    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the19    GNU General Public License for more details.20 21    You should have received a copy of the GNU General Public License22    along with this program.  If not, see <https://www.gnu.org/licenses/>.23�N)�Enum)�args�PerformanceFeaturec�$�eZdZdZdZdZdZdZdZy)�	VRAMStater�����N)	�__name__�24__module__�__qualname__�DISABLED�NO_VRAM�LOW_VRAM�NORMAL_VRAM�	HIGH_VRAM�SHARED���a/Users/fredrodrigues/Library/CloudStorage/Dropbox/Code/comfyui_hardware/comfy/model_management.pyrrs ���H��G��H��K��I�
�Frrc��eZdZdZdZdZy)�CPUStaterrr	N)r
rr�GPU�CPU�MPSrrrrr%s��25�C�26�C�27�CrrF��.rr	rTz*Using deterministic algorithms for pytorch)�	warn_onlyzUsing directml with device: {}�xpuc�@�ttjk(rtryy�NTF)�	cpu_staterr�
xpu_availablerrr�is_intel_xpur&ls���H�L�L� ���rc��tryyr#)�
npu_availablerrr�
is_ascend_npur)t�����rc��tryyr#)�
mlu_availablerrr�is_mlur-zr*rc��trtSttjk(rtjd�Sttjk(rtjd�St�r2tjdt28jj��St�r2tjdt29jj��St�r2tjdt30jj��Stjt31jj��S)N�mps�cpur!�npu�mlu)�directml_enabled�directml_devicer$rr�torch�devicerr&r!�current_devicer)r1r-r2�cudarrr�get_torch_devicer9�s�������H�L�L� ��|�|�E�"�"��H�L�L� ��|�|�E�"�"��>��<�<��u�y�y�'?�'?�'A�B�B�
�_��<�<��u�y�y�'?�'?�'A�B�B�
�X��<�<��u�y�y�'?�'?�'A�B�B��<�<��32�33� 9� 9� ;�<�<rc�v�|�34t�}t|d�r@|jdk(s|jdk(r"tj�j35}|}�nZtrd}|}�nNt�rPtjj|�}|d}|}tjj|�j}n�t�rKtjj|�}|d}tjj|�\}}|}|}n�t!�rKtj"j|�}|d}tj"j|�\}}|}|}nJtj$j|�}|d}tj$j|�\}}	|}|	}|r||fS|S)N�typer0r/�@�reserved_bytes.all.current)r9�hasattrr;�psutil�virtual_memory�totalr3r&r5r!�memory_stats�get_device_properties�total_memoryr)r1�mem_get_infor-r2r8)36�dev�torch_total_too�	mem_total�mem_total_torch�stats�mem_reserved�_�
mem_total_npu�
mem_total_mlu�mem_total_cudas37          r�get_total_memoryrP�s|��38�{�� ���s�F�����U�!2�c�h�h�%�6G��)�)�+�1�1�	�#���*�I�'�O�
�^��I�I�*�*�3�/�E� �!=�>�L�*�O��	�	�7�7��<�I�I�I�
�_��I�I�*�*�3�/�E� �!=�>�L�$�y�y�5�5�c�:��A�}�*�O�%�I�
�X��I�I�*�*�3�/�E� �!=�>�L�$�y�y�5�5�c�:��A�}�*�O�%�I��J�J�+�+�C�0�E� �!=�>�L� %�39�40� 7� 7�� <��A�~�*�O�&�I���?�+�+��rc�~�	td�tj�djd�D��S#YyxYw)Nc3�2K�|]}t|����y�w�N)�int)�.0�ns  r�	<genexpr>zmac_version.<locals>.<genexpr>�s����F�%E��S��V�%E�s�rr)�tuple�platform�mac_ver�splitrrr�mac_versionr\�s;����F�X�%5�%5�%7��%:�%@�%@��%E�F�F�F����s�58�<iz+Total VRAM {:0.0f} MB, total RAM {:0.0f} MBzpytorch version: {}zMac Version {}zxformers version: {}z0.0.18zz41WARNING: This version of xformers has a major bug where you will get black images when generating high resolution images.z=Please downgrade or upgrade xformers to a different version.42c�h�ttjk(rtjj43ryyr#)r$rrr5�versionr8rrr�	is_nvidiar_�s!���H�L�L� ��=�=����rc�h�ttjk(rtjj44ryyr#)r$rrr5r^�hiprrr�is_amdrb�s!���H�L�L� ��=�=����rg�������?gzAMD arch: {}�c#�,K�|]}|tv���y�wrS)�arch)rU�as  rrWrWs����C�,B�q��T�	�,B�s�)�gfx1100�gfx1101zEnabled fp16 accumulation.rz9Warning, could not set allow_fp16_bf16_reduction_math_sdpz7Forcing FP32, if this improves things please report it.zSet vram state to: z!Disabling smart memory managementc���t|d�ry|jdk(rO	tjj	�}dj|tjj
|�|�Sdj|j�St�r/dj|tjj
|��St�r/dj|tjj
|��St�r/dj|tjj
|��Sdj|tjj
|��S#d}Y��,xYw)Nr;r8rz45{} {} : {}z{}z{} {}zCUDA {}: {})
r>r;r5r8�get_allocator_backend�format�get_device_namer&r!r)r1r-r2)r6�allocator_backends  r�get_torch_device_namernPs���v�v���;�;�&� �
'�$)�J�J�$D�$D�$F�!� �&�&�v�u�z�z�/I�/I�&�/Q�Sd�e�e��;�;�v�{�{�+�+�	���~�~�f�e�i�i�&?�&?��&G�H�H�	���~�~�f�e�i�i�&?�&?��&G�H�H�	���~�~�f�e�i�i�&?�&?��&G�H�H��#�#�F�E�J�J�,F�,F�v�,N�O�O��
'�$&�!�s�E � E'z46Device: {}zCould not pick default device.c��d}|j�}|D]+}||}||j�|j�zz
}�-|S�Nr)�47state_dict�nelement�element_size)�module�48module_mem�sd�k�ts     r�module_sizeryksL���J�	�	�	�	�B�
���q�E���a�j�j�l�Q�^�^�%5�5�5�49���rc�x�eZdZd�Zd�Zd�Zed��Zd�Zd�Z	d�Z50d�Zdd	�Zdd51�Z
dd�Zdd
�Zd�Zd�Zd�Zy)�LoadedModelc��|j|�|j|_d|_d|_d|_d|_y�NT)�52_set_model�load_devicer6�53real_model�currently_used�model_finalizer�_patcher_finalizer��self�models  r�__init__zLoadedModel.__init__ts:��������'�'������"���#���"&��rc���tj|�|_|j�Jtj|j�|_tj54||j�|_yyrS)�weakref�ref�_model�parent�
_parent_model�finalize�_switch_parentr�r�s  rr~zLoadedModel._set_model|sQ���k�k�%�(����<�<�#�!(���U�\�\�!:�D��&-�&6�&6�u�d�>Q�>Q�&R�D�#�$rc�L�|j�}|�|j|�yyrS)r�r~r�s  rr�zLoadedModel._switch_parent�s'���"�"�$�����O�O�E�"�rc�"�|j�SrS)r��r�s rr�zLoadedModel.model�s���{�{�}�rc�6�|jj�SrS)r��55model_sizer�s r�model_memoryzLoadedModel.model_memory�s���z�z�$�$�&�&rc�6�|jj�SrS)r��loaded_sizer�s r�model_loaded_memoryzLoadedModel.model_loaded_memory�s���z�z�%�%�'�'rc�l�|jj�|jj�z56SrS)r�r�r�r�s r�model_offloaded_memoryz"LoadedModel.model_offloaded_memory�s'���z�z�$�$�&����)?�)?�)A�A�Arc�|�||jj�k(r|j�S|j�SrS)r��current_loaded_devicer�r�)r�r6s  r�model_memory_requiredz!LoadedModel.model_memory_required�s5���T�Z�Z�5�5�7�7��.�.�0�0��$�$�&�&rc�|�|jj|j�|jj|jj��|}|dk(rd}|j	||��|jj}t�rbtjsRdt�vrF|�Dtj�5tj|j�ddd��}ddd�tj|�|_tj"|t$�|_|S#1swY�DxYw)Nrgn����F��force_patch_weights�ipexT)�inplace�57graph_mode�
concat_linear)r��model_patches_tor6�model_dtype�model_use_more_vramr&r�disable_ipex_optimize�globalsr5�no_gradr��optimize�evalr�r�r�r��cleanup_modelsr�)r��lowvram_model_memoryr��
use_more_vramr�s     r�58model_loadzLoadedModel.model_load�s����59�60�#�#�D�K�K�0��61�62�#�#�D�J�J�$:�$:�$<�=�-�
��A�� �M�� � ��DW� �X��Z�Z�%�%�63��>�$�"<�"<��7�9�AT�Yc�Yo�����!�]�]�:�?�?�+<�d�W[�ko�p�64�!�"�+�+�j�1���&�/�/�65�N�K�����!��s�(D2�2D;c�D�|r|jj�dkDryy�NrTF)r��lowvram_patch_counter)r�r�s  r�should_reload_modelzLoadedModel.should_reload_model�s���4�:�:�#C�#C�#E��#I��rNc�4�|�S||jj�kr6|jj|jj|�}||k\ry|jj	|�|j66j	�d|_d|_y�NFT)r�r��partially_unload�offload_device�detachr�r�)r��memory_to_free�unpatch_weights�freeds    r�model_unloadzLoadedModel.model_unload�s~���%���67�68� 6� 6� 8�8��69�70�3�3�D�J�J�4M�4M�~�^���N�*� ��71�72���/�*����#�#�%�#������rc�R�|jj|j||��S)Nr�)r��partially_loadr6)r��extra_memoryr�s   rr�zLoadedModel.model_use_more_vram�s#���z�z�(�(����l�Xk�(�l�lrc�2�|j|juSrS�r�)r��others  r�__eq__zLoadedModel.__eq__�s���z�z�U�[�[�(�(rc�R�|j�|jj�yyrS)r�r�r�s r�__del__zLoadedModel.__del__�s%���"�"�.��#�#�*�*�,�/rc�F�|j�duxr|jduSrS)r�r�r�s r�is_deadzLoadedModel.is_dead�s"����� ��,�C����t�1C�Cr)rF�Fr})r
rrr�r~r��propertyr�r�r�r�r�r�r�r�r�r�r�r�rrrr{r{ss`��'�S�#�73����'�(�B�'��&�74 75�m�)�-�Drr{c�h�|D]-}|j|k(s�||j|�z}|dks�-yyrp)r6r�)r��
loaded_modelsr6�ms    r�use_more_memoryr��s8��
���8�8�v���A�1�1�,�?�?�L��q� ��	rc�^�d}|D]%}|j|k(s�||j�z
}�'|Srp)r6r�)r�r6�
offloaded_memr�s    r�offloaded_memoryr��s8���M�
���8�8�v���Q�5�5�7�7�M���rii�%iz+Reserving {}MB vram for other applications.c��tSrS)�EXTRA_RESERVED_VRAMrrr�extra_reserved_memoryr��s���rc��dt�zS)Ng�������A)r�rrr�minimum_inference_memoryr��s��%�(=�(?�?�?rc���t�g}g}g}ttt�dz76dd�D]�}t|}|j|k(s�||vs�!|j�r�2|j
|j�tj|j�|j�|f�d|_��t|�D]�}|d}d}	tst|�}77|78|kDrnx||79z80}	t!j"dt|jjj$j&���t|j)|	�s��|j
|���t|d��D]&}|j
tj+|���(t|�dkDrt-�|St.t0j2k7r"t|d��\}}||d	zkDr81t-�|S)82Nr�����Fz83Unloading T)�reverser)�torch_free_toog�?)�cleanup_models_gc�range�len�current_loaded_modelsr6r��appendr��sys�getrefcountr�r�r��sorted�DISABLE_SMART_MEMORY�get_free_memory�logging�debug�	__class__r
r��pop�soft_empty_cache�84vram_staterr)
�memory_requiredr6�keep_loaded�unloaded_model�85can_unload�unloaded_models�i�shift_model�xr��free_mem�mem_free_total�mem_free_torchs
             r�free_memoryr��s������N��J��O�
�3�,�-�q�0�"�b�
9��+�A�.������'��+�-�k�6I�6I�6K��!�!�K�$F�$F�$H�#H�#�/�/�Ze�Zk�Zk�Jl�ny�oG�oG�oI�KL�#M�N�-2��*�:��J�
��
�b�E����#�&�v�.�H��/�)��,�x�7�N��
�
�86�#8��#;�#A�#A�#G�#G�#Q�#Q�#Z�#Z�"[�\�]� ��#�0�0��@��!�!�!�$� ��N�D�
1�����4�8�8��;�<�2��>��Q������	��,�,�,�-<�V�TX�-Y�*�N�N���� 5�5� �"��rc�87�t�t�}t||t�z�}|�|}nt||t�z�}t	|�}g}|D]�}t|�}		tj|	�}88|89�"t|90}d|_|j|��Ht|d�r6tjd|jjj���|j|	���|D]�}	g}t!t#t��D]5}
|	jj%t|
j�s�0|
g|z}�7|D]1}
tj'|
�jj)d���3��i}|D]G}	|j+|	j,d�|	j/|	j,�z||	j,<�I|D]0}|t1j,d�k7s�t3||dz|z|��2|D]e}|t1j,d�k7s�t5|�}||ks�-t3||�}tjd	j7t#|����g|D�]}	|	j}|j8}t;|�rt<j>}nt@}d}tBr�|t<jDk(s|t<jFk(r[|sY|	jI�}t5|�|z}td91||z92tK|tLz|t�z93��}td||z94�}|t<jNk(rd}|	jQ||��tjSd|	���y#d}95Y��xYw)
NTr�zRequested to load F)�unpatch_allrr0g�������?z{} models unloaded.ig�������?r�)*r�r��maxr��setr{r��indexr�r�r>r��infor�r�r
r�r��is_cloner�r��getr6r�r5r�r�rkr�
is_device_cpurrr��lowvram_availablerrr��min�MIN_WEIGHT_MEMORY_RATIOrr��insert)�modelsr�r��minimum_memory_required�force_full_load�inference_memory�	extra_mem�models_to_loadr��loaded_model�loaded_model_index�loaded�	to_unloadr��total_memory_requiredr6r��models_lr��	torch_dev�vram_set_stater��
loaded_memory�current_free_mems                        r�load_models_gpurs�����0�1���$�o�8M�8O�&O�P�I��&�"+��"%�&6�8O�Rg�Ri�8i�"j��
��[�F��N�
��"�1�~��	&�!6�!<�!<�\�!J���)�*�+=�>�F�$(�F�!��!�!�&�)��q�'�"����1�!�'�'�2C�2C�2L�2L�1M�N�O��!�!�,�/�� '���	��s�0�1�2�A��!�!�*�*�+@��+C�+I�+I�J��C�)�O�	�3��A�!�%�%�a�(�.�.�5�5�%�5�H��'���&��5J�5N�5N�|�Ob�Ob�de�5f�iu�jL�jL�MY�M`�M`�ja�6a��l�1�1�2�'�(���U�\�\�%�(�(��-�f�5��;�i�G��P�(�(���U�\�\�%�(�(�&�v�.�H��1�1�&�'>��G�����2�9�9�#�h�-�H�I�(�'���"�"���%�%�	���#�&�/�/�N�'�N� ���.�I�4F�4F�"F�.�\e�\q�\q�Jq�|K�(�<�<�>�M�.�y�9�M�I��#&�'8�;K�Ne�;e�hk�l|�@W�mW�Yi�lD�lF�YF�iG�$H� �#&�s�,@�=�,P�#Q� ��Y�.�.�.�#&� ���� 4�J]��^��$�$�Q��5�''�(��o	&�!%��s�&M;�;Nc��t|g�SrS)rr�s r�load_model_gpur[s���E�7�#�#rc�t�g}tD],}|r
|js�|j|j��.|SrS)r�r�r�r�)�only_currently_used�outputr�s   rr�r�^s7��
�F�
"����#�#���
�
�a�g�g��#��Mrc�D�d}ttt��D]e}t|}|j�s�t	j96dj
|j�jj��d}n|r�tj�t�ttt��D]b}t|}|j�s�t	jdj
|j�jj���dyy)NFz�Potential memory leak detected with model {}, doing a full garbage collect, for maximum performance avoid circular references in the model code.Tz_WARNING, memory leak with model {}. Please make sure it is not being referenced from somewhere.)r�r�r�r�r�r�rkr�r�r
�gc�collectr��warning)�do_gcr��curs   rr�r�is2���E�
�3�,�-�
.��#�A�&���;�;�=��L�L�l�s�s�tw�tB�tB�tD�tN�tN�tW�tW�X�
Y��E��/�
�97�98�99�����s�0�1�2�A�'��*�C��{�{�}����!B�!I�!I�JM�JX�JX�JZ�Jd�Jd�Jm�Jm�!n�o�3�	
rc��g}ttt��D] }t|j���|g|z}�"|D]}tj	|�}~�yrS)r�r�r�r�r�)�	to_deleter�r�s   rr�r�}sZ���I�
�3�,�-�
.�� ��#�.�.�0�8���i��I�/���!�%�%�a�(��
�rc��d}|tjk(s|tjk(rd}|S|tjk(rd}|S	|j}|S#Y|SxYw)Nrr	)r5�float16�bfloat16�float32�itemsize)�dtype�100dtype_sizes  rr(r(�sl���J���
�
���%�.�.�!8��101���102�%�-�-�	��103���		����J����	����s�A�Ac�n�ttjk(r104t�St	j105d�S�Nr0)r�rrr9r5r6rrr�unet_offload_devicer+�s(���Y�(�(�(��!�!��|�|�E�"�"rc��t�}ttjk(sttjk(r|Stjd�}tr|St|�|z}t|�}t|�}||kDr||kr|S|Sr*)106r9r�rrrr5r6r�r(r�)�107parametersr'r�cpu_devr��mem_dev�mem_cpus       r�unet_inital_load_devicer1�s~�� �"�I��Y�(�(�(�J�)�:J�:J�,J����l�l�5�!�G�����E�"�Z�/�J��i�(�G��g�&�G����Z�'�1����rc�4�t|�dzt�z108S)Ng)\���(�?)rPr��r6s r�maximum_vram_for_weightsr4�s���V�$�t�+�.F�.H�H�Irc�.�|dkrd}tjrtjStjrtj109StjrtjStjrtjStjrtjStjrtjSd}	|tjtjfvr|}|�"t|�r|St|�}|dz|kDr|St s|tjk(r/tj|vrt#||��rtjS|D]�}|tjk(r1t#||��r$tj|vrtjcS|tjk(s�[t%||��s�itj|vs�|tjcS|D]�}|tjk(r2t#||d��r$tj|vrtjcS|tjk(s�\t%||d��s�ktj|vs�~tjcStjS#Y���xYw)	Nrl@=7M.cr	)r6�model_params)r6T)r6r6�manual_cast)r6r7)r�	fp32_unetr5r%�	fp64_unet�float64�	bf16_unetr$�	fp16_unetr#�fp8_e4m3fn_unet�
float8_e4m3fn�
fp8_e5m2_unet�float8_e5m2�supports_fp8_computer4�PRIORITIZE_FP16�should_use_fp16�should_use_bf16)r6r6�supported_dtypes�weight_dtype�	fp8_dtype�free_model_memory�dts       r�110unet_dtyperJ�s����a��-���~�~��}�}���~�~��}�}���~�~��~�~���~�~��}�}������"�"�"����� � � ��I�
��E�/�/��1B�1B�C�C�$�I�����'���4�V�<���!��/�/����,�%�-�-�7��=�=�,�,���]i�1j��=�=� ���
�����?�&�|�#\��}�}� 0�0��}�}�$�
�����O�F��$V��~�~�!1�1��~�~�%�
���
�����?�&�|�im�#n��}�}� 0�0��}�}�$�
�����O�F��cg�$h��~�~�!1�1��~�~�%�
��=�=���?
��s�$J�Jc��|tjk(s|tjk(ryt|d��}|r|tjk(ryt|�}|r|tjk(ryt|d��}tr$|r"tj|vrtjS|D]Q}|tjk(r|rtjcS|tjk(s�>|s�AtjcStjS)NF��prioritize_performanceT)r5r%r:rCr#rDr$rB)rF�inference_devicerE�fp16_supported�bf16_supportedrIs      r�unet_manual_castrQ�s����u�}�}�$���
�
�(E��$�%5�e�T�N��,�%�-�-�7��$�%5�6�N��,�%�.�.�8��$�%5�d�S�N��>�e�m�m�?O�.O��}�}����
�����>��=�=� �
�����N��>�>�!�	��=�=�rc�`�tjr111t�Stjd�Sr*�r�gpu_onlyr9r5r6rrr�text_encoder_offload_devicerU��!���}�}��!�!��|�|�E�"�"rc��tjr112t�Sttj113k(sttjk(r+td��r114t�Stjd�Stjd�S)NFrLr0)115rrTr9r�rrrrCr5r6rrr�text_encoder_devicerXs\���}�}��!�!�	�y�*�*�	*�j�I�<Q�<Q�.Q��%�8�#�%�%��<�<��&�&��|�|�E�"�"rc��||k(s|dkr|St|�r|St|�}t|�}||dzkDr116|dz|kr|S|S)Nr<g�?g333333�?)�
is_device_mpsr�)rr�r��mem_l�mem_os     r�text_encoder_initial_devicer]s^���n�$�117�6H�(H����[�!����K�(�E��N�+�E�������c�!1�E�!9����rc�X�tjrtjStjrtj118StjrtjStjrtjSt|�rtjStjSrS)r�fp8_e4m3fn_text_encr5r>�fp8_e5m2_text_encr@�
fp16_text_encr#�
fp32_text_encr%r�r3s r�text_encoder_dtypercsn������"�"�"�	
�	�	�� � � �	
�	�	��}�}��	
�	�	��}�}���V���}�}���=�=�rc�`�tjr119t�Stjd�Sr*rSrrr�intermediate_devicere,rVrc�`�tjrtjd�St	�Sr*)r�cpu_vaer5r6r9rrr�120vae_devicerh2s!���|�|��|�|�E�"�"���rc�`�tjr121t�Stjd�Sr*rSrrr�vae_offload_devicerj7rVrc��tjrtjStjrtj122StjrtjS|D]R}|tjk(rt|�r|cS|tj123k(s�9t�r�Dt|�s�P|cStjSrS)r�fp16_vaer5r#�bf16_vaer$�fp32_vaer%rCrbrD)r6�allowed_dtypes�ds   r�	vae_dtyperq=s����}�}��}�}��	
����~�~��	
����}�}��
����
�
��/�&�"9��H�
�������o�f�6M��H�
��=�=�rc�4�t|d�r|jSy)Nr;r8�r>r;)rFs r�get_autocast_devicertOs���s�F���x�x��rc��|tjk(ryt|�ry|tjk(ry|tjk(ryyr#)r5r%r�r#r$�r6r's  r�supports_dtyperwTs=����
�
����V�����
�
���������rc���|tjk(ry|tjk(rytry|tjk(ryt|�ry|tjk(ry|tjk(ryyr#)r5r%r#r3r$rZr>r@rvs  r�
supports_castry_se����
�
�����
�
������������V�����#�#�#����!�!�!��rc�^�|�|}nt|�t|�kDr|}t||�s|}|SrS)r(ry)r'�fallback_dtyper6s   r�pick_weight_dtyper|ps7���}���	�E�	�Z��7�	7������'����Lrc�b�t|�ryt�rytjrytryyr�)rZr&r�
deterministicr3r3s r�device_supports_non_blockingr{s*���V����~��������rc��t|�syy�NF)rr3s r�device_should_use_non_blockingr��s��'��/��rc�&�tjryyr#)r�force_channels_lastrrrr�r��s������rc���|�|j|k(r(|s|�|j|k(r|S|j||��Stj|||��}|j||��|S)N)r'�copy)r'r6)�non_blocking)r6r'�tor5�124empty_like�copy_)�weightr'r6r�r��rs      r�cast_tor��sf��
�~����&�0���}����� 5��
��y�y�u�4�y�0�0�
����u�V�<�A��G�G�F��G�.��Hrc�8�t|�}t|||||��S)N)r'r6r�r�)rr�)�tensorr6r'r�r�s     r�cast_to_devicer��s ��/��7�L��6��v�L�W[�\�\rc�"�tjSrS)r�use_sage_attentionrrr�sage_attention_enabledr��s���"�"�"rc�"�tjSrS)r�use_flash_attentionrrr�flash_attention_enabledr��s���#�#�#rc��ttjk7ryt�ryt	�ryt�rytrytSr�)r$rrr&r)r-r3�XFORMERS_IS_AVAILABLErrr�xformers_enabledr��s7���H�L�L� ���~�����
�x���� � rc�(�t�}|sytSr�)r��XFORMERS_ENABLED_VAE)�enableds r�xformers_enabled_vaer��s��� �G����rc��tSrS)�ENABLE_PYTORCH_ATTENTIONrrr�pytorch_attention_enabledr��s��#�#rc�,�t�ryt�Sr�)rbr�rrr�pytorch_attention_enabled_vaer��s��
�x��$�&�&rc�~�tr7t�ryt�ryt�ryt	�ryt�ryyr#)r�r_r&r)r-rbrrr�!pytorch_attention_flash_attentionr��s0����;���>���?���8���8��rc��tj}t�}|�d|cxkrdkrnnd}|r tjtj125iSy)N)�r)�T)r�force_upcast_attentionr\r5r#r%)�upcast�
macos_versions  r�force_upcast_attention_dtyper��sD��
�
(�
(�F��M�M�� �g��&F��&F���
��
�
�u�}�}�-�-�rc���|�126t�}t|d�r@|jdk(s|jdk(r"tj�j127}|}�n�trd}|}�n�t�ratjj|�}|d}|d}||z128}tjj|�j|z129}||z}�nt�rVtjj|�}|d}|d}tjj|�\}}	||z130}||z}n�t!�rVtj"j|�}|d}|d}tj"j|�\}131}	||z132}|133|z}nUtj$j|�}|d}|d}tj$j|�\}}	||z134}||z}|r||fS|S)Nr;r0r/r<zactive_bytes.all.currentr=)r9r>r;r?r@�	availabler3r&r5r!rBrCrDr)r1rEr-r2r8)rFr�r�r�rJ�135mem_activerK�mem_free_xpu�mem_free_npurL�mem_free_mlu�
mem_free_cudas            rr�r��s���136�{�� ���s�F�����U�!2�c�h�h�%�6G��.�.�0�:�:��'���/�N�+�N�
�^��I�I�*�*�3�/�E��9�:�J� �!=�>�L�)�J�6�N� �9�9�:�:�3�?�L�L�|�[�L�)�N�:�N�
�_��I�I�*�*�3�/�E��9�:�J� �!=�>�L�#�i�i�4�4�S�9�O�L�!�)�J�6�N�)�N�:�N�
�X��I�I�*�*�3�/�E��9�:�J� �!=�>�L�#�i�i�4�4�S�9�O�L�!�)�J�6�N�)�N�:�N��J�J�+�+�C�0�E��9�:�J� �!=�>�L�$�z�z�6�6�s�;��M�1�)�J�6�N�*�^�;�N����/�/��rc�0�ttjk(SrS)r$rrrrr�cpu_moder��������$�$rc�0�ttjk(SrS)r$rrrrr�mps_moder�r�rc�<�t|d�r|j|k(ryy)Nr;TFrs)r6r;s  r�is_device_typer�s���v�v���K�K�4���rc��t|d�Sr*�r�r3s rr�r� ����&�%�(�(rc��t|d�S)Nr/r�r3s rrZrZ#r�rc��t|d�S)Nr8r�r3s r�is_device_cudar�&s���&�&�)�)rc��tryyr#)r3rrr�is_directml_enabledr�)s����rc��|�t|�rytjrytryt	�ry|�t|�s137t
�ryt�ryt�ryt�ryt�rytjjrytjj|�}|j dk\ry|j dkrygd�}|D]*}||j"j%�vs� t&s|ryy|rt)|�}|r|dz|kDry|j dkrygd�}|D]}||j"vs�yy)	NFT��)�1080�1070ztitan x�p3000�p3200�p4000�p4200�p5000�p5200�p6000�1060�1050�p40�p100�p6�p4rrc)�1660�1650�1630�T500�T550�T600�MX550�MX450zCMP 30HX�T2000�T1000�T1200)r�r�138force_fp16�139FORCE_FP32r�rZr�r�r&r)r-r5r^rar8rC�major�name�lower�WINDOWSr4)	r6r6rMr7�props�nvidia_10_seriesr�rH�nvidia_16_seriess	         rrCrC0s+��
���� �������������}�V�4�����z���~�����
�x���}�}�����J�J�,�,�V�4�E��{�{�a����{�{�Q���]��
����140�141� � �"�"��+�����4�V�<��&�<�!�+;�>O�+O���{�{�Q���A��
����142�143�?���rc�d��|�t|�rytrytry|�t|�s144t	�rt�dkryyt
�ryt�ryt�ryt�rAtjj|�j�t�fd�dD��r|ryytjj|�}t�r|j dkDry|j dk\rytjj#�}|r|rt%|�}|r|dz|kDryy)	NF)r�Tc3�&�K�|]}|�v���145y�wrSr)rUrfres  �rrWz"should_use_bf16.<locals>.<genexpr>�s�����z�$y�q��T�	�$y�s�)�gfx1030�gfx1031�gfx1010�gfx1011�gfx1012�gfx906�gfx900�gfx803r146r�r)r�r�r3rZr�r\r�r&r)rbr5r8rC�gcnArchName�anyr-r��is_bf16_supportedr4)r6r6rMr7r��147bf16_worksrHres       @rrDrDps����
���� ��������}�V�4����=�5� ����z���~�����
�x��z�z�/�/��7�C�C���z�$y�z�z�����J�J�,�,�V�4�E�
�x��;�;��?���{�{�a������-�-�/�J��k�4�V�<��&�<�!�+;�>O�+O��rc�@�t�sytjj|�}|jdk\ry|jdkry|j148dkrytddkstddk(r
tddkrytrtddk(r
tdd	kryy)149NF�	Tr�rr	rr150r)r_r5r8rCr��minor�torch_version_numericr�)r6r�s  rrArA�s����;���J�J�,�,�V�4�E��{�{�a����{�{�Q����{�{�Q����Q��!�#�(=�a�(@�A�(E�J_�`a�Jb�ef�Jf���!�!�$��)�.C�A�.F��.J��rc���ttjk(rtjj�yt
�rtjj�yt�rtjj�ytjj�r=tjj�tjj�yyrS)
r$rrr5r/�empty_cacher&r!r)r1r8�is_available�ipc_collect)�forces rr�r��s}���H�L�L� �
�	�	����	��
�	�	����	��
�	�	����	���	 �	 �	"�
�151�152��� �
�153�154��� �155#rc�,�tdt��y)Ngꌠ9Y>)F)r�r9rrr�unload_all_modelsr�s����&�(�)rc��eZdZy)�InterruptProcessingExceptionN)r
rrrrrrr�s��rrc�>�t5|addd�y#1swYyxYwrS��interrupt_processing_mutex�interrupt_processing)�values r�interrupt_current_processingr�s��156$�$��157$�	#�	#�s��c�F�t5tcddd�S#1swYyxYwrSrrrr�processing_interruptedr158�s��159$�#�160$�	#�	#�s�� c�`�t5trdat��	ddd�y#1swYyxYwr�)rrrrrr�)throw_exception_if_processing_interruptedr�s*��161$��#(� �.�0�0� �162$�	#�	#�s�$�-r�)rFNFr�rS)r)NNFFr�)T)��__doc__r?r��enumr�comfy.cli_argsrrr5r�rYr�rrrrr��set_vram_torr$�163total_vramr%�
torch_versionr^�__version__r[�temprTr�r!r�rr~r��use_deterministic_algorithmsr3�directml�torch_directml�device_indexr6r4rk�device_name�intel_extension_for_pytorchr��device_countrLr>�backendsr/r�	torch.mps�	torch_npur1r(�	torch_mlur2r,r0rr&r)r-r9rPr\r@rA�	total_ramrZr8�OutOfMemoryError�
OOM_EXCEPTION�	Exception�XFORMERS_VERSIONr��disable_xformersr��xformers�xformers.ops�_has_cpp_library�164startswithrr_rbrr��use_pytorch_cross_attention�use_split_cross_attention�use_quad_cross_attentionrCr�rer��enable_math_sdp�enable_flash_sdp�enable_mem_efficient_sdprB�Fp16Accumulation�fast�matmul�allow_fp16_accumulation�"allow_fp16_bf16_reduction_math_sdp�lowvramr�novramr�highvramrTrr��165force_fp32rrr��disable_smart_memoryr�rnr�ryr{r�r��	win32_verr�r��reserve_vramr�r�r�r�rrr�r�r�r(r+r1r4r#r$r%rJrQrUrXr]rcrerhrjrqrtrwryr|rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rZr�r�rCrDrAr�r�	threadingr�RLockrrrr166rrrr�<module>r>s167���$���3��168���	�����t���
"�
"�169��#�#���L�L�	�
�170��
��
�	��M�M�-�-�M����s�#�D� ��a��\�3�t�A�w�<�8��*�1�-��1�v�6K�A�6N�RS�6S�6u�Xm�no�Xp�tu�Xu�U�}B�}F�}F�}S�}S�}U�M�������G�L�L�=�>�&�E�&�&�t�t�<����=�=������=�=�L��a��/�.�/�/�1��/�.�/�/��=���G�L�L�1�8�8�9S��9S�9S�T`�9a�b�c���Z�.�
�	�	��� �A�!�=�U�Y�Y�%;�%;�%=�M�	��~�~���&�&�(��L�L�	����
�	�	��� �A��I�I�*�*�,�M���
�	�	��� �A��I�I�*�*�,�M��8�8����I����=�('�R��.�0�
1�[�
A�171�!�F�!�!�#�)�)�[�9�	�����
:�
A�
A�*�i�
X�Y�	��G�L�L�&�-�-�m�<�=��m�G�������%�,�,�W�5�6���J�J�/�/�M��������!��&��� $��	�$,�$=�$=�!�	�'�/�/�;�;���G�L�L�/�6�6�7G�H�I��*�*�8�4�����!^�_����� `�a�',�$������;�!�� ���#�#�#��!��		��{� ��#�q�(�'�5�0�T�5S�5S�W\�5\�ae�a~�a~�CH�bH�+/�(��~���F�H��)�)�U�2�t�7T�7T�X]�7]�'+�$�172		�
�x��z�z�/�/�0@�0B�C�O�O������^�*�*�4�0�1��)�)�U�2�t�7T�7T�X]�7]�$�Q�'�1�,�1F�q�1I�Q�1N��C�,B�C�C�/3�,�173�	�N�N���'�'��-�	�N�N���(�(��.�	�N�N���0�0��6���	��{�)�:�:�d�i�i�G�=A������"�"�:�������1�2�Q��Q��1�$�)>�q�)A�Q�)F�
�����>�>�t�D��<�<��$�$�K���	�[�[��#�#�K�	�]�]�d�m�m��$�$�J�
�174��?�?��G�L�L�J�K��J���y�)�)�9�+<�+<�=�=� �175�
������#�#�J�������!�!�J�����"�:�?�?�"3�
4�5��0�0����G�L�L�4�5�P�&6��G�L�L��$�$�%:�;K�;M�%N�O�P�176���VD�VD�r��� �h� � �"�177#��'��178�+����� ��+�+�d�2�T�9�D�@���G�M�M�?�F�F�GZ�^i�Gj�k�l��@�68�#�JJ�X$��o�(��#��$J���e�m�m�U�^�^�]b�]j�]j�=k�z~�3�lHM�}�}�V[�Vd�Vd�fk�fs�fs�Ft��0#�	#��
� #��179#��"��$�180	��"	�	���	
�]�#�$�
!�  �$�'�181� 182�,�\%�%��)�)�*��>�@0�d�*183!�*�184�	�9�	�-�Y�_�_�.����%�$�1��I%	���0Z�!�Y�g�e�U�&;�&X��	�	�@V�@V�@X�M��	�����M����M��J	�����M��	���	���&� %���B	���	���	���185Q��G�O�O�O�P��l6��G�O�O�4�5�s��.A5d�Ad�4e�1868e�8e�7Ae �e(�-187f�8e2�A.e:�A-f�Bf�Af�'5f$�9,f>�d�/e�e	�e�e� e%�(e/�2e7�4f�:e?�<f�f	�f�f�f!�$f;�>g