Upstream nf4 nodes and prepare for flash-attention 2.6

This commit is contained in:
doctorpangloss 2024-08-25 17:08:19 -07:00
parent d7b65c9f55
commit b2fd1e2acb
4 changed files with 345 additions and 9 deletions

View File

@ -124,12 +124,13 @@ When using Windows, open the **Windows Powershell** app. Then observe you are at
```shell ```shell
pip install git+https://github.com/hiddenswitch/ComfyUI.git pip install git+https://github.com/hiddenswitch/ComfyUI.git
``` ```
**Recommended**: Currently, `torch 2.3.0` is the last version that `xformers` is compatible with. On Windows, install it first, along with `xformers`, for maximum compatibility and the best performance without advanced techniques in ComfyUI: **Recommended**: Currently, `torch 2.4.0` is the last version that `xformers` is compatible with. On Windows, install it first, along with `xformers`, for maximum compatibility and the best performance without advanced techniques in ComfyUI:
```shell ```shell
pip install torch==2.3.0+cu121 torchvision --index-url https://download.pytorch.org/whl/cu121 pip install torch==2.4.0+cu121 torchvision --index-url https://download.pytorch.org/whl/cu121
pip install xformers==0.0.26.post1 pip install xformers==0.0.27.post2
pip install --no-build-isolation git+https://github.com/hiddenswitch/ComfyUI.git pip install --no-build-isolation git+https://github.com/hiddenswitch/ComfyUI.git
``` ```
For improved performance when using the language models on Windows, CUDA 12.1 and PyTorch 2.3.0, add: For improved performance when using the language models on Windows, CUDA 12.1 and PyTorch 2.3.0, add:
```shell ```shell
pip install flash-attn @ https://github.com/AppMana/appmana-comfyui-nodes-extramodels/releases/download/v0.0.0-flash_attn/flash_attn-2.5.9.post1-cp311-cp311-win_amd64.whl pip install flash-attn @ https://github.com/AppMana/appmana-comfyui-nodes-extramodels/releases/download/v0.0.0-flash_attn/flash_attn-2.5.9.post1-cp311-cp311-win_amd64.whl

View File

@ -1,10 +1,9 @@
import comfy.sd
import torch
import bitsandbytes as bnb import bitsandbytes as bnb
import comfy.ops import torch
from bitsandbytes.nn.modules import Params4bit, QuantState from bitsandbytes.nn.modules import Params4bit, QuantState
import comfy.ops
import comfy.sd
from comfy.cmd.folder_paths import get_folder_paths from comfy.cmd.folder_paths import get_folder_paths
from comfy.model_downloader import get_filename_list_with_downloadable, get_or_download from comfy.model_downloader import get_filename_list_with_downloadable, get_or_download
@ -150,8 +149,7 @@ class OPS(comfy.ops.manual_cast):
self.weight = self.weight.to(layer_original_device) self.weight = self.weight.to(layer_original_device)
return out return out
else: else:
weight, bias = comfy.ops.cast_bias_weight(self, x) raise ValueError("should not be reached")
return functional_linear_4bits(x, weight, bias)
class CheckpointLoaderNF4: class CheckpointLoaderNF4:

View File

