GithubHelp home page GithubHelp logo

comfyui-supir's People

Contributors

kijai avatar tashaskyup avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

comfyui-supir's Issues

bfloat16 error

Getting this error how can I correct it?

Error occurred when executing SUPIR_Upscale:

"upsample_nearest2d_out_frame" not implemented for 'BFloat16'

Video upscale workflow

Hi!

Good job with this node! On the description you mentioned video upscaling and posted and example. Could you share the workflow to do it properly? I'm trying some image batch nodes but it doesn't work very well.

Thanks!

Feel free to close the issue if needed, it would be nice if you put the workflow on the readme too, for others to try too.

License conflict

Hello,

I am not a specialized lawyer but you made project license GPL (coming from original MIT which is ok) but have a "non-commercial restriction" which came from a commit three days ago. Non-commercial cannot be combined with GPL
see https://opensource.stackexchange.com/questions/7397/restrict-gplv3-to-non-commercial-use

I also made a ticket in main repo because in my opinion it is similar problem with MIT:
See: Fanghua-Yu/SUPIR#51

For your project I suggest to fork version three days ago which was MIT only from main project and do not merge other changes from main project anymore here making this as an independent project. So it should be fine.

AttributeError: 'MemoryEfficientAttnBlock' object has no attribute 'group_norm'

Hi!

Was hoping to give this a test, been running into this error and can't really figure out what's going on, perhaps you could make sense of it?

Error occurred when executing SUPIR_Upscale:

'MemoryEfficientAttnBlock' object has no attribute 'group_norm'

