Package profile
- Status
- Verified
- Publisher
- @kijai
- Source
- GitHub
- Stars
- 6.7K
README
ComfyUI wrapper nodes for WanVideo and related models.
Memory use update (again)
I've made everythign less reliant on torch.compile for VRAM efficiency, so things should work better even without it. Also figured workaround for some issues when using compile that made first run use drastically more VRAM, issue I battled with myself a lot.
Update notification that can affect memory use in old workflows
In a recent update I changed how unmerged LoRA weights are handled:
Previously mostly due to my laziness they were always loaded from RAM when used, this was of course inefficient and also made using torch.compile for LoRA applying difficult, thus forcing a graph break when using unmerged LoRAs.
Now the LoRA weights are assigned as buffers to the corresponding modules, so they are part of the blocks and obey the block swapping unifying the offloading and allowing LoRA weights to benefit from the prefetch feature for async offoading. Downside is that this means if you did not use block swap, you will see increased memory use as the LoRAs are part of the model and all on VRAM.
If you use block swap, the LoRAs are swapped along the rest of the block, but the block size is now larger, this means you may have to compensate with couple of more blocks swapped.
Example situation: you use 1GB LoRA unmerged and swap 20 blocks on 14B model, we can divide the LoRA size by block count, single block grows by 25MB, 20 blocks grow by 500MB, so your VRAM usage would be 500MB more than before, to compensate you swap 2 more blocks.
Unrelated other VRAM issue with torch.compile
After any update that modifies the model code and when using torch.compile it's common to run into issues with VRAM, this can be caused by using older pytorch/triton version without latest compile fixes, and/or from old triton caches, mostly in Windows. This manifests in the issue that first run of new input size may have drastically increased memory use, which can clear from simply running it again, and once cached, not manifest again. Again I've only seen this happen in Windows.
To clear your Triton cache you can delete the contents of following (default) folders:
C:\Users\<username>\.triton
C:\Users\<username>\AppData\Local\Temp\torchinductor_<username>
Note: Due to the stupid amount of bots or people thinking this is some of video generation service, I've blocked new accounts from posting issues for now.
WORK IN PROGRESS (perpetually)
Why should I use custom nodes when WanVideo works natively?
Short answer: Unless it's a model/feature not available yet on native, you shouldn't.
Long answer: Due to the complexity of ComfyUI core code, and my lack of coding experience, in many cases it's far easier and faster to implement new models and features to a standalone wrapper, so this is a way to test things relatively quickly. I consider this my personal sandbox (which is obviously open for everyone) to play with without having to worry about compability issues etc, but as such this code is always work in progress and prone to have issues. Also not all new models end up being worth the trouble to implement in core Comfy, though I've also made some patcher nodes to allow using them in native workflows, such as the ATI node available in this wrapper. This is also the end goal, idea isn't to compete or even offer alternatives to everything available in native workflows. All that said (this is clearly not a sales pitch) I do appreciate everyone using these nodes to explore new releases and possibilities with WanVideo.
Installation
- Clone this repo into
custom_nodesfolder. - Install dependencies:
pip install -r requirements.txtor if you use the portable install, run this in ComfyUI_windows_portable -folder:
python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\ComfyUI-WanVideoWrapper\requirements.txt
Models
Nodes in this pack
100 nodes
Nodes in this pack
100 nodes- CreateCFGScheduleFloatList
- CreateScheduleFloatList
- DownloadAndLoadNLFModel
- DownloadAndLoadWav2VecModel
- DrawArcFaceLandmarks
- DrawGaussianNoiseOnImage
- DrawNLFPoses
- DummyComfyWanModelObject
- ExtractStartFramesForContinuations
- FaceMaskFromPoseKeypoints
- FantasyPortraitFaceDetector
- FantasyPortraitModelLoader
- FantasyTalkingModelLoader
- FantasyTalkingWav2VecEmbeds
- HuMoEmbeds
- LandmarksToImage
- LoadLynxResampler
- LoadNLFModel
- LoadVQVAE
- LoadWanVideoClipTextEncoder
- LoadWanVideoT5TextEncoder
- LongCatAvatarWhisperEmbeds
- LynxEncodeFaceIP
- LynxInsightFaceCrop
- MochaEmbeds
- MTVCrafterEncodePoses
- MultiTalkModelLoader
- MultiTalkSilentEmbeds
- MultiTalkWav2VecEmbeds
- NLFPredict
- NormalizeAudioLoudness
- OviMMAudioVAELoader
- QwenLoader
- ReCamMasterPoseVisualizer
- TextImageEncodeQwenVL
- WanMove_native
- WanVideoAddBindweaveEmbeds
- WanVideoAddControlEmbeds
- WanVideoAddDualControlEmbeds
- WanVideoAddExtraLatent
- WanVideoAddFantasyPortrait
- WanVideoAddFlashVSRInput
- WanVideoAddLucyEditLatents
- WanVideoAddLynxEmbeds
- WanVideoAddMTVMotion
- WanVideoAddOneToAllExtendEmbeds
- WanVideoAddOneToAllPoseEmbeds
- WanVideoAddOneToAllReferenceEmbeds
- WanVideoAddOviAudioToLatents
- WanVideoAddPusaNoise
- WanVideoAddS2VEmbeds
- WanVideoAddSCAILPoseEmbeds
- WanVideoAddSCAILReferenceEmbeds
- WanVideoAddStandInLatent
- WanVideoAddSteadyDancerEmbeds
- WanVideoAddStoryMemLatents
- WanVideoAddTTMLatents
- WanVideoAddWanMoveTracks
- WanVideoAnimateEmbeds
- WanVideoApplyNAG
- WanVideoATI_comfy
- WanVideoATITracks
- WanVideoATITracksVisualize
- WanVideoBlockList
- WanVideoBlockSwap
- WanVideoClipVisionEncode
- WanVideoCombineEmbeds
- WanVideoContextOptions
- WanVideoControlEmbeds
- WanVideoControlnet
- WanVideoControlnetLoader
- WanVideoDecode
- WanVideoDecodeOviAudio
- WanVideoDiffusionForcingSampler
- WanVideoEasyCache
- WanVideoEmptyEmbeds
- WanVideoEmptyMMAudioLatents
- WanVideoEncode
- WanVideoEncodeLatentBatch
- WanVideoEncodeOviAudio
- WanVideoEnhanceAVideo
- WanVideoExperimentalArgs
- WanVideoExtraModelSelect
- WanVideoFlashVSRDecoderLoader
- WanVideoFreeInitArgs
- WanVideoFunCameraEmbeds
- WanVideoImageClipEncode
- WanVideoImageResizeToClosest
- WanVideoImageToVideoEncode
- WanVideoImageToVideoMultiTalk
- WanVideoImageToVideoSkyreelsv3_audio
- WanVideoLatentReScale
- WanVideoLongCatAvatarExtendEmbeds
- WanVideoLoopArgs
- WanVideoLoraBlockEdit
- WanVideoLoraSelect
- WanVideoLoraSelectByName
- WanVideoLoraSelectMulti
- WanVideoMagCache
- WanVideoMiniMaxRemoverEmbeds
Related resources
40 connections
Related resources
40 connectionsSources
3 sources
Sources
3 sourcesVerified Oct 13
Verified Oct 13
Source excerpts
1 excerpt
Source excerpts
1 excerptSource context: Repo kijai/ComfyUI-WanVideoWrapper
