How to use ControlNet in ComfyUI on a cloud GPU

Rent a GPU on Deploy, then open a terminal in JupyterLab or over SSH. Install ComfyUI from the official repository, put ControlNet files in the folder the official examples page names, and install comfyui_controlnet_aux with ComfyUI-Manager or the git clone that README prints. Load a workflow by opening one of the example images in ComfyUI, run it, and copy the output folder off the instance before you destroy it. Destroying the instance deletes its disk.

Other ComfyUI pages: How to use IPAdapter in ComfyUI on a cloud GPU, How to run InstantID on a cloud GPU, How to run Stable Diffusion 3.5 in ComfyUI on a cloud GPU, and How to run FLUX.1-dev in ComfyUI on a cloud GPU. How published FLUX and SDXL weight sizes are read: How much VRAM do I need for FLUX and SDXL. The tunnel for ComfyUI is How to use SSH port forwarding on a cloud GPU. Relighting from the IC-Light README, which does not link a ComfyUI install, is How to run IC-Light on a cloud GPU.

The examples page links the preprocessor install to https://github.com/Fannovel16/comfy_controlnet_preprocessors. A request for that repository on 2026-11-13 returned HTTP 404. This page follows Fannovel16/comfyui_controlnet_aux. That README title is “ComfyUI’s ControlNet Auxiliary Preprocessors”. It says the code is copy-pasted from the annotator folders in lllyasviel/ControlNet and connected to the Hugging Face Hub repository lllyasviel/Annotators.

LICENSE.txt in comfyui_controlnet_aux is the Apache License, Version 2.0, January 2004, and the appendix copyright line is still the unfilled template Copyright [yyyy] [name of copyright owner] (read 2026-11-13). The GitHub license field the same day was Apache-2.0. pyproject.toml sets version to 1.1.6, DisplayName to comfyui_controlnet_aux, and PublisherId to fannovel16. It does not set a license field. The lllyasviel/ControlNet LICENSE file is the same Apache License, Version 2.0, January 2004, with the same unfilled copyright template. The GitHub license field for that repository the same day was Apache-2.0. The model card for lllyasviel/ControlNet-v1-1 the same day had license openrail in the card metadata and gated false. The README on that card does not include the license body. This page does not paraphrase a license body it did not read. The model card for comfyanonymous/ControlNet-v1-1_fp16_safetensors the same day had gated false and no license field in the card metadata this page read. The model card for stabilityai/control-lora the same day had license other in the card metadata and gated false. Those are separate files. This page does not merge them into one license. Read each file before you redistribute the program or the weights.

The commands below are copied from the upstream files named in each step. They were not run on a CloudGPU instance for this page. Anything this page adds around them is marked.

What the examples and the READMEs say about memory

The ComfyUI examples ControlNet page does not print a GPU GB figure. The comfyui_controlnet_aux README does not print a GPU GB figure. requirements.txt and pyproject.toml on the commit below do not print one either.

The lllyasviel/ControlNet README says: “The required GPU memory is not much larger than original SD, although many layers are added.” That sentence prints no GB figure. The same README says a low VRAM mode was added on 2023/02/11 and “Please use this mode if you are using 8GB GPU(s) or if you want larger batch size.” docs/low_vram.md says: “If you are using 8GB GPU card (or if you want larger batch size), please open config.py, and then set save_memory = True.” It also says the feature is still being tested and that not all graphics cards are guaranteed to succeed. That 8GB sentence is about config.py in the lllyasviel/ControlNet repository. It is not a line in the ComfyUI examples page. This page did not set save_memory and did not re-measure a run.

The stabilityai/control-lora model card says rank 256 files reduce the original 4.7GB ControlNet models to ~738MB Control-LoRA models, and rank 128 files reduce the model to ~377MB. Those are the card’s file-size sentences. This page did not re-measure the files and does not treat them as a VRAM figure.

