I created a job and started it (19:56).
I see no cpu or gpu usage and no additional output in the server terminal window.
After 3min, no cpu or gpu usage, no additional output in the server terminal window.
Is cmnet2dit even trying to connect multiple times to the server?
=> cmnet2dit doesn't work here.
Cu Selur
Ps.: also updated Hybrid_havc_test to the version I did use.
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
import ctypes
import sys
import os
import vapoursynth as vs
# getting Vapoursynth core
core = vs.core
# Limit frame cache to 48449MB
core.max_cache_size = 48449
# Import scripts folder
scriptPath = 'F:/Hybrid/64bit/vsscripts'
sys.path.insert(0, os.path.abspath(scriptPath))
# Loading Support Files
Dllref = ctypes.windll.LoadLibrary("F:/Hybrid/64bit/vsfilters/Support/libfftw3f-3.dll")
# loading plugins
core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/DenoiseFilter/NEO_FFT3DFilter/neo-fft3d.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/DenoiseFilter/DFTTest/DFTTest.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/Vapoursynth/Lib/site-packages/vapoursynth/plugins2/bwdif.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/Vapoursynth/Lib/site-packages/vapoursynth/plugins2/fmtconv.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/Vapoursynth/Lib/site-packages/vapoursynth/plugins2/sneedif/libsneedif.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/Support/libeedi3vk.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/Vapoursynth/Lib/site-packages/vapoursynth/plugins2/addnoise.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/Vapoursynth/Lib/site-packages/vapoursynth/plugins2/mvtools.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/Vapoursynth/Lib/site-packages/vapoursynth/plugins2/akarin/libakarin.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/Vapoursynth/Lib/site-packages/vapoursynth/plugins2/zsmooth/zsmooth.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/SourceFilter/DGDecNV/DGDecodeNV_AVX2.dll")
# Import scripts
import vsdeoldify as havc
import qtgmc
import validate
# Source: 'G:\TestClips&Co\files\MakeMKV\Ashes and Snow (Gregory Colbert) [2005, NTSC DVD5] MakeMKV.mkv'
# clip current meta; color space: YUV420P8, bit depth: 8, resolution: 720x480, fps: 24.204, color matrix: 470bg, color primaries: Unspecific, color transfer: Unspecified, yuv luminance scale: limited, scanorder: top field first, full height: true (Source)
# Loading 'G:\TestClips&Co\files\MakeMKV\Ashes and Snow (Gregory Colbert) [2005, NTSC DVD5] MakeMKV.mkv' using DGSource
clip = core.dgdecodenv.DGSource("J:/tmp/2026-05-26@19_55_55_2610/2026-05-26@19_55_55_2610.dgi",fieldop=0) # 24.204 fps, scanorder: top field first
frame = clip.get_frame(0)
# setting color matrix to 470bg.
clip = core.std.SetFrameProps(clip, _Matrix=vs.MATRIX_BT470_BG)
# setting color transfer (vs.TRANSFER_BT601), if it is not set.
if validate.transferIsInvalid(clip):
clip = core.std.SetFrameProps(clip=clip, _Transfer=vs.TRANSFER_BT601)
# setting color primaries info (to vs.PRIMARIES_BT470_BG), if it is not set.
if validate.primariesIsInvalid(clip):
clip = core.std.SetFrameProps(clip=clip, _Primaries=vs.PRIMARIES_BT470_BG)
# setting color range to TV (limited) range.
prop_name = '_Range' if core.core_version.release_major >= 74 else '_ColorRange'
clip = core.std.SetFrameProps(clip=clip, **{prop_name: vs.RANGE_LIMITED})
# making sure frame rate is set to 24.204fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=6051, fpsden=250)
# making sure the detected scan type is set (detected: top field first)
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_TOP) # scan type: top field first
# Deinterlacing using QTGMC
clip = qtgmc.QTGMC(clip, Preset="Fast", TFF=True, opencl=True) # new fps: 48.408
# Making sure content is preceived as frame based
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # scan type: progressive
# colorize using CMNet with external DiT (HAVC)
clip = havc.HAVC_cmnet2dit(clip, encode_mode=1, max_memory_frames=10, dit_engine_params={"host": "127.0.0.1", "port": 8765, "model_precision": "int4"})
# adjusting output color from YUV420P8 to YUV420P10 for NVEncModel
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P10)
# set output frame rate to 48.408fps (progressive)
clip = core.std.AssumeFPS(clip=clip, fpsnum=6051, fpsden=125)
# output
clip.set_output()
# clip current meta; color space: YUV420P10, bit depth: 10, resolution: 720x480, fps: 48.408, color matrix: 470bg, color primaries: Unspecific, color transfer: Unspecified, yuv luminance scale: limited, scanorder: progressive, full height: true (Meta)
# script was created by Hybrid 2026.05.26.1
Quote: But using your task manger what is your RAM and VRAM usage ?
RAM was around 20GB (still 40GB free and 16 GB used by the Python process of the server)
VRAM usage spiked on starting the server to around 15GB and then fell down to 2.8GB, when starting the job it goes up to 4.6 GB(short GPU usage and cpu usage spike), but then VRAM usage stays at 4.6GB and no GPU usage or gpu usage.
Stopped server again, updated the server part (git pull), restarted job, same effect small gpu&vram usage spike then nothing.
No additional output in server window.
I also monitored the local firewall nothing gets blocked by it.
In case it matters:
'pip list' in venv shows:
Using your havc_test version the encodibg works.
The speed in fps is shown after about 3m43s.
But you should see at least the frames colorization on the server side.
If you don't see nothing this imply the client is not properly connected to the server, in the last tversionof DiTServer the client connections are logged.
Moreover my torch package version is different from the one that you are using.
On my PC is installed VapoursynthR74_torch_2026.04.21.7z and in this version is missing the plugins folder. My version is still looking for plugins in "vsfilters", but I don't think that this is the problem because the errors in loading the plugins are reported, but you don't see nothing, very strange
Try to delete the files cache *.pyc in vsdeoldify package, maybe there is some misalignment on complied python code.
Dan
I tested your configuration
PS D:\PProjects\DiTServerRPC> D:\PProjects\DiTServerRPC\.venv\Scripts\python.exe dit_rpc_server.py --load-pipeline --pipeline-config qwen_config_int4.json
2026-05-26 20:55:55,917 [INFO] module_dir : D:\PProjects\DiTServerRPC
2026-05-26 20:55:55,917 [INFO] dit_colorize_main.py : found
2026-05-26 20:55:55,918 [INFO] Loading pipeline from config: qwen_config_int4.json
2026-05-26 20:55:55,918 [INFO] Loading pipeline: nunchaku-qwen int4 r32 steps=4
Loading SVDQuant INT4 transformer from: nunchaku-ai/nunchaku-qwen-image-edit-2509/lightning-251115/svdq-int4_r32-qwen-image-edit-2509-lightning-4steps-251115.safetensors
The config attributes {'pooled_projection_dim': 768} were passed to NunchakuQwenImageTransformer2DModel, but are not expected and will be ignored. Please verify your config.json configuration file.
Loading checkpoint shards: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:00<00:00, 99.99it/s]
Loading pipeline components...: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████| 6/6 [00:00<00:00, 7.56it/s]
Optimizing VRAM ...
D:\PProjects\DiTServerRPC\.venv\Lib\site-packages\nunchaku\models\transformers\transformer_qwenimage.py:620: UserWarning: Skipping moving the model to GPU as offload is enabled
warn("Skipping moving the model to GPU as offload is enabled", UserWarning)
2026-05-26 20:56:15,379 [INFO] Pipeline loaded successfully.
2026-05-26 20:56:15,379 [INFO] HAVC Colorize RPC Server listening on 127.0.0.1:8765
2026-05-26 20:56:15,379 [INFO] Press Ctrl+C to stop.
2026-05-26 20:58:30,030 [INFO] Connection opened 127.0.0.1:53531
2026-05-26 20:58:30,032 [INFO] Connection opened 127.0.0.1:53532
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:04<00:00, 2.06s/it]
D:\PProjects\DiTServerRPC\.venv\Lib\site-packages\diffusers\image_processor.py:148: RuntimeWarning: invalid value encountered in cast
images = (images * 255).round().astype("uint8")
2026-05-26 20:58:42,149 [INFO] colorize_frame_shm: 12.10s
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:04<00:00, 2.02s/it]
2026-05-26 20:58:56,530 [INFO] colorize_frame_pair_shm: 10.87s (5.44s/frame)
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:04<00:00, 2.02s/it]
2026-05-26 20:59:04,978 [INFO] colorize_frame_pair_shm: 8.13s (4.07s/frame)
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:04<00:00, 2.05s/it]
2026-05-26 20:59:13,452 [INFO] colorize_frame_pair_shm: 8.21s (4.10s/frame)
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:04<00:00, 2.03s/it]
2026-05-26 20:59:21,939 [INFO] colorize_frame_pair_shm: 8.16s (4.08s/frame)
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:04<00:00, 2.08s/it]
2026-05-26 21:01:11,130 [INFO] colorize_frame_pair_shm: 9.12s (4.56s/frame)
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:04<00:00, 2.03s/it]
2026-05-26 21:02:31,841 [INFO] colorize_frame_pair_shm: 8.43s (4.21s/frame)
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:04<00:00, 2.03s/it]
2026-05-26 21:02:48,581 [INFO] colorize_frame_pair_shm: 8.35s (4.17s/frame)
2026-05-26 21:02:59,014 [INFO] Connection 127.0.0.1:53531 closed by the client (ConnectionResetError: [WinError 10054] Connessione in corso interrotta forzatamente dall'host remoto)
2026-05-26 21:02:59,014 [INFO] Connection 127.0.0.1:53532 closed by the client (ConnectionResetError: [WinError 10054] Connessione in corso interrotta forzatamente dall'host remoto)
using this script
# Imports
import sys
import os
import vapoursynth as vs
# getting Vapoursynth core
core = vs.core
# Limit frame cache to 16384MB
core.max_cache_size = 16384
# Import scripts folder
scriptPath = 'D:/Programs/Hybrid/64bit/vsscripts'
sys.path.insert(0, os.path.abspath(scriptPath))
# loading plugins
core.std.LoadPlugin(path="D:/Programs/Hybrid/64bit/vsfilters/SourceFilter/DGDecNV/DGDecodeNV_AVX2.dll")
# Import scripts
import vsdeoldify as havc
import validate
# Source: 'D:\PProjects\vs-deoldify_dev\samples\sample5\sample5_bw.mp4'
# clip current meta; color space: YUV420P8, bit depth: 8, resolution: 720x544, fps: 25, color matrix: 470bg, color primaries: Unspecific, color transfer: BT.709, yuv luminance scale: limited, scanorder: progressive, full height: true (Source)
# Loading 'D:\PProjects\vs-deoldify_dev\samples\sample5\sample5_bw.mp4' using DGSource
clip = core.dgdecodenv.DGSource("D:/PProjects/vs-deoldify_dev/samples/sample5/mp4_sample5_bw.dgi") # 25 fps, scanorder: progressive
frame = clip.get_frame(0)
# setting color matrix to 470bg.
clip = core.std.SetFrameProps(clip, _Matrix=vs.MATRIX_BT470_BG)
# setting color transfer (vs.TRANSFER_BT709), if it is not set.
if validate.transferIsInvalid(clip):
clip = core.std.SetFrameProps(clip=clip, _Transfer=vs.TRANSFER_BT709)
# setting color primaries info (to vs.PRIMARIES_BT470_BG), if it is not set.
if validate.primariesIsInvalid(clip):
clip = core.std.SetFrameProps(clip=clip, _Primaries=vs.PRIMARIES_BT470_BG)
# setting color range to TV (limited) range.
prop_name = '_Range' if core.core_version.release_major >= 74 else '_ColorRange'
clip = core.std.SetFrameProps(clip=clip, **{prop_name: vs.RANGE_LIMITED})
# making sure frame rate is set to 25fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
# making sure the detected scan type is set (detected: progressive)
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # scan type: progressive
# colorize using CMNet with external DiT (HAVC)
clip = havc.HAVC_cmnet2dit(clip, encode_mode=0, max_memory_frames=10, dit_engine_params={"host": "127.0.0.1", "port": 8765, "model_precision": "int4"})
# adjusting output color from YUV420P8 to YUV420P10 for x265Model
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P10)
# set output frame rate to 25fps (progressive)
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
# output
clip.set_output()
But I noted that you was using the local version, not the remote version (encode_mode=0)
Using the local version you need to decrease the max_memory_frames=2