@ -0,0 +1,174 @@
{
"1": {
"inputs": {
"noise": [
"2",
0
],
"guider": [
"3",
0
],
"sampler": [
"6",
0
],
"sigmas": [
"7",
0
],
"latent_image": [
"9",
0
]
},
"class_type": "SamplerCustomAdvanced",
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"2": {
"inputs": {
"noise_seed": 0
},
"class_type": "RandomNoise",
"_meta": {
"title": "RandomNoise"
}
},
"3": {
"inputs": {
"model": [
"17",
0
],
"conditioning": [
"4",
0
]
},
"class_type": "BasicGuider",
"_meta": {
"title": "BasicGuider"
}
},
"4": {
"inputs": {
"guidance": 3,
"conditioning": [
"13",
0
]
},
"class_type": "FluxGuidance",
"_meta": {
"title": "FluxGuidance"
}
},
"6": {
"inputs": {
"sampler_name": "euler"
},
"class_type": "KSamplerSelect",
"_meta": {
"title": "KSamplerSelect"
}
},
"7": {
"inputs": {
"scheduler": "ddim_uniform",
"steps": 1,
"denoise": 1,
"model": [
"17",
0
]
},
"class_type": "BasicScheduler",
"_meta": {
"title": "BasicScheduler"
}
},
"9": {
"inputs": {
"width": 1344,
"height": 768,
"batch_size": 1
},
"class_type": "EmptySD3LatentImage",
"_meta": {
"title": "EmptySD3LatentImage"
}
},
"10": {
"inputs": {
"samples": [
"1",
0
],
"vae": [
"11",
0
]
},
"class_type": "VAEDecode",
"_meta": {
"title": "VAE Decode"
}
},
"11": {
"inputs": {
"vae_name": "ae.safetensors"
},
"class_type": "VAELoader",
"_meta": {
"title": "Load VAE"
}
},
"13": {
"inputs": {
"text": "A plastic Barbie doll is walking along Sunset Boulevard. Here is a list of essential elements of it:\n\nArt Deco and Streamline Moderne buildings from the 1920s and 1930s.\nThe Sunset Tower Hotel: A striking Art Deco landmark with a pale pink facade and stepped design.\nChateau Marmont: A Gothic-style castle-like hotel with white stucco walls and red tile roof.\nNumerous billboards and large advertisements, often for upcoming films or TV shows.\nPalm trees lining portions of the street",
"clip": [
"18",
0
]
},
"class_type": "CLIPTextEncode",
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"16": {
"inputs": {
"filename_prefix": "ComfyUI",
"images": [
"10",
0
]
},
"class_type": "SaveImage",
"_meta": {
"title": "Save Image"
}
},
"17": {
"inputs": {
"ckpt_name": "flux1-dev-bnb-nf4-v2.safetensors"
},
"class_type": "CheckpointLoaderNF4",
"_meta": {
"title": "CheckpointLoaderNF4"
}
},
"18": {
"inputs": {
"clip_name1": "clip_l.safetensors",
"clip_name2": "t5xxl_fp16.safetensors",
"type": "flux"
},
"class_type": "DualCLIPLoader",
"_meta": {
"title": "DualCLIPLoader"
}
}
}

View File

@ -0,0 +1,163 @@
{
"1": {
"inputs": {
"noise": [
"2",
0
],
"guider": [
"3",
0
],
"sampler": [
"6",
0
],
"sigmas": [
"7",
0
],
"latent_image": [
"9",
0
]
},
"class_type": "SamplerCustomAdvanced",
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"2": {
"inputs": {
"noise_seed": 0
},
"class_type": "RandomNoise",
"_meta": {
"title": "RandomNoise"
}
},
"3": {
"inputs": {
"model": [
"17",
0
],
"conditioning": [
"4",
0
]
},
"class_type": "BasicGuider",
"_meta": {
"title": "BasicGuider"
}
},
"4": {
"inputs": {
"guidance": 3,
"conditioning": [
"13",
0
]
},
"class_type": "FluxGuidance",
"_meta": {
"title": "FluxGuidance"
}
},
"6": {
"inputs": {
"sampler_name": "euler"
},
"class_type": "KSamplerSelect",
"_meta": {
"title": "KSamplerSelect"
}
},
"7": {
"inputs": {
"scheduler": "ddim_uniform",
"steps": 1,
"denoise": 1,
"model": [
"17",
0
]
},
"class_type": "BasicScheduler",
"_meta": {
"title": "BasicScheduler"
}
},
"9": {
"inputs": {
"width": 1344,
"height": 768,
"batch_size": 1
},
"class_type": "EmptySD3LatentImage",
"_meta": {
"title": "EmptySD3LatentImage"
}
},
"10": {
"inputs": {
"samples": [
"1",
0
],
"vae": [
"11",
0
]
},
"class_type": "VAEDecode",
"_meta": {
"title": "VAE Decode"
}
},
"11": {
"inputs": {
"vae_name": "ae.safetensors"
},
"class_type": "VAELoader",
"_meta": {
"title": "Load VAE"
}
},
"13": {
"inputs": {
"text": "A plastic Barbie doll is walking along Sunset Boulevard. Here is a list of essential elements of it:\n\nArt Deco and Streamline Moderne buildings from the 1920s and 1930s.\nThe Sunset Tower Hotel: A striking Art Deco landmark with a pale pink facade and stepped design.\nChateau Marmont: A Gothic-style castle-like hotel with white stucco walls and red tile roof.\nNumerous billboards and large advertisements, often for upcoming films or TV shows.\nPalm trees lining portions of the street",
"clip": [
"17",
1
]
},
"class_type": "CLIPTextEncode",
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"16": {
"inputs": {
"filename_prefix": "ComfyUI",
"images": [
"10",
0
]
},
"class_type": "SaveImage",
"_meta": {
"title": "Save Image"
}
},
"17": {
"inputs": {
"ckpt_name": "flux1-dev-bnb-nf4-v2.safetensors"
},
"class_type": "CheckpointLoaderNF4",
"_meta": {
"title": "CheckpointLoaderNF4"
}
}
}