File "D:\ComfyUI02\ComfyUI\execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\ComfyUI\execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\ComfyUI\execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\ComfyUI\custom_nodes\ComfyUI-SUPIR\nodes.py", line 168, in process
samples = self.model.batchify_sample(resized_image[i].unsqueeze(0), captions_list, num_steps=steps, restoration_scale= restoration_scale, s_churn=s_churn,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\python_embeded\Lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\models\SUPIR_model.py", line 118, in batchify_sample
_z = self.encode_first_stage_with_denoise(x, use_sample=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\python_embeded\Lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\models\SUPIR_model.py", line 56, in encode_first_stage_with_denoise
h = self.first_stage_model.denoise_encoder(x)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\python_embeded\Lib\site-packages\torch\nn\modules\module.py", line 1518, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\python_embeded\Lib\site-packages\torch\nn\modules\module.py", line 1527, in _call_impl
return forward_call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\utils\tilevae.py", line 703, in call
return self.vae_tile_forward(x)
^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\utils\tilevae.py", line 586, in wrapper
ret = fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\python_embeded\Lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\utils\tilevae.py", line 936, in vae_tile_forward
tile = task1
^^^^^^^^^^^^^
File "D:\ComfyUI02\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\utils\tilevae.py", line 374, in
task_queue.append(('attn', lambda x, net=net: attn_forward_new_pt2_0(net, x)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ComfyUI02\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\utils\tilevae.py", line 197, in attn_forward_new_pt2_0
if self.group_norm is not None:
^^^^^^^^^^^^^^^
File "D:\ComfyUI02\python_embeded\Lib\site-packages\torch\nn\modules\module.py", line 1695, in getattr
raise AttributeError(f"'{type(self).name}' object has no attribute '{name}'")

请问大神,RuntimeError: Current CUDA Device does not support bfloat16. Please switch dtype to float16. 这个问题怎么解决?

File "K:\software\ComfyU\ComfyUI_windows_portable\ComfyUI\execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "K:\software\ComfyU\ComfyUI_windows_portable\ComfyUI\execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "K:\software\ComfyU\ComfyUI_windows_portable\ComfyUI\execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "K:\software\ComfyU\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR\nodes.py", line 102, in process
samples = self.model.batchify_sample(resized_image, captions_list, num_steps=steps, restoration_scale= restoration_scale, s_churn=s_churn,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "K:\software\ComfyU\ComfyUI_windows_portable\python_embeded\Lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "K:\software\ComfyU\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\models\SUPIR_model.py", line 118, in batchify_sample
_z = self.encode_first_stage_with_denoise(x, use_sample=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "K:\software\ComfyU\ComfyUI_windows_portable\python_embeded\Lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "K:\software\ComfyU\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\models\SUPIR_model.py", line 52, in encode_first_stage_with_denoise
with torch.autocast("cuda", dtype=self.ae_dtype):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "K:\software\ComfyU\ComfyUI_windows_portable\python_embeded\Lib\site-packages\torch\amp\autocast_mode.py", line 305, in init
raise RuntimeError(
RuntimeError: Current CUDA Device does not support bfloat16. Please switch dtype to float16.

I dont know if it worked

This is the progress:
tia@Tia ~ % pip install /Users/tia/ComfyUI/custom_nodes/ComfyUI-SUPIR/requirements.txt
/Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10: can't open file '/Users/tia/install': [Errno 2] No such file or directory

system:macos

I wander know if any workflow nodes or images can test?Thank you

Portable installation failed (importlib)

Fresh ComfyUI portable installation. Followed ComfyUI-SUPIR installation steps, copied the files in custom_nodes, and downloaded all files in models/checkpoints. Here is the log when executing SUPIR.

Error occurred when executing SUPIR_Upscale:

No module named 'ComfyUI-SUPIR'

File "C:\Users\X\Desktop\ComfyUI_windows_portable\ComfyUI\execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\X\Desktop\ComfyUI_windows_portable\ComfyUI\execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\X\Desktop\ComfyUI_windows_portable\ComfyUI\execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\X\Desktop\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR-main\nodes.py", line 180, in process
self.model = instantiate_from_config(config.model).cpu()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\X\Desktop\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR-main\sgm\util.py", line 175, in instantiate_from_config
return get_obj_from_str(config["target"])(**config.get("params", dict()))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\X\Desktop\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR-main\sgm\util.py", line 185, in get_obj_from_str
return getattr(importlib.import_module(module, package='ComfyUI-SUPIR'), cls)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "importlib_init_.py", line 126, in import_module
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1126, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1126, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1126, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1140, in _find_and_load_unlocked

No module named 'cv2'

Traceback (most recent call last):
File "E:\ComfyUI_windows_portable_nvidia_cu121_or_cpu\ComfyUI_windows_portable\ComfyUI\nodes.py", line 1887, in load_custom_node
module_spec.loader.exec_module(module)
File "", line 940, in exec_module
File "", line 241, in call_with_frames_removed
File "E:\ComfyUI_windows_portable_nvidia_cu121_or_cpu\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR_init
.py", line 1, in
from .nodes import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
File "E:\ComfyUI_windows_portable_nvidia_cu121_or_cpu\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR\nodes.py", line 13, in
from .SUPIR.util import convert_dtype, load_state_dict
File "E:\ComfyUI_windows_portable_nvidia_cu121_or_cpu\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\util.py", line 4, in
import cv2
ModuleNotFoundError: No module named 'cv2'

Cannot import E:\ComfyUI_windows_portable_nvidia_cu121_or_cpu\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR module for custom nodes: No module named 'cv2'

I already tried most fixes that I found on the web

White orb artifacts when upscaling merged dreambooth trained jug v9 checkpoints (needs fp16 fix vae selection option?)

I had this issue before where I would dreambooth train over juggernaut v9 and do a model merge, with another db trained checkpoint. (only an issue when jug v9 is involved with their baked vae)

White orbs would appear. To fix it I use the SDXL fp16 fixed vae. it would also fix the orange haze.

The problem is I don't see any way to change the VAE being used in the supir node. I am not sure if it's just using the baked vae in the model. Is there any way to specify a vae in the node? I would prefer not to retrain a bunch of the models, as they came out before jugg v9, but I merge a little juggernaut at a very low 0.05 and it improves the db quality a ton.

I am unsure if fp16 supported for supir though, it seems like it's using bf16 when I checked the nodes.py?

Here's what happens when using any dreambooth trained checkpoint that has any juggernaut v9 merges and upscaling with supir (this is not the subject):

Low res:
test
Upscaled:
testupscale-jug-merged-db-checkpoint

Comfyui crashes after initializing embedder

Hey!
On a fresh ComfyUI install, whenever I run the script, it seems to load the FrozenCLIPembedder, and then stop the script. What could be causing this?

Total VRAM 24564 MB, total RAM 32693 MB
xformers version: 0.0.24
Set vram state to: NORMAL_VRAM
Device: cuda:0 NVIDIA GeForce RTX 4090 : cudaMallocAsync
VAE dtype: torch.bfloat16
Using xformers cross attention

Import times for custom nodes:
3.3 seconds: E:\AI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR

Starting server

To see the GUI go to: http://127.0.0.1:8188
got prompt
Diffusion using bf16
Encoder using bf16
Building a Downsample layer with 2 dims.
--> settings are:
in-chn: 320, out-chn: 320, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
Building a Downsample layer with 2 dims.
--> settings are:
in-chn: 640, out-chn: 640, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
Initialized embedder #0: FrozenCLIPEmbedder with 123060480 params. Trainable: False

E:\AI\ComfyUI_windows_portable>pause
Press any key to continue . . .

comfy
Thanks for your help already ^^

OutOfMemory with 12GB VRAM

It was said in the original repo, and you also thought it was the case, that it is possible to get running within 12GB VRAM, but I just can't get it to work with this wrapper.

I downloaded all the models, resolved issues with xformers and pytorch+cuda, used an integrated GPU for my display, fiddled with the settings (use_tiled_vae, diffusion_dtype and encoder_dtype) and input a test 512x512 image. Am I missing something?

** Platform: Windows
** Python version: 3.10.13

Total VRAM 12288 MB, total RAM 65309 MB
xformers version: 0.0.23.post1
Set vram state to: NORMAL_VRAM
Device: cuda:0 NVIDIA GeForce RTX 3060 : cudaMallocAsync
VAE dtype: torch.bfloat16
Using xformers cross attention

...
...
...

Diffusion using using bf16
Encoder using using bf16
Building a Downsample layer with 2 dims.
  --> settings are:
 in-chn: 320, out-chn: 320, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
Building a Downsample layer with 2 dims.
  --> settings are:
 in-chn: 640, out-chn: 640, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
Initialized embedder #0: FrozenCLIPEmbedder with 123060480 params. Trainable: False
Initialized embedder #1: FrozenOpenCLIPEmbedder2 with 694659841 params. Trainable: False
Initialized embedder #2: ConcatTimestepEmbedderND with 0 params. Trainable: False
Initialized embedder #3: ConcatTimestepEmbedderND with 0 params. Trainable: False
Initialized embedder #4: ConcatTimestepEmbedderND with 0 params. Trainable: False
making attention of type 'vanilla-xformers' with 512 in_channels
building MemoryEfficientAttnBlock with 512 in_channels...
Working with z of shape (1, 4, 32, 32) = 4096 dimensions.
making attention of type 'vanilla-xformers' with 512 in_channels
building MemoryEfficientAttnBlock with 512 in_channels...
Building a Downsample layer with 2 dims.
  --> settings are:
 in-chn: 320, out-chn: 320, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
Building a Downsample layer with 2 dims.
  --> settings are:
 in-chn: 640, out-chn: 640, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
Loaded state_dict from [C:\Users\User\ComfyUI\models\checkpoints\SUPIR-v0Q-001.ckpt]
Loaded state_dict from [C:\Users\User\stable-diffusion-webui\models\Stable-diffusion\xl\realvisXLv3.0_v30Bakedvae.safetensors]
ERROR:root:!!! Exception during processing !!!
ERROR:root:Traceback (most recent call last):
  File "C:\Users\User\ComfyUI\execution.py", line 152, in recursive_execute
    output_data, output_ui = get_output_data(obj, input_data_all)
  File "C:\Users\User\ComfyUI\execution.py", line 82, in get_output_data
    return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
  File "C:\Users\User\ComfyUI\execution.py", line 75, in map_node_over_list
    results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
  File "C:\Users\User\ComfyUI\custom_nodes\ComfyUI-SUPIR\nodes.py", line 142, in process
    self.model.to(device).to(dtype)
  File "C:\Users\User\anaconda3\envs\comfyui\lib\site-packages\lightning_fabric\utilities\device_dtype_mixin.py", line 54, in to
    return super().to(*args, **kwargs)
  File "C:\Users\User\anaconda3\envs\comfyui\lib\site-packages\torch\nn\modules\module.py", line 1160, in to
    return self._apply(convert)
  File "C:\Users\User\anaconda3\envs\comfyui\lib\site-packages\torch\nn\modules\module.py", line 810, in _apply
    module._apply(fn)
  File "C:\Users\User\anaconda3\envs\comfyui\lib\site-packages\torch\nn\modules\module.py", line 810, in _apply
    module._apply(fn)
  File "C:\Users\User\anaconda3\envs\comfyui\lib\site-packages\torch\nn\modules\module.py", line 810, in _apply
    module._apply(fn)
  [Previous line repeated 6 more times]
  File "C:\Users\User\anaconda3\envs\comfyui\lib\site-packages\torch\nn\modules\module.py", line 833, in _apply
    param_applied = fn(param)
  File "C:\Users\User\anaconda3\envs\comfyui\lib\site-packages\torch\nn\modules\module.py", line 1158, in convert
    return t.to(device, dtype if t.is_floating_point() or t.is_complex() else None, non_blocking)
torch.cuda.OutOfMemoryError: Allocation on device 0 would exceed allowed memory. (out of memory)
Currently allocated     : 11.31 GiB
Requested               : 6.25 MiB
Device limit            : 12.00 GiB
Free (according to CUDA): 0 bytes
PyTorch limit (set by user-supplied memory fraction)
                        : 17179869184.00 GiB

The quality doesn't feel as good as the replicate version

I apologize for this question, I have done a lot of testing and follow your daily updates closely. I keep updating and I want to have quality like the replicate version or the one-click install on Patreon. I really like your versions because they are flexible on comfy UI, easy to mix with other features, but I have done many tests and the results are far from the input image.

No longer working on MPS - 'aten::upsample_bicubic2d.out' is not currently implemented for the MPS device.

I get this error on every run now, some commit in the last few days or so must have changed something. I tried changing the bicubic on line 213 of nodes.py to bilinear, that runs - however output is then just pure noise.

Any advice?

Error occurred when executing SUPIR_Upscale:

The operator 'aten::upsample_bicubic2d.out' is not currently implemented for the MPS device. If you want this op to be added in priority during the prototype phase of this feature, please comment on https://github.com/pytorch/pytorch/issues/77764. As a temporary fix, you can set the environment variable `PYTORCH_ENABLE_MPS_FALLBACK=1` to use the CPU as a fallback for this op. WARNING: this will be slower than running natively on MPS.

File "/Users/s/ComfyUI/execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/s/ComfyUI/execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/s/ComfyUI/execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/s/ComfyUI/custom_nodes/ComfyUI-SUPIR/nodes.py", line 213, in process
resized_image = F.interpolate(image, size=(new_height, new_width), mode='bicubic', align_corners=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/s/miniconda3/lib/python3.11/site-packages/torch/nn/functional.py", line 4035, in interpolate
return torch._C._nn.upsample_bicubic2d(input, output_size, align_corners, scale_factors)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Use_tile_sampling not working

upscaling pictures with use_tiile_resampling is not working. Normal upscaling is working fine and I can do 3 times upscale on a 1024 by 1024 picture, but if I select tiile resampling and go 4 or 5 times upscaling, SUPIR works for some time and then comfyUI stops working. If I select tile resampling and select 2x on a 1024px picture then it works but takes longer than if I just upscale 2x on a 1024px picture with tile resampling. I'll attach my settings and terminal. I'm using runpod with a 20gb gpu.
Screenshot 2024-03-05 173607
Screenshot 2024-03-05 175423

Xformer version not compatible with comfyUI torch version

WARNING[XFORMERS]: xFormers can't load C++/CUDA extensions. xFormers was built for:
PyTorch 2.2.0+cu121 with CUDA 1201 (you have 2.1.2+cu121)
Python 3.11.7 (you have 3.11.6)

I tried upgrading Torch for Comfy and it crashed comfy completely

RuntimeError: Input type (float) and bias type (struct c10::Half) should be the same

Im getting this error. am I setting up anything wrong?

--> settings are:
in-chn: 640, out-chn: 640, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
Initialized embedder #0: FrozenCLIPEmbedder with 123060480 params. Trainable: False
Initialized embedder #1: FrozenOpenCLIPEmbedder2 with 694659841 params. Trainable: False
Initialized embedder #2: ConcatTimestepEmbedderND with 0 params. Trainable: False
Initialized embedder #3: ConcatTimestepEmbedderND with 0 params. Trainable: False
Initialized embedder #4: ConcatTimestepEmbedderND with 0 params. Trainable: False
making attention of type 'vanilla-xformers' with 512 in_channels
building MemoryEfficientAttnBlock with 512 in_channels...
Working with z of shape (1, 4, 32, 32) = 4096 dimensions.
making attention of type 'vanilla-xformers' with 512 in_channels
building MemoryEfficientAttnBlock with 512 in_channels...
Building a Downsample layer with 2 dims.
--> settings are:
in-chn: 320, out-chn: 320, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
Building a Downsample layer with 2 dims.
--> settings are:
in-chn: 640, out-chn: 640, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
Attempting to load SUPIR model: [Y:\Automatic1111_130\stable-diffusion-webui\models/Stable-diffusion\Supir\SUPIR-v0Q.ckpt]
Loaded state_dict from [Y:\Automatic1111_130\stable-diffusion-webui\models/Stable-diffusion\Supir\SUPIR-v0Q.ckpt]
Attempting to load SDXL model: [Y:\Automatic1111_130\stable-diffusion-webui\models/Stable-diffusion\SDXL\dreamshaperXL10_alpha2Xl10.safetensors]
Loaded state_dict from [Y:\Automatic1111_130\stable-diffusion-webui\models/Stable-diffusion\SDXL\dreamshaperXL10_alpha2Xl10.safetensors]
['']
Y:\AI\ComfyUI_windows_portable03\python_embeded\Lib\site-packages\lightning_fabric\utilities\seed.py:51: 725389782861152 is not in bounds, numpy accepts from 0 to 4294967295
Seed set to 3919478599
[Tiled VAE]: input_size: torch.Size([1, 3, 1024, 1024]), tile_size: 512, padding: 32
[Tiled VAE]: split to 2x2 = 4 tiles. Optimal tile size 480x480, original tile size 512x512
[Tiled VAE]: Executing Encoder Task Queue: 0%| | 0/364 [00:00<?, ?it/s]ERROR:root:!!! Exception during processing !!!
ERROR:root:Traceback (most recent call last):
File "Y:\AI\ComfyUI_windows_portable03\ComfyUI\execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\ComfyUI\execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\ComfyUI\execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\ComfyUI\custom_nodes\ComfyUI-SUPIR\nodes.py", line 180, in process
samples = self.model.batchify_sample(resized_image[i].unsqueeze(0), captions_list, num_steps=steps, restoration_scale=restoration_scale, s_churn=s_churn,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\python_embeded\Lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\models\SUPIR_model.py", line 125, in batchify_sample
_z = self.encode_first_stage_with_denoise(x, use_sample=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\python_embeded\Lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\models\SUPIR_model.py", line 61, in encode_first_stage_with_denoise
h = self.first_stage_model.denoise_encoder(x)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\python_embeded\Lib\site-packages\torch\nn\modules\module.py", line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\python_embeded\Lib\site-packages\torch\nn\modules\module.py", line 1520, in _call_impl
return forward_call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\utils\tilevae.py", line 703, in call
return self.vae_tile_forward(x)
^^^^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\utils\tilevae.py", line 586, in wrapper
ret = fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\python_embeded\Lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\utils\tilevae.py", line 936, in vae_tile_forward
tile = task1
^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\python_embeded\Lib\site-packages\torch\nn\modules\module.py", line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\python_embeded\Lib\site-packages\torch\nn\modules\module.py", line 1520, in _call_impl
return forward_call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\python_embeded\Lib\site-packages\torch\nn\modules\conv.py", line 460, in forward
return self._conv_forward(input, self.weight, self.bias)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "Y:\AI\ComfyUI_windows_portable03\python_embeded\Lib\site-packages\torch\nn\modules\conv.py", line 456, in _conv_forward
return F.conv2d(input, weight, bias, self.stride,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: Input type (float) and bias type (struct c10::Half) should be the same

Issues running with 16gb of vram (oom)

Hey guys, when trying to run this in a more or less simple workflow, the processing stops while loading the models with an OOM error:

ERROR:root:!!! Exception during processing !!!
ERROR:root:Traceback (most recent call last):
  File "/config/05-comfy-ui/ComfyUI/execution.py", line 152, in recursive_execute
    output_data, output_ui = get_output_data(obj, input_data_all)
  File "/config/05-comfy-ui/ComfyUI/execution.py", line 82, in get_output_data
    return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
  File "/config/05-comfy-ui/ComfyUI/custom_nodes/ComfyUI-0246/utils.py", line 381, in new_func
    res_value = old_func(*final_args, **kwargs)
  File "/config/05-comfy-ui/ComfyUI/execution.py", line 75, in map_node_over_list
    results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
  File "/config/05-comfy-ui/ComfyUI/custom_nodes/ComfyUI-SUPIR/nodes.py", line 212, in process
    self.model.init_tile_vae(encoder_tile_size=encoder_tile_size_pixels, decoder_tile_size=decoder_tile_size_latent)
AttributeError: 'SUPIR_Upscale' object has no attribute 'model'

Failed to move model to device
Allocation on device 0 would exceed allowed memory. (out of memory)
Currently allocated     : 15.44 GiB
Requested               : 4.50 MiB
Device limit            : 15.70 GiB
Free (according to CUDA): 20.94 MiB
PyTorch limit (set by user-supplied memory fraction)
                        : 17179869184.00 GiB
Prompt executed in 38.67 seconds

This is using a 4060ti with 16gb of vram.

Here is also the workflow if someone is interested.
Simple-Supir_wFaceDetailer.json

I tried it with different resolutions for the image and even went down to 265x265 without a difference

Is it possible to have model loading as a separate input node?

Is it possible to have model loading as a separate input node, so that it can share the model loading node with previous workflows such as t2i ?

Also, I don't know what happens between the following two steps, it takes so long (about 20+ seconds on my 4090)。
image

thx

Currently this plugin does not support AMD graphics cards?

Error occurred when executing SUPIR_Upscale:

No operator found for memory_efficient_attention_forward with inputs:
query : shape=(1, 16384, 1, 512) (torch.bfloat16)
key : shape=(1, 16384, 1, 512) (torch.bfloat16)
value : shape=(1, 16384, 1, 512) (torch.bfloat16)
attn_bias :
p : 0.0
decoderF is not supported because:
max(query.shape[-1] != value.shape[-1]) > 128
xFormers wasn't build with CUDA support
attn_bias type is
operator wasn't built - see python -m xformers.info for more info
[email protected] is not supported because:
max(query.shape[-1] != value.shape[-1]) > 256
xFormers wasn't build with CUDA support
operator wasn't built - see python -m xformers.info for more info
tritonflashattF is not supported because:
max(query.shape[-1] != value.shape[-1]) > 128
xFormers wasn't build with CUDA support
operator wasn't built - see python -m xformers.info for more info
triton is not available
Only work on pre-MLIR triton for now
cutlassF is not supported because:
xFormers wasn't build with CUDA support
operator wasn't built - see python -m xformers.info for more info
smallkF is not supported because:
max(query.shape[-1] != value.shape[-1]) > 32
xFormers wasn't build with CUDA support
dtype=torch.bfloat16 (supported: {torch.float32})
operator wasn't built - see python -m xformers.info for more info
unsupported embed per head: 512

Running on 8G vram, fp8?

Is there any hope of running this in 8G vram?

I've tried fp8, which if it works in fp16 in 10G should fit on 8G, but it ends up throwing a out of memory error too.

No module named 'ComfyUI-SUPIR'

installed all in comfy portable - all nodes show, when I run, I get error in GUI pop:

Error occurred when executing SUPIR_Upscale:
No module named 'ComfyUI-SUPIR'
File "w:\ComfyUI\ComfyUI_windows_portable\ComfyUI\execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "w:\ComfyUI\ComfyUI_windows_portable\ComfyUI\execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "w:\ComfyUI\ComfyUI_windows_portable\ComfyUI\execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "W:\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR-main\nodes.py", line 148, in process
self.model = instantiate_from_config(config.model).cpu()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "W:\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR-main\sgm\util.py", line 175, in instantiate_from_config
return get_obj_from_str(config["target"])(**config.get("params", dict()))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "W:\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR-main\sgm\util.py", line 185, in get_obj_from_str
return getattr(importlib.import_module(module, package='ComfyUI-SUPIR'), cls)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "importlib_init_.py", line 126, in import_module
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1126, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1126, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1126, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1140, in _find_and_load_unlocked

error in prompt is sim:
moondream: loading model vikhyatk/moondream1, please stand by....
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
Diffusion using bf16
Encoder using bf16
ERROR:root:!!! Exception during processing !!!
ERROR:root:Traceback (most recent call last):
File "w:\ComfyUI\ComfyUI_windows_portable\ComfyUI\execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "w:\ComfyUI\ComfyUI_windows_portable\ComfyUI\execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "w:\ComfyUI\ComfyUI_windows_portable\ComfyUI\execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "W:\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR-main\nodes.py", line 148, in process
self.model = instantiate_from_config(config.model).cpu()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "W:\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR-main\sgm\util.py", line 175, in instantiate_from_config
return get_obj_from_str(config["target"])(**config.get("params", dict()))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "W:\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR-main\sgm\util.py", line 185, in get_obj_from_str
return getattr(importlib.import_module(module, package='ComfyUI-SUPIR'), cls)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "importlib_init_.py", line 126, in import_module
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1126, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1126, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1126, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1140, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'ComfyUI-SUPIR'

Prompt executed in 10.25 seconds
ERROR:root:!!! Exception during processing !!!
ERROR:root:Traceback (most recent call last):
File "w:\ComfyUI\ComfyUI_windows_portable\ComfyUI\execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "w:\ComfyUI\ComfyUI_windows_portable\ComfyUI\execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "w:\ComfyUI\ComfyUI_windows_portable\ComfyUI\execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "W:\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR-main\nodes.py", line 148, in process
self.model = instantiate_from_config(config.model).cpu()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "W:\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR-main\sgm\util.py", line 175, in instantiate_from_config
return get_obj_from_str(config["target"])(**config.get("params", dict()))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "W:\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR-main\sgm\util.py", line 185, in get_obj_from_str
return getattr(importlib.import_module(module, package='ComfyUI-SUPIR'), cls)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "importlib_init_.py", line 126, in import_module
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1126, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1126, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1126, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1140, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'ComfyUI-SUPIR'

comfy crashes after embedder init - more info

crashes comfy completely, console shows crash and pauses for close.
open_clip_pytorch_model.bin loaded into model\clip with chkt_pth.py edited to show:
SDXL_CLIP2_CKPT_PTH = "W:\ComfyUI\ComfyUI_windows_portable\ComfyUI\models\clip\open_clip_pytorch_model.bin"
(the location of the clip chkpt).

I saw the other bug report, but it indicated chkpt clip wasnt found, should be according to yet another report as I read that before install . . .

Encoder using bf16
Building a Downsample layer with 2 dims.
--> settings are:
in-chn: 320, out-chn: 320, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
Building a Downsample layer with 2 dims.
--> settings are:
in-chn: 640, out-chn: 640, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
Initialized embedder #0: FrozenCLIPEmbedder with 123060480 params. Trainable: False

Upscaled image has a different width:height ratio than original image

I've noticed that on certain images the upscaled image has a different ratio than the original one so that the resulting image looks very slightly stretched.

It has happened when upscaling an image of size 696x768 by 2x. The resulting image size is 1344x1536, which has less width than 2x696 so that the image looks vertically stretched. I can tell it is not cropping the resulting image but just making it narrower. So far it has only happened with the width of the image; it has never happened with the height.

Error occurred when executing SUPIR_Upscale:

I get this error when executing node looks like it eats a lot of memory.

Error occurred when executing SUPIR_Upscale:

Allocation on device 0 would exceed allowed memory. (out of memory)
Currently allocated : 11.99 GiB
Requested : 63.00 MiB
Device limit : 6.00 GiB
Free (according to CUDA): 0 bytes
PyTorch limit (set by user-supplied memory fraction)
: 17179869184.00 GiB

File "K:\ComfyUI\ComfyUI_Ex\ComfyUI\execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "K:\ComfyUI\ComfyUI_Ex\ComfyUI\execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "K:\ComfyUI\ComfyUI_Ex\ComfyUI\execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "K:\ComfyUI\ComfyUI_Ex\ComfyUI\custom_nodes\ComfyUI-SUPIR\nodes.py", line 148, in process
image, = ImageScaleBy.upscale(self, image, resize_method, scale_by)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "K:\ComfyUI\ComfyUI_Ex\ComfyUI\nodes.py", line 1620, in upscale
s = comfy.utils.common_upscale(samples, width, height, upscale_method, "disabled")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "K:\ComfyUI\ComfyUI_Ex\ComfyUI\comfy\utils.py", line 416, in common_upscale
return lanczos(s, width, height)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "K:\ComfyUI\ComfyUI_Ex\ComfyUI\comfy\utils.py", line 395, in lanczos
return result.to(samples.device, samples.dtype)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

requirement installed, but...

Traceback (most recent call last):
  File "E:\AI\ComfyUI_windows_portable\ComfyUI\nodes.py", line 1887, in load_custom_node
    module_spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "E:\AI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR\__init__.py", line 1, in <module>
    from .nodes import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
  File "E:\AI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR\nodes.py", line 11, in <module>
    from .sgm.util import instantiate_from_config
  File "E:\AI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR\sgm\__init__.py", line 1, in <module>
    from .models import AutoencodingEngine, DiffusionEngine
  File "E:\AI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR\sgm\models\__init__.py", line 1, in <module>
    from .autoencoder import AutoencodingEngine
  File "E:\AI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR\sgm\models\autoencoder.py", line 6, in <module>
    import pytorch_lightning as pl
  File "E:\AI\ComfyUI_windows_portable\python_embeded\Lib\site-packages\pytorch_lightning\__init__.py", line 27, in <module>
    from pytorch_lightning.callbacks import Callback  # noqa: E402
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\AI\ComfyUI_windows_portable\python_embeded\Lib\site-packages\pytorch_lightning\callbacks\__init__.py", line 14, in <module>
    from pytorch_lightning.callbacks.batch_size_finder import BatchSizeFinder
  File "E:\AI\ComfyUI_windows_portable\python_embeded\Lib\site-packages\pytorch_lightning\callbacks\batch_size_finder.py", line 26, in <module>
    from pytorch_lightning.callbacks.callback import Callback
  File "E:\AI\ComfyUI_windows_portable\python_embeded\Lib\site-packages\pytorch_lightning\callbacks\callback.py", line 22, in <module>
    from pytorch_lightning.utilities.types import STEP_OUTPUT
  File "E:\AI\ComfyUI_windows_portable\python_embeded\Lib\site-packages\pytorch_lightning\utilities\__init__.py", line 18, in <module>
    from lightning_fabric.utilities import (
ImportError: cannot import name 'measure_flops' from 'lightning_fabric.utilities' (E:\AI\ComfyUI_windows_portable\python_embeded\Lib\site-packages\lightning_fabric\utilities\__init__.py)

Cannot import E:\AI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-SUPIR module for custom nodes: cannot import name 'measure_flops' from 'lightning_fabric.utilities' (E:\AI\ComfyUI_windows_portable\python_embeded\Lib\site-packages\lightning_fabric\utilities\__init__.py)

process crashed with code 3221225477 (0xC0000005)

[process crashed with code 3221225477 (0xC0000005)]
The following is an analysis of the exit codes. This may not be accurate and it is for your reference only.
System exit code name: ACCESS_VIOLATION
System exit code description: The instruction at 0x%p referenced memory at 0x%p. The memory could not be %s.

Crash thread traceback:
Windows fatal exception: access violation

Stack (most recent call first):
File "E:\ComfyUI-aki-v1\python\lib\site-packages\torch\storage.py", line 314 in getitem
File "E:\ComfyUI-aki-v1\python\lib\site-packages\safetensors\torch.py", line 310 in load_file
File "E:\ComfyUI-aki-v1\python\lib\site-packages\transformers\modeling_utils.py", line 512 in load_state_dict
File "E:\ComfyUI-aki-v1\python\lib\site-packages\transformers\modeling_utils.py", line 3306 in from_pretrained
File "E:\ComfyUI-aki-v1\custom_nodes\ComfyUI-SUPIR\sgm\modules\encoders\modules.py", line 465 in init
File "E:\ComfyUI-aki-v1\custom_nodes\ComfyUI-SUPIR\sgm\util.py", line 175 in instantiate_from_config
File "E:\ComfyUI-aki-v1\custom_nodes\ComfyUI-SUPIR\sgm\modules\encoders\modules.py", line 91 in init
File "E:\ComfyUI-aki-v1\custom_nodes\ComfyUI-SUPIR\sgm\util.py", line 175 in instantiate_from_config
File "E:\ComfyUI-aki-v1\custom_nodes\ComfyUI-SUPIR\sgm\models\diffusion.py", line 63 in init
File "E:\ComfyUI-aki-v1\custom_nodes\ComfyUI-SUPIR\SUPIR\models\SUPIR_model.py", line 17 in init
File "E:\ComfyUI-aki-v1\custom_nodes\ComfyUI-SUPIR\sgm\util.py", line 175 in instantiate_from_config
File "E:\ComfyUI-aki-v1\custom_nodes\ComfyUI-SUPIR\nodes.py", line 181 in process
File "E:\ComfyUI-aki-v1\execution.py", line 75 in map_node_over_list
File "E:\ComfyUI-aki-v1\execution.py", line 82 in get_output_data
File "E:\ComfyUI-aki-v1\execution.py", line 152 in recursive_execute
File "E:\ComfyUI-aki-v1\execution.py", line 135 in recursive_execute
File "E:\ComfyUI-aki-v1\execution.py", line 392 in execute
File "E:\ComfyUI-aki-v1\custom_nodes\rgthree-comfy_init_.py", line 209 in rgthree_execute
File "E:\ComfyUI-aki-v1\main.py", line 111 in prompt_worker
File "E:\ComfyUI-aki-v1\python\lib\threading.py", line 953 in run
File "<enhanced_experience vendors.sentry_sdk.integrations.threading>", line 70 in run
File "E:\ComfyUI-aki-v1\python\lib\threading.py", line 1016 in _bootstrap_inner
File "E:\ComfyUI-aki-v1\python\lib\threading.py", line 973 in _bootstrap

Note: Exit codes and their descriptions are not sufficient to
Snipaste_2024-03-07_16-59-10
diagnose the problem! Please upload the complete diagnostic log with codes.

Computer: 32 memory 8GB graphics card

module 'comfy.model_management' has no attribute 'should_use_bf16'

He Kijai, I'm getting this error:

Error occurred when executing SUPIR_Upscale:

module 'comfy.model_management' has no attribute 'should_use_bf16'

File "F:\COMFY\ComfyUI\execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "F:\COMFY\ComfyUI\execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "F:\COMFY\ComfyUI\execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "F:\COMFY\ComfyUI\custom_nodes\ComfyUI-SUPIR\nodes.py", line 96, in process
if comfy.model_management.should_use_bf16():
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Can you please advise?

Attention mode 'softmax-xformers' is not available

I get the following error.

It says I need Pytorch >= 2.0 but it seems I'm already running 2.1.2

Attention mode 'softmax-xformers' is not available. Falling back to native attention. This is not a problem in Pytorch >= 2.0. FYI, you are running with PyTorch version 2.1.2+cu121

Quality much worse than example images

A couple of days ago I was testing Supir online running in "replicate". At the end of the trial period and after the good results I decided to install it on my PC. I found this version and installed it very easily. It works very well with many images, but with others the quality is much worse than the replicate version or the example images. It especially fails with people's faces (like this moment of this video) or with details that are difficult to see (like this other moment), while the replicate version was almost perfect with faces and small details. I have tried to copy the values ​​of replicate in SUPIR-COMFYUI but the result varies a lot. I see that in replicate it has 2 stages and in COMFYUI it has only 1 stage. As an SDXL model I am using the base SDXL model, but I have also tried Juggernaut XL and RunDiffusion XL, obtaining worse results.

I want to try the gradio version with LLava, but I'm having problems getting it to work.

I have a 4080 16GB VRAM and 32GB RAM. I can render images without problems up to 2500x2500.

What could be the problem?

Crashes Comfy after Loaded state_dict from [....0F.ckpt]

Loading 1 new model
Diffusion using bf16
Encoder using bf16
Building a Downsample layer with 2 dims.
--> settings are:
in-chn: 320, out-chn: 320, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
Building a Downsample layer with 2 dims.
--> settings are:
in-chn: 640, out-chn: 640, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
Initialized embedder #0: FrozenCLIPEmbedder with 123060480 params. Trainable: False
Initialized embedder #1: FrozenOpenCLIPEmbedder2 with 694659841 params. Trainable: False
Initialized embedder #2: ConcatTimestepEmbedderND with 0 params. Trainable: False
Initialized embedder #3: ConcatTimestepEmbedderND with 0 params. Trainable: False
Initialized embedder #4: ConcatTimestepEmbedderND with 0 params. Trainable: False
making attention of type 'vanilla-xformers' with 512 in_channels
building MemoryEfficientAttnBlock with 512 in_channels...
Working with z of shape (1, 4, 32, 32) = 4096 dimensions.
making attention of type 'vanilla-xformers' with 512 in_channels
building MemoryEfficientAttnBlock with 512 in_channels...
Building a Downsample layer with 2 dims.
--> settings are:
in-chn: 320, out-chn: 320, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
constructing SpatialTransformer of depth 2 w/ 640 channels and 10 heads
Building a Downsample layer with 2 dims.
--> settings are:
in-chn: 640, out-chn: 640, kernel-size: 3, stride: 2, padding: 1
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
constructing SpatialTransformer of depth 10 w/ 1280 channels and 20 heads
Loaded state_dict from [D:\Program Files\Visions of Chaos\Machine Learning Files\Text To Image\ComfyUI\ComfyUI\models\checkpoints\SUPIR\v0F.ckpt]

I was able to reproduce in a fresh install of portable as well as my current install through Visions of Chaos.
I've gotten it to work on smaller 512p images, but even 1.1x on a 1024 image didn't work.
0Q and 0F models both.
Freshly updated and reinstalled node from most recent commit.
3090, 24GB VRAM

'MemoryEfficientAttnBlock' object has no attribute 'group_norm'

Any suggestions on the error below?

[Tiled VAE]: Executing Encoder Task Queue: 84%|███████████████████████████▋ | 1526/1820 [00:07<00:00, 1131.84it/s]ERROR:root:!!! Exception during processing !!!
ERROR:root:Traceback (most recent call last):
File "D:\SD\ComfyUI\ComfyUI\execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\ComfyUI\execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\ComfyUI\execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\ComfyUI\custom_nodes\ComfyUI-SUPIR\nodes.py", line 126, in process
samples = self.model.batchify_sample(resized_image[i].unsqueeze(0), captions_list, num_steps=steps, restoration_scale= restoration_scale, s_churn=s_churn,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\python_embeded\Lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\models\SUPIR_model.py", line 118, in batchify_sample
_z = self.encode_first_stage_with_denoise(x, use_sample=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\python_embeded\Lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\models\SUPIR_model.py", line 56, in encode_first_stage_with_denoise
h = self.first_stage_model.denoise_encoder(x)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\python_embeded\Lib\site-packages\torch\nn\modules\module.py", line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\python_embeded\Lib\site-packages\torch\nn\modules\module.py", line 1520, in _call_impl
return forward_call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\utils\tilevae.py", line 703, in call
return self.vae_tile_forward(x)
^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\utils\tilevae.py", line 586, in wrapper
ret = fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\python_embeded\Lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\utils\tilevae.py", line 938, in vae_tile_forward
tile = task1
^^^^^^^^^^^^^
File "D:\SD\ComfyUI\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\utils\tilevae.py", line 374, in
task_queue.append(('attn', lambda x, net=net: attn_forward_new_pt2_0(net, x)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\ComfyUI\custom_nodes\ComfyUI-SUPIR\SUPIR\utils\tilevae.py", line 197, in attn_forward_new_pt2_0
if self.group_norm is not None:
^^^^^^^^^^^^^^^
File "D:\SD\ComfyUI\python_embeded\Lib\site-packages\torch\nn\modules\module.py", line 1688, in getattr
raise AttributeError(f"'{type(self).name}' object has no attribute '{name}'")
AttributeError: 'MemoryEfficientAttnBlock' object has no attribute 'group_norm'

Prompt executed in 8.43 seconds
[Tiled VAE]: Executing Encoder Task Queue: 85%|████████████████████████████▊ | 1541/1820 [00:07<00:01, 202.36it/s]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.