GET /v1/public/compute-capabilities does not list GPUs. It returns feature flags. The memory column is vram_gb from gpu-prices.json, updated_at 2026-11-13T01:07:50.488Z. GET /v1/public/gpu-catalog the same day (generated_at 2026-11-13T01:07:55.359Z) listed the same names and the same vram_gb values, plus Ascend 910B at 64, which is not in gpu-prices.json and is not listed here. The catalog response also includes an availability field. This page does not copy it. Every prices row has gpu_count 1. The only prices row at 8 is RTX 2080. Every other row is higher. This page does not mark a row as enough, because the ComfyUI examples page publishes no GB figure to compare. Which listing you can start is on Deploy.

The catalog template named ComfyUI has id flux-1-dev, category image-gen, recommended_gpu RTX 4090 48G, and min_vram_gb 24. Those are template fields. The template list had no ControlNet template. This page installs the preprocessor into a ComfyUI checkout. The ComfyUI README’s own memory clause is on the install guide linked above. This page does not treat that clause as a ControlNet figure.

Catalog name vram_gb
RTX 2080 8
RTX 3080 10
RTX 2080 Ti 11
RTX 3080 Ti 12
V100 16G 16
A30 24
RTX 3090 24
RTX 4090 24
RTX 4090D 24
RTX 4080 SUPER 32G 32
RTX 5090 32
RTX 5090D 32
V100 32G 32
A100 40G 40
A800 40G 40
A40 48
RTX 4090 48G 48
RTX 4090D 48G 48
RTX A6000 48
NVIDIA RTX PRO 5000 72G 72
RTX PRO 5000 72G 72
A100 80G 80
A800 80G 80
H800 80
RTX 6000D 83
H20 96G 96
RTX PRO 6000 96G 96
RTX PRO 6000 Max-Q 96
H20-3e 141G 141

Install the preprocessor

On Deploy, choose Raw GPU if you are installing ComfyUI yourself. The deploy page says “SSH access and root within a dedicated container”. The ComfyUI template is a different option. Its id and min_vram_gb are the template fields above, not a line in the ControlNet examples page. The ComfyUI install, including Manager, is How to install ComfyUI and ComfyUI-Manager on a cloud GPU. This page does not repeat that install.

The aux README’s recommended install is ComfyUI-Manager: “Install ComfyUI Manager and do steps introduced there to install this repo.” It does not print the Manager search text. pyproject.toml is where DisplayName and PublisherId are set, as quoted above.

The alternative section says that on Linux you want /ComfyUI/custom_nodes and comfyui_controlnet_aux to have write permissions. It then says to navigate to /ComfyUI/custom_nodes/ and run this command:

git clone https://github.com/Fannovel16/comfyui_controlnet_aux/

It then says to navigate to comfyui_controlnet_aux. For a portable or venv install it prints path/to/ComfUI/python_embeded/python.exe -s -m pip install -r requirements.txt. That spelling ComfUI is the README’s. For system Python it prints:

pip install -r requirements.txt

The commits API on 2026-11-13 listed a587a4c1594524c1d2de5cd1a86cd868ff448e1c on the default branch main, committed 2026-10-11T09:29:51Z, message “Merge pull request #635 from zhaoruizhe81/fix/issue-627-animal-kp-encode”. requirements.txt lists torch with no version pin, and it includes onnxruntime-gpu when the platform is Windows or Linux and the machine is AMD64 or x86_64. The pyproject.toml dependency list does not include onnxruntime-gpu. This page did not install either file.

The README’s ONNXRuntime section says an NVidia CUDA 11.x or bellow build, or an AMD GPU, uses onnxruntime-gpu, and an NVidia CUDA 12.x build uses this command. The spellings NVidia and bellow are the README’s:

onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/

That line is the package spec the README prints. It is not a full pip install line. The same section says this method currently can only works on CUDA 11.8 for the Windows portable archive it names, unless you compile onnxruntime yourself. The grammar is the README’s. How to install onnxruntime-gpu on a cloud GPU is the provider install. This page did not install that wheel.

