Merge 0e0f1ed5bc760bd8316e7094c6e06910aaef83e1 into 255f1398638b265a47d0e74fb4759fe6cfc3b3d4

This commit is contained in:
Sv. Lockal 2025-07-22 18:34:39 -07:00 committed by GitHub
commit e02da70477
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 27 additions and 4 deletions

View File

@ -131,6 +131,13 @@ parser.add_argument("--reserve-vram", type=float, default=None, help="Set the am
parser.add_argument("--async-offload", action="store_true", help="Use async weight offloading.")
class CpuBf16Mode(enum.Enum):
Auto = "auto"
Yes = "yes"
No = "no"
parser.add_argument("--use-cpu-bf16", type=CpuBf16Mode, default=CpuBf16Mode.Auto, help="When CPU mode is enabled use bf16 instructions to improve performance.", action=EnumAction)
parser.add_argument("--default-hashing-function", type=str, choices=['md5', 'sha1', 'sha256', 'sha512'], default='sha256', help="Allows you to choose the hash function to use for duplicate filename / contents comparison. Default is sha256.")
parser.add_argument("--disable-smart-memory", action="store_true", help="Force ComfyUI to agressively offload to regular ram instead of keeping models in vram when it can.")

View File

@ -19,7 +19,7 @@
import psutil
import logging
from enum import Enum
from comfy.cli_args import args, PerformanceFeature
from comfy.cli_args import args, PerformanceFeature, CpuBf16Mode
import torch
import sys
import platform
@ -151,6 +151,21 @@ def is_mlu():
return True
return False
def use_cpu_bf16():
if args.use_cpu_bf16 == CpuBf16Mode.No or cpu_state != CPUState.CPU:
return False
if args.use_cpu_bf16 == CpuBf16Mode.Yes:
return True
try:
from cpuinfo import get_cpu_info
except:
logging.warning('py-cpuinfo is not installed, rerun "pip install -r requirements.txt"')
return False
cpu_info = get_cpu_info()
return 'avx512_bf16' in cpu_info['flags']
def get_torch_device():
global directml_enabled
global cpu_state
@ -1244,8 +1259,8 @@ def should_use_fp16(device=None, model_params=0, prioritize_performance=True, ma
def should_use_bf16(device=None, model_params=0, prioritize_performance=True, manual_cast=False):
if device is not None:
if is_device_cpu(device): #TODO ? bf16 works on CPU but is extremely slow
return False
if is_device_cpu(device):
return use_cpu_bf16()
if FORCE_FP32:
return False
@ -1259,7 +1274,7 @@ def should_use_bf16(device=None, model_params=0, prioritize_performance=True, ma
return True
if cpu_mode():
return False
return use_cpu_bf16()
if is_intel_xpu():
if torch_version_numeric < (2, 6):

View File

@ -18,6 +18,7 @@ Pillow
scipy
tqdm
psutil
py-cpuinfo
alembic
SQLAlchemy