How to run OmniGen2 on a cloud GPU
Rent a GPU on Deploy, then open a terminal in JupyterLab or over SSH. Install OmniGen2 from the VectorSpaceLab/OmniGen2 README, run the example scripts that pass OmniGen2/OmniGen2, or start app.py, and copy the output image off the instance before you destroy it. Destroying the instance deletes its disk.
Other image pages: How to run Qwen-Image on a cloud GPU, How to run FLUX.1 Kontext in ComfyUI on a cloud GPU, and How to run HiDream-I1 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 the Gradio port is How to use SSH port forwarding on a cloud GPU. If the process runs out of memory: How to fix CUDA out of memory on a cloud GPU.
The GitHub license field on 2026-11-13 was Apache-2.0. LICENSE is the Apache License, Version 2.0, January 2004, with the unfilled copyright template. The model card for OmniGen2/OmniGen2 the same day had license apache-2.0 and gated false, and its License section says this work is licensed under the Apache 2.0 license. Read that file before you redistribute the program.
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 README says about memory
The README resources section says OmniGen2 natively requires an NVIDIA RTX 3090 or an equivalent GPU with approximately 17GB of VRAM, and that CPU offload is for devices with less VRAM. The usage tips say enable_model_cpu_offload reduces VRAM usage by nearly 50% with a negligible impact on speed, and that enable_sequential_cpu_offload minimizes VRAM usage to less than 3GB at the cost of significantly slower performance. This page does not turn “nearly 50%” into a second GB figure, and it did not measure either speed sentence. The same tips say the default max_pixels value is 1024*1024. The model card README, read the same day, repeats the 17GB sentence, the nearly 50% sentence, and the less-than-3GB sentence. It does not add a different GB figure.
The README also shows a figure captioned “Inference Efficiency of OmniGen2” for an A800 GPU. This page does not transcribe numbers from that image. Catalog names include A800 40G and A800 80G. The README does not print which of those two the figure used.
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-13T02:59:34.866Z. GET /v1/public/gpu-catalog the same day (generated_at 2026-11-13T02:59:35.996Z) 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. Rows whose vram_gb is at least 17 meet the 17GB sentence as a printed number. RTX 2080 is 8, RTX 3080 is 10, RTX 2080 Ti is 11, RTX 3080 Ti is 12, and V100 16G is 16, which are below 17. The catalog name RTX 3090 is 24. That is the catalog number. The README’s “approximately 17GB” is a separate printed number. The sequential-offload sentence prints less than 3GB. This page does not treat a catalog row of 8 as proof that flag fits. This page did not run OmniGen2 and does not mark a row as enough. Which listing you can start is on Deploy.
The catalog template list had no OmniGen2 template. The catalog template named ComfyUI has id flux-1-dev, recommended_gpu RTX 4090 48G, and min_vram_gb 24. Those are template fields. The ComfyUI example in the next section is not that template.
| 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
On Deploy, choose Raw GPU. The deploy page says “SSH access and root within a dedicated container”. The README recommended setup is:
# 1. Clone the repo
git clone git@github.com:VectorSpaceLab/OmniGen2.git
cd OmniGen2
# 2. (Optional) Create a clean Python environment
conda create -n omnigen2 python=3.11
conda activate omnigen2
# 3. Install dependencies
# 3.1 Install PyTorch (choose correct CUDA version)
pip install torch==2.6.0 torchvision --extra-index-url https://download.pytorch.org/whl/cu124
# 3.2 Install other required packages
pip install -r requirements.txt
# Note: Version 2.7.4.post1 is specified for compatibility with CUDA 12.4.
# Feel free to use a newer version if you use CUDA 12.6 or they fixed this compatibility issue.
# OmniGen2 runs even without flash-attn, though we recommend install it for best performance.
pip install flash-attn==2.7.4.post1 --no-build-isolation
The clone line is the SSH URL the README prints. This page does not replace it. The README prints a second install block after that setup. This page does not copy that block. Copy it from the README if you want those index URLs. requirements.txt pins torch==2.6.0, torchvision==0.21.0, and transformers==4.51.3. It does not pin gradio. The commits API for the default branch main listed 18e6f9d5271b517fcb32e999f10df943ae9b8f20, committed 2026-03-20T03:44:59Z. The commits API for README.md listed dc6a52a6f36b0a01d6de4978815c6f391e9033b7, committed 2025-09-30T03:05:14Z. This page did not install the environment.
The documented inference scripts
The README example commands are bash example_understanding.sh, bash example_t2i.sh, bash example_edit.sh, and bash example_in_context_generation.sh. Each script sets model_path="OmniGen2/OmniGen2". inference.py loads that path with OmniGen2Pipeline.from_pretrained. The text-to-image script passes --num_inference_step 50, --height 1024, --width 1024, --text_guidance_scale 4.0, --num_images_per_prompt 1, and --output_image_path outputs/output_t2i.png. The edit script passes --text_guidance_scale 5.0, --image_guidance_scale 2.0, one --input_image_path, and --output_image_path outputs/output_edit.png. The in-context script passes --height 1024, --width 1024, two input images, and --output_image_path outputs/output_in_context_generation.png. The understanding script calls inference_chat.py with an instruction and one input image, and it does not pass --output_image_path.
inference.py defaults --output_image_path to output.png, --height and --width to 1024, --num_inference_step to 50, --scheduler to euler, and --dtype to bf16. It defines --max_input_image_pixels with default 1048576, and run does not pass that value into the pipeline. The pipeline __call__ default max_pixels is 1024 * 1024, and its default align_res is True. inference.py does not pass align_res. When there is one input image and align_res is true, that method replaces width and height from the reference latent. The README limitations section says the default size is 1024×1024 and that an input image sets the output size to match the input image. One sentence in that section names a closed model. This page does not print it.
The example scripts do not pass --enable_model_cpu_offload or --enable_sequential_cpu_offload. inference.py accepts both as flags. It also accepts --enable_group_offload. The README tips name the first two and do not describe the third. This page did not run the scripts. The commits API listed example_t2i.sh and example_edit.sh at 6a74ac6c4dd4789dfadbf4fbb9ea7a627bbe235b (2025-06-23T06:20:54Z), example_in_context_generation.sh at 5ef6d762b9c00fa0037c3d24cfbfe67b65658f10 (2025-06-16T09:39:23Z), example_understanding.sh at e53a9e0bffb96943a66b0357ac0c8aa18112cb2b (2025-06-15T09:23:17Z), inference.py at e5c4012d0dc7eee0f523a94b0a3c9a510ce3310b (2025-07-04T03:40:01Z), and inference_chat.py at a8e20533b0dc87d5c41c07f5a8b77db5cbfdcfc2 (2025-06-23T05:58:27Z).
Where the images are saved
The three generation scripts above set --output_image_path to outputs/output_t2i.png, outputs/output_edit.png, and outputs/output_in_context_generation.png. inference.py writes that path, and when results.images has more than one image it also writes {stem}_{index}{ext} beside it. inference_chat.py defaults --output_image_path to output.png, saves that path when results.images is not None, and prints Text: {results.text}. The understanding script does not override the path. This page did not run either script.
Gradio
The README local Gradio block is:
# for only generating image
pip install gradio
python app.py
# Optional: Share demo with public link (You need to be able to access huggingface)
python app.py --share
# for generating image or text
pip install gradio
python app_chat.py
app.py and app_chat.py default --port to 7860. Both call demo.launch with server_port=args.port and do not pass server_name. The README commands do not pass --port. app.py defaults --model_path to OmniGen2/OmniGen2. It sets a name save_images to False and later assigns that name to a checkbox labeled “Save generated images” with value False. The save block under if save_images writes outputs_gradio/{timestamp}.png. This page did not start the app, so it did not observe whether that condition ran. From your own computer, the script default port is 7860. How to use SSH port forwarding on a cloud GPU is the tunnel. The commits API listed app.py at 0a0b1df30ecaba8c3ca7f7c73f98f0586f2e3b46 (2025-06-27T14:43:07Z) and app_chat.py at 8e8d98861bef38c6e1d2ae08d44529ee6dfbc77e (2025-06-28T07:09:16Z).
ComfyUI
The README news line dated 2025-07-01 says OmniGen2 is supported by ComfyUI official and links https://comfyanonymous.github.io/ComfyUI_examples/omnigen/. The TODO list in the same README still has an unchecked ComfyUI Demo item. This page follows the examples file that news link corresponds to. omnigen/README.md in ComfyUI_examples, commit 0abb6d7e6e7c1f713aeded571106e01237459055 (2025-06-26T12:16:52Z), says to put omnigen2_fp16.safetensors in ComfyUI/models/diffusion_models/, qwen_2.5_vl_fp16.safetensors in ComfyUI/models/text_encoders/, and ae.safetensors in ComfyUI/models/vae/. Those three links are under Comfy-Org/Omnigen2_ComfyUI_repackaged. The file says the workflow image can be loaded in ComfyUI. It prints no GB figure. Examples HEAD was f9431bb000ce792094ff345446e22cac1ea6cef3. The README’s community list also links two other ComfyUI repositories and says those community implementations are unofficial. This page does not copy their install steps. The ComfyUI template on Deploy is a separate listing from this file copy.
When it fails
CUDA out of memory. The documented lower-memory options are the two offload flags in the README tips. The example scripts do not pass them. 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. The recommended install pins torch==2.6.0 from the cu124 index. It 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 package on an RTX 5090. Catalog RTX 5090 and RTX 5090D are 32. That is the catalog number only.
Save the images, then destroy
Copy outputs/output_t2i.png, outputs/output_edit.png, outputs/output_in_context_generation.png, output.png when that is the path the chat script used, or outputs_gradio/ if the Gradio save block wrote it, before you destroy the instance. 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 OmniGen2 README print?
The resources section says an NVIDIA RTX 3090 or an equivalent GPU with approximately 17GB of VRAM. The tips say enable_model_cpu_offload reduces VRAM usage by nearly 50%, and that enable_sequential_cpu_offload minimizes VRAM usage to less than 3GB. The model card README repeats those three sentences. This page does not add them together and does not mark a catalog row as enough. Which listing you can start is on https://cloudgpu.app/deploy.
Which model id do the example scripts pass?
example_t2i.sh, example_edit.sh, example_in_context_generation.sh, and example_understanding.sh set model_path to OmniGen2/OmniGen2. app.py defaults --model_path to that same id. The Hugging Face model API on 2026-11-13 reported gated false and license apache-2.0. This page did not download the repository.
Where do the documented scripts save images?
The generation examples pass --output_image_path outputs/output_t2i.png, outputs/output_edit.png, and outputs/output_in_context_generation.png. inference.py also writes a numbered file beside that path when more than one image is returned. inference_chat.py defaults to output.png. app.py writes outputs_gradio/{timestamp}.png only inside its save_images block. The README Gradio command does not pass --port, and both app scripts default --port to 7860. This page did not run the scripts.
What usage terms does the repository print?
LICENSE is the Apache License, Version 2.0, January 2004, with the unfilled copyright template. The model card says this work is licensed under the Apache 2.0 license. The grant uses the words no-charge, royalty-free. That pair is license text, not a CloudGPU price and not a storage allowance. The file prints no dollar amount.
Sources (read 2026-11-13, Asia/Shanghai)
- VectorSpaceLab/OmniGen2 README (install, example script names, Gradio commands, 17GB sentence, offload sentences, 1024*1024 tip, ComfyUI official link, Apache pointer): https://github.com/VectorSpaceLab/OmniGen2/blob/main/README.md commit
dc6a52a6f36b0a01d6de4978815c6f391e9033b7. Repository HEAD18e6f9d5271b517fcb32e999f10df943ae9b8f20,pushed_at2026-03-20T07:21:13Z example_t2i.shandexample_edit.sh: commit6a74ac6c4dd4789dfadbf4fbb9ea7a627bbe235bexample_in_context_generation.sh: commit5ef6d762b9c00fa0037c3d24cfbfe67b65658f10example_understanding.sh: commite53a9e0bffb96943a66b0357ac0c8aa18112cb2binference.py(defaults, offload flags, save path): commite5c4012d0dc7eee0f523a94b0a3c9a510ce3310binference_chat.py(defaultoutput.png): commita8e20533b0dc87d5c41c07f5a8b77db5cbfdcfc2omnigen2/pipelines/omnigen2/pipeline_omnigen2.py(max_pixelsdefault1024 * 1024,align_resdefault True, single-image size replacement): that repository at HEADapp.py(port 7860,outputs_gradio): commit0a0b1df30ecaba8c3ca7f7c73f98f0586f2e3b46app_chat.py(port 7860): commit8e8d98861bef38c6e1d2ae08d44529ee6dfbc77erequirements.txt(torch==2.6.0,transformers==4.51.3): commit2ff6045f82aa29551d3782857fdf838d1862c39fLICENSE(Apache 2.0, January 2004, unfilled copyright template): commitc0592c6b810c7a06f9b0ef26db1d7261f3b6663a. GitHub license field Apache-2.0- Model card
OmniGen2/OmniGen2(licenseapache-2.0,gatedfalse, resources section repeats 17GB and the two offload sentences): https://huggingface.co/OmniGen2/OmniGen2 read 2026-11-13 - ComfyUI examples
omnigen/README.md(three file destinations): commit0abb6d7e6e7c1f713aeded571106e01237459055. Examples HEADf9431bb000ce792094ff345446e22cac1ea6cef3 - Public GPU memory: https://cloudgpu.app/gpu-prices.json (
updated_at2026-11-13T02:59:34.866Z) and https://cloudgpu.app/v1/public/gpu-catalog (generated_at2026-11-13T02:59:35.996Z).GET /v1/public/compute-capabilitiesreturned feature flags and no GPU list. The catalog had no OmniGen2 template
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).