How to run Step1X-Edit on a cloud GPU
Rent a GPU on Deploy, then open a terminal in JupyterLab or over SSH. Install from the official stepfun-ai/Step1X-Edit README, or the diffusers checkout that README prints, download the weights that file names, run the documented edit script, and copy the saved images off the instance before you destroy it. Destroying the instance deletes its disk.
Another editing model, whose README labels its Gradio commands 32GB+, 12~32GB, and 22~32GB, is How to run BAGEL on a cloud GPU. OmniGen2’s README says approximately 17GB: How to run OmniGen2 on a cloud GPU. Qwen-Image’s README and model cards print no diffusers VRAM figure: How to run Qwen-Image on a cloud GPU. FLUX.1 Kontext in ComfyUI is How to run FLUX.1 Kontext in ComfyUI on a cloud GPU. gradio_app.py listens on port 32800: 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. How published FLUX and SDXL weight sizes are read: How much VRAM do I need for FLUX and SDXL.
LICENSE is the Apache License, Version 2.0, January 2004, with the unfilled copyright template. The README says Step1X-Edit is licensed under the Apache License 2.0, and that the license files are in the GitHub and Hugging Face repositories. The GitHub license field on 2026-11-13 was Apache-2.0. The model cards for stepfun-ai/Step1X-Edit, stepfun-ai/Step1X-Edit-v1p2, stepfun-ai/Step1X-Edit-v1p2-preview, and stepfun-ai/Step1X-Edit-v1p1-diffusers that day had cardData.license apache-2.0, top-level license null, and gated false. lastModified was 2025-07-09T09:58:58.000Z, 2025-12-29T07:41:26.000Z, 2025-09-08T07:49:09.000Z, and 2025-09-01T07:40:32.000Z. The introduction names closed-source models. This page does not print those names. Read the license 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 README says about memory
The quick start does not print a GPU GB figure. Section A2 prints this peak-memory table for batch size 1, with cfg. The header is Peak GPU Memory (512 / 786 / 1024). The same table has a time column. This page does not copy that column.
| Model | Peak GPU memory, GB, at 512 / 786 / 1024 |
|---|---|
| Step1X-Edit | 42.5 / 46.5 / 49.8 |
| Step1X-Edit (FP8) | 31 / 31.5 / 34 |
| Step1X-Edit (offload) | 25.9 / 27.3 / 29.1 |
| Step1X-Edit (FP8 + offload) | 18 / 18 / 18 |
The note under the table says the model is tested on one H800 GPU, and recommends GPUs with 80GB of memory. Catalog H800 is 80. That is the catalog number. The README’s 80GB sentence is a separate printed number. The multi-GPU table prints peak GPU memory of 49.6GB, 50.2GB, 52.9GB, 50.7GB, and 54.2GB. The note says that table was tested on H800 series GPUs at a resolution of 1024. This page does not copy the time column of that table either. The finetuning section is a different measurement. It says that with the default strategy it is possible to fine-tune Step1X-Edit at 1024 resolution on a single 24GB GPU, and its LoRA table prints 29.7GB / 31.6GB / 33.8GB for bf16 and 19.8GB / 21.3GB / 23.6GB for fp8, at 512 / 786 / 1024, with lora rank 64 and batch size 1. Those sentences are not the inference table.
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-13T15:11:42.412Z. GET /v1/public/gpu-catalog the same day (generated_at 2026-11-13T15:11:42.831Z) 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. Every catalog row has min_gpu_count 1. The multi-GPU script is a separate command. This page does not claim a listing with more than one GPU, and it does not mark a row as enough. Which listing you can start is on Deploy.
The catalog template list had no Step1X-Edit 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 the diffusers quick start
On Deploy, choose Raw GPU. The quick start says to make sure transformers==4.55.0, and that they tested on this version. The v1.2 install, copied. The RegionE line is marked optional in the README.
git clone -b step1xedit_v1p2 https://github.com/Peyton-Chen/diffusers.git
cd diffusers
pip install -e .
pip install RegionE # optional, for faster inference
The example loads stepfun-ai/Step1X-Edit-v1p2. The save lines write 0001-{image_idx}.jpg and 0001-final.jpg. The example, copied:
import torch
from diffusers import Step1XEditPipelineV1P2
from diffusers.utils import load_image
from RegionE import RegionEHelper
pipe = Step1XEditPipelineV1P2.from_pretrained("stepfun-ai/Step1X-Edit-v1p2", torch_dtype=torch.bfloat16)
pipe.to("cuda")
# Import the RegionEHelper
regionehelper = RegionEHelper(pipe)
regionehelper.set_params() # default hyperparameter
regionehelper.enable()
print("=== processing image ===")
image = load_image("examples/0000.jpg").convert("RGB")
prompt = "add a ruby pendant on the girl's neck."
enable_thinking_mode=True
enable_reflection_mode=True
pipe_output = pipe(
image=image,
prompt=prompt,
num_inference_steps=50,
true_cfg_scale=6,
generator=torch.Generator().manual_seed(42),
enable_thinking_mode=enable_thinking_mode,
enable_reflection_mode=enable_reflection_mode,
)
if enable_thinking_mode:
print("Reformat Prompt:", pipe_output.reformat_prompt)
for image_idx in range(len(pipe_output.images)):
pipe_output.images[image_idx].save(f"0001-{image_idx}.jpg", lossless=True)
if enable_reflection_mode:
print(pipe_output.think_info[image_idx])
print(pipe_output.best_info[image_idx])
pipe_output.final_images[0].save(f"0001-final.jpg", lossless=True)
regionehelper.disable()
The v1.2-preview install uses a different branch and does not print the RegionE line. Copied:
git clone -b dev/MergeV1-2 https://github.com/Peyton-Chen/diffusers.git
cd diffusers
pip install -e .
That example calls Step1XEditPipelineV1P2.from_pretrained("stepfun-ai/Step1X-Edit-v1p2-preview", torch_dtype=torch.bfloat16), passes num_inference_steps=28 and true_cfg_scale=4, and saves 0001-{image_idx}.jpg. It does not print the 0001-final.jpg line. The v1.1 install, copied:
git clone -b step1xedit https://github.com/Peyton-Chen/diffusers.git
cd diffusers
pip install -e .
That example calls Step1XEditPipeline.from_pretrained("stepfun-ai/Step1X-Edit-v1p1-diffusers", torch_dtype=torch.bfloat16) and saves 0000.jpg. This page did not run any of the three examples. The model API on 2026-11-13 reported gated false for each of those four ids, including stepfun-ai/Step1X-Edit.
The repository inference script
Section A1’s requirements.txt, scripts/get_flash_attn.py, scripts/run_examples.sh, inference.py, and gradio_app.py are files in stepfun-ai/Step1X-Edit. The README does not print a clone of that repository. The diffusers quick start above is a different directory, and its last command is cd diffusers. This page adds a checkout of the script repository before those relative commands. It was not run.
# Added on this page. The README does not print this clone.
# requirements.txt, scripts/, inference.py, and gradio_app.py are in this checkout.
# The diffusers quick start above is a different directory.
cd "$HOME"
git clone https://github.com/stepfun-ai/Step1X-Edit.git
cd Step1X-Edit
Section A1 says the model was tested with torch==2.3.1 and torch==2.5.1 with cuda-12.1. The requirements install, copied:
pip install -r requirements.txt
The flash-attn helper, copied. The README says the script generates a wheel name and that you then download the matching wheel from the flash-attn release page. This page does not pick a wheel.
python scripts/get_flash_attn.py
Section A2 says bash scripts/run_examples.sh runs the non-quantized weights, and that --quantized quantifies the weights to fp8, and --offload offloads some modules to CPU. The script, copied. Both invocations pass --version v1.1 and --size_level 1024. Neither passes --offload or --quantized.
python inference.py --input_dir ./examples \
--model_path /data/work_dir/step1x-edit/ \
--json_path ./examples/prompt_en.json \
--output_dir ./output_en \
--seed 1234 --size_level 1024 --version v1.1
python inference.py --input_dir ./examples \
--model_path /data/work_dir/step1x-edit/ \
--json_path ./examples/prompt_cn.json \
--output_dir ./output_cn \
--seed 1234 --size_level 1024 --version v1.1
inference.py rewrites --output_dir by appending -offload when that flag is set, -quantized when that flag is set, and then -{size_level}. With the flags the script actually passes, ./output_en becomes ./output_en-1024 and ./output_cn becomes ./output_cn-1024. It then saves each result as os.path.join(output_dir, image_name), where image_name is a key from the JSON file. For --version v1.1 the diffusion file name is step1x-edit-v1p1-official.safetensors. For v1.0 it is step1x-edit-i1258.safetensors. Both versions also join vae.safetensors and a directory named Qwen2.5-VL-7B-Instruct under --model_path. The model API file list for stepfun-ai/Step1X-Edit on 2026-11-13 included vae.safetensors, step1x-edit-i1258.safetensors, and step1x-edit-v1p1-official.safetensors. It did not include an entry named Qwen2.5-VL-7B-Instruct. The script’s --model_path is a local path. The advanced section links stepfun-ai/Step1X-Edit and does not print a download command for that directory. This page does not add one. This page did not run the script.
The multi-GPU command is bash scripts/run_examples_parallel.sh. inference.py defaults --teacache_threshold to 0.2. The README note says that default provides a balance between efficiency and performance. This page does not copy the time column next to that note.
Gradio
The README’s Gradio heading is wrapped in an HTML comment, so this page does not treat that heading as an active section. The comment’s command is python gradio_app.py and it says the demo will run on localhost:32800. gradio_app.py at this repository requires --model_path. The launch line is demo.launch(server_name='0.0.0.0', server_port=32800). --offload and --quantized are optional flags. When --quantized is set, the diffusion file name is step1x-edit-i1258-FP8.safetensors. Otherwise it is step1x-edit-i1258.safetensors. The script sets qwen2vl_model_path to Qwen/Qwen2.5-VL-7B-Instruct. It does not call image.save. The edited image is the Gradio output component. This page did not start the app. From your own computer, the launch port is 32800. How to use SSH port forwarding on a cloud GPU is the tunnel.
Run the next command in the Step1X-Edit checkout from the section above, not in the diffusers directory. This page adds it because the file requires --model_path and the commented README line does not pass it:
# Added on this page. gradio_app.py marks --model_path required.
# The README's commented line is python gradio_app.py with no flags.
python gradio_app.py --model_path /data/work_dir/step1x-edit/
The path is the one scripts/run_examples.sh already prints. This page did not run the command.
ComfyUI
The news line dated Apr 30, 2025 links two community ComfyUI repositories. This page does not copy their install steps. An open-source plan list that includes a ComfyUI checkbox is inside an HTML comment. The ComfyUI examples top-level list on 2026-11-13 included edit_models. That directory’s README did not name Step1X-Edit. Examples HEAD was f9431bb000ce792094ff345446e22cac1ea6cef3. How to install ComfyUI and ComfyUI-Manager on a cloud GPU is a separate install.
When it fails
CUDA out of memory. The documented lower-memory options in section A2 are --quantized and --offload on scripts/run_examples.sh. The printed script does not pass them. The table’s lowest peak is 18GB, on the FP8 + offload row, at each of 512, 786, and 1024. 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. Section A1 says the tests used torch==2.3.1 and torch==2.5.1 with cuda-12.1. Those lines do 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 0001-0.jpg and 0001-final.jpg from the v1.2 example, 0001-0.jpg from the preview example when one image is returned, 0000.jpg from the v1.1 example, and output_en-1024 plus output_cn-1024 from the script as inference.py rewrites those directories, before you destroy the instance. The Gradio script does not write a file. 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 Step1X-Edit README print?
Section A2 prints peak GPU memory at 512, 786, and 1024: 42.5GB, 46.5GB, and 49.8GB for the base weights; 31GB, 31.5GB, and 34GB for FP8; 25.9GB, 27.3GB, and 29.1GB for offload; and 18GB at each size for FP8 plus offload. The note says the test used one H800 GPU and recommends 80GB. The finetuning section’s 24GB sentence is about fine-tuning, not that table. This page does not mark a catalog row as enough. Which listing you can start is on https://cloudgpu.app/deploy.
Which model ids do the quick start and the script use?
The v1.2 example calls from_pretrained with stepfun-ai/Step1X-Edit-v1p2. The preview example uses stepfun-ai/Step1X-Edit-v1p2-preview. The v1.1 example uses stepfun-ai/Step1X-Edit-v1p1-diffusers. scripts/run_examples.sh passes --model_path /data/work_dir/step1x-edit/ and --version v1.1, and inference.py then loads step1x-edit-v1p1-official.safetensors from that directory. The Hugging Face model API on 2026-11-13 reported gated false and cardData.license apache-2.0 for stepfun-ai/Step1X-Edit. This page did not download the repository.
Where do the documented scripts save images, and which port does Gradio use?
The v1.2 example saves 0001-{image_idx}.jpg and 0001-final.jpg. The preview example saves 0001-{image_idx}.jpg. The v1.1 example saves 0000.jpg. inference.py appends -{size_level} to --output_dir and writes each JSON key there, so the script’s ./output_en becomes ./output_en-1024. gradio_app.py calls demo.launch with server_name 0.0.0.0 and server_port 32800, and it does not call image.save. 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 README says Step1X-Edit is licensed under the Apache License 2.0. The model cards report cardData.license apache-2.0. 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)
- stepfun-ai/Step1X-Edit README (diffusers installs,
from_pretrainedids, save filenames, memory table, H800 note, 80GB sentence,scripts/run_examples.sh, Apache 2.0 line): https://github.com/stepfun-ai/Step1X-Edit/blob/main/README.md commit4cca05dfcd6c32dc810d0b4db84c2bf0682a5aeb. Repository HEAD is that commit, committed 2026-04-29T14:30:38Z inference.py(output directory rewrite,step1x-edit-v1p1-official.safetensors,step1x-edit-i1258.safetensors,vae.safetensors): commit7458c982a661cc5732333963c36dc0f71d8863a6scripts/run_examples.sh(--model_path /data/work_dir/step1x-edit/,--size_level 1024,--version v1.1): read from repository HEAD4cca05dfcd6c32dc810d0b4db84c2bf0682a5aeb. The README does not printgit clonefor this repository. This page adds that clone before the relative script commandsgradio_app.py(server_name0.0.0.0,server_port32800, required--model_path): commit72a33e54150dcf2d7f721eced7bad8bd84b73bd2LICENSE(Apache 2.0, January 2004, unfilled copyright template): commit34a3243bab381be9ab27acd4baf98fe256b830cf. GitHub license field Apache-2.0- Model cards
stepfun-ai/Step1X-Edit,stepfun-ai/Step1X-Edit-v1p2,stepfun-ai/Step1X-Edit-v1p2-preview, andstepfun-ai/Step1X-Edit-v1p1-diffusers(cardData.licenseapache-2.0,gatedfalse, file list of the first id): read 2026-11-13 - ComfyUI examples
edit_models/README.md(does not name Step1X-Edit): examples HEADf9431bb000ce792094ff345446e22cac1ea6cef3 - Public GPU memory: https://cloudgpu.app/gpu-prices.json (
updated_at2026-11-13T15:11:42.412Z) and https://cloudgpu.app/v1/public/gpu-catalog (generated_at2026-11-13T15:11:42.831Z).GET /v1/public/compute-capabilitiesreturned feature flags and no GPU list. The catalog had no Step1X-Edit 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).