Model files and folders

The examples page says ControlNet model files go in the ComfyUI/models/controlnet directory. It links the original files at lllyasviel/ControlNet-v1-1 and a smaller fp16 safetensors version at comfyanonymous/ControlNet-v1-1_fp16_safetensors. It does not print a download command. Copy the file you need from the tree you open.

The same page says Stability AI released Control LoRAs for SDXL, at stabilityai/control-lora under control-LoRAs-rank256 and control-LoRAs-rank128. It says they are used the same way as regular ControlNet model files and go in the same directory. The control-lora card says those files are implemented in ComfyUI. The file-size sentences are the ones quoted above.

ComfyUI folder_paths.py on commit c1eece62cbf1805d4f64286d7f5592e6a215e6ba (2026-11-12T20:46:52Z) registers the folder id controlnet as models_dir joined with controlnet and models_dir joined with t2i_adapter. models_dir is --models-directory when that argument is set, otherwise base_path joined with models.

The examples page says each ControlNet or T2I-Adapter needs the image passed to it to already be in a specific format, such as a depth map or a canny map, and that the ControlNetApply node will not convert a regular image for you. The aux README says this repository only supports preprocessors that make hint images. Its tables name the ControlNet or T2I-Adapter filename each preprocessor is meant to pair with, including control_v11p_sd15_canny, control_v11f1p_sd15_depth, and control_v11p_sd15_openpose. Copy the row you use from that README. This page does not download those files.

The aux README’s assets section lists the preprocessor checkpoints and the Hub paths it downloads, mostly under lllyasviel/Annotators. This page does not copy that whole list. The README says the nodes download those files. This page did not run a preprocessor.

How to download a Hugging Face model is the token reference. Neither README prints an HF_ENDPOINT line.

Load an example workflow

The examples page says you can load the embedded images in ComfyUI to get the full workflow. The directory listing on 2026-11-13 had controlnet_example.png, depth_controlnet.png, depth_t2i_adapter.png, 2_pass_pose_worship.png, and mixing_controlnets.png, plus the input images. It had no JSON workflow file. The scribble section says that example uses the scribble ControlNet and the AnythingV3 model. The depth section says the depth ControlNet example uses DiffControlNetLoader because that file is a diff control net, and that the same node can load a regular ControlNet and then behaves like ControlNetLoader. The page says T2I-Adapters are used the same way, with ControlNetLoader. It also says multiple ControlNets and T2I-Adapters can be applied together. This page did not load an image.

The commits API for controlnet/README.md listed b131af751455bc968bfe4351cdd98f246f822e5b, committed 2023-08-27T07:24:01Z, message “Link to control lora files.” The examples repository HEAD the same day was f9431bb000ce792094ff345446e22cac1ea6cef3, committed 2025-11-26T20:33:58Z. The top-level directory list included controlnet. This page does not treat another example directory as this install.

The lllyasviel/ControlNet README lists nine Gradio apps and prints commands such as python gradio_canny2image.py. gradio_canny2image.py on that repository calls block.launch(server_name='0.0.0.0') and does not pass a port. This page does not launch those apps and does not name a port for them. The route this page walks through is ComfyUI.

Where files are saved

The aux README says the Save Pose Keypoints workflow saves images to ComfyUI’s output folder, the same location as output images. A ComfyUI save-image node writes under the output directory. folder_paths.py on the commit above sets output_directory to base_path joined with output. base_path is --base-directory when that argument is set, otherwise the directory of folder_paths.py. The latest release tag fetched the same day was v0.45.0, published 2026-11-10T21:42:42Z.

ComfyUI is the web UI for this route. The install guide documents 127.0.0.1 port 8188 and the tunnel. The aux README’s history example uses 127.0.0.1:8188. This repository does not ship a second web server. This page does not add a port command.

When it fails

CUDA out of memory. The examples page and the aux README do not print an out-of-memory flag or a GB target. The lllyasviel low VRAM note is the save_memory = True line above, and it is not a ComfyUI flag. If the process raises that error, use how to fix CUDA out of memory on a cloud GPU.

“CUDA error: no kernel image is available for execution on the device” on an RTX 5090. requirements.txt does not pin torch. The README does not name compute capability 12.0. The RTX 5090 guide says that card is compute capability 12.0 (sm_120) and that PyTorch 2.7 and later, on a build for CUDA 12.8 or newer, is the line that announced support. This page did not install a torch wheel and did not re-test this node on an RTX 5090. Catalog RTX 5090 and RTX 5090D are 32. That is the catalog number only.

A preprocessor node does not appear. The aux README says the repository skips any custom node that cannot be imported, and it tells you to open an issue with the command-line log. This page did not reproduce that skip.

Save the images, then destroy

Copy the ComfyUI output directory off the instance before you destroy it. Save your work before you destroy a cloud GPU is the checklist. The terms say data on local instance storage is permanently deleted when the instance is destroyed.

The pricing page FAQ states the billing rule in these words:

Per-minute options have a 1-minute minimum; unused prepaid minutes are refunded when you destroy the instance. Some configurations use whole-hour billing with a 1-hour minimum; unused time within a charged hour is not refunded on voluntary stop. The billing period, minimum charge and initial prepayment are shown before confirmation. No subscription.

Prices are not copied here.

Frequently asked questions

How much VRAM does the ControlNet material publish?

The ComfyUI examples ControlNet page and the comfyui_controlnet_aux README publish no GB figure. The lllyasviel/ControlNet README says the required GPU memory is not much larger than original SD and prints no GB figure. docs/low_vram.md says to set save_memory = True in that repository config.py if you are using an 8GB GPU card. That sentence is not a line on the ComfyUI examples page. The stabilityai/control-lora card says rank 256 files reduce the original 4.7GB ControlNet models to ~738MB and rank 128 files to ~377MB. Those are file-size sentences, not a VRAM figure. Every vram_gb in https://cloudgpu.app/gpu-prices.json (updated_at 2026-11-13T01:07:50.488Z) is 8 or higher. The only row at 8 is RTX 2080. This page does not mark a row as enough. The catalog template named ComfyUI has id flux-1-dev, recommended_gpu RTX 4090 48G, and min_vram_gb 24. Those are template fields. Which listing you can start is on https://cloudgpu.app/deploy.

Where do the ControlNet files go?

The examples page says ControlNet model files go in ComfyUI/models/controlnet, and that the SDXL Control LoRAs go in that same directory. folder_paths.py also registers models/t2i_adapter on the controlnet folder id. The examples page links lllyasviel/ControlNet-v1-1 and comfyanonymous/ControlNet-v1-1_fp16_safetensors and does not print a download command. The aux README tables name the control filename each preprocessor is meant to pair with. Copy the row you use from that README.

How do I open the ComfyUI page for ControlNet?

ComfyUI is the page. The install guide documents 127.0.0.1 port 8188 and the SSH tunnel. The aux README history example uses 127.0.0.1:8188. The examples page says to load its images in ComfyUI to get the workflow. The directory had PNG files and no JSON workflow. The aux README says to install with the Manager or by cloning into ComfyUI/custom_nodes, and it prints the git clone command. The lllyasviel README lists Gradio apps. gradio_canny2image.py calls block.launch with server_name 0.0.0.0 and does not pass a port. This page did not launch those apps.

Do the images stay on the instance after I destroy it?

No. The aux README says Save Pose Keypoints writes images to the ComfyUI output folder. A ComfyUI save-image node writes under the output directory, which folder_paths.py joins to base_path. Copy that directory off before you destroy the instance. The terms say data on local instance storage is permanently deleted when the instance is destroyed.

Sources (read 2026-11-13, Asia/Shanghai)


Cards you can start are on the Deploy page. Prices are on https://cloudgpu.app/pricing and are not repeated here.

Last updated: 2026-11-13 (Asia/Shanghai).