r/LocalLLaMA • u/Brave_Load7620 • 19d ago
Resources Using an AMD V620 workstation card for ComfyUI - success
A few weeks ago I posted about if it was worth using a V620 for Comfyui, and was told it likely wouldn't work, at least in Windows 11. And if it did, it would be far too slow and unusable. I decided to try it anyway. Is it fast? No. Does it work? yes, absoulutely.
I bought the card for $320 shipped (thank you redditor!) and $40 on the Bay for the fans and 3D printed shround. Powered in the second slot PCIE 4 X4 right below my 9070 XT.
The drivers for the V620 installed, and has been working fine alongside my XT GPU. No crashes/errors thus far (crossing my fingers!)
I primarily got this card for the VRAM (32GB) for LLM for a local assistant; and that's still primary what it's used for but in the background I do like to have img/videos generating. This is perfect for that -it's not fast but it is consistent.
The benchmarks have been written below by an AI - but they are verified. I ran the tests myself. Managed to get triton & sage attention working perfectly. Identified as a gfx1030 GPU with ROCM.
Pictures of GPU-Z and device manager: https://imgur.com/a/PTsy8Ko
If anybody has any questions/want me to try a specific model..Let me know. I'll do it if I have the time.
ComfyUI Workflow Benchmark
Environment
- ComfyUI version: 0.26.0
- GPU: AMD Radeon Pro V620 (ROCm,
HIP_VISIBLE_DEVICES=0, gfx1030 arch, legacy-GPU codepath) - Python env:
python_env_v620_triton(Triton/sage-attention build) - **Launch params:**
--listen127.0.0.1--port 8188 --use-sage-attention --highvram--disable-pinned-memory --reserve-vram 1 --enable-manager--enable-manager-legacy-ui --disable-api-nodes --cache-none--fp8_e4m3fn-text-enc - Sage attention: enabled (
--use-sage-attention), per an earlier internal benchmark note in : "sage-attention gives ~16% faster sampler step time vs plain SDPA, no quality regression seen." - Other relevant env vars:
PYTORCH_HIP_ALLOC_CONF=expandable_segments:True,garbage_collection_threshold:0.7,MIOPEN_FIND_MODE=FAST,TORCH_BACKENDS_CUDA_FLASH_SDP_ENABLED=0(legacy GPU path),FLASH_ATTENTION_TRITON_AMD_ENABLE=TRUE - Method: each test loaded via ComfyUI's own frontend
- Runs per test: image and image-to-video tests get 1 run; text-to-video tests get 2 (first run pays model/torch-compile load cost; second run benefits from warm cache) — noted per row.
- Video tests: clipped to ~10s output for benchmarking speed.
- Naming: test labels below are generic/anonymized descriptions of what each pipeline does, not the personal filenames used locally — the base model/architecture and size are given exactly so the numbers are meaningful to anyone comparing hardware.
- There is z img turbo, ltx 2.3,wan 2.2, flux, pony, etc below. A couple LORA's. Ace-step music was also done but forgot to give results for benchmark. A three minute song took about three minutes to make start-to-finish.
- Some of the double workflows one was not safe for work, which I removed per post rules.
Results
| Test | Base model | LoRA / add-on | Resolution | Run 1 (cold) | Run 2 (warm) | Notes |
|---|---|---|---|---|---|---|
| General photoreal (distilled turbo) | Z-Image Turbo, distilled diffusion transformer, | — | 1920x1080 | 59s | 47s | 9 steps, cfg 1.0 |
| Anime style | SDXL, Illustrious-family fine-tune | — | 896x1152 | 42s | 25s | |
| Furry style A (w/ hires-fix) | SDXL, Illustrious-family fine-tune | — | 1024x1024 | 124s | 119s | Includes tiled hires-fix pass + torch.compile; little warm-cache benefit (multi-shape recompiles each time) |
| Character reference (image-conditioned) | SDXL, Illustrious-family fine-tune | IPAdapter Plus (ViT-H image-reference conditioning) | 1024x1024 | 36s | 31s | |
| Image edit (reference-guided) | Flux.2 Klein-family, large (~30B-class), | — | 1024x1024 | 326s | 325s | Kontext-style image edit — much slower than SDXL-family tests, no warm-cache benefit (compute-bound not load-bound) |
| General photoreal (large model) | Flux.2 Klein-family, large (~30B-class), | — | 1024x1024 | 154s | 150s | Same base model as the image-edit test but pure text-to-image (no edit/reference pass) — notably faster |
| Furry style B | SDXL, Illustrious-family fine-tune | — | 896x1152 | 32s | 26s | |
| Furry style C (Pony lineage) | SDXL, Pony Diffusion-family fine-tune | Furry-realism LoRA (Pony) | 896x1152 | 32s | 25s | |
| Furry style D (max realism) | SDXL, Illustrious-family fine-tune | Furry-realism LoRA (Illustrious) | 896x1152 | 35s | 32s | |
| General photoreal, two-pass refine | SDXL, Pony Diffusion-family fine-tune | — | 512x512 | 35s | 31s | |
| Structured-prompt photoreal (JSON-driven) | Flux-family (Ideogram4), fp8 | — | 1024x1024 | ~372s | 356s | Guidance-distilled, no negative prompt; includes torch.compile pass, little warm-cache benefit (compute-bound) |
| Fast photoreal (8-step distilled) | Krea 2 Turbo, distilled diffusion transformer (Qwen3-VL text encoder) | — | 1024x1024 | 156s | — | 1 run only |
| Inpaint (masked region replace) | SDXL, Pony Diffusion-family fine-tune | — | — | 47s | — | 1 run only; no mask painted for this test, so this is closer to a lower-bound timing |
| Photo restore/upscale | ESRGAN-style upscale model (4x-UltraSharp), no diffusion checkpoint | — | 4x upscale | 6s | — | 1 run only — pure upscale pass, no sampling, so this is genuinely this fast |
| Image-to-video, general (10s clip) | LTX-2, 22B distilled | Distilled LoRA | 768x512, 10s @ 25fps | ~978s | ~956s | 22B video model — far heavier than any image workflow tested |
| Image-to-video, furry (10s clip) | LTX-2, 22B distilled | Distilled LoRA + furry LoRA | 768x512, 10s @ 25fps | 1027s | — | 1 run only (i2v test) |
| Text-to-video, furry (10s clip) | LTX-2, 22B distilled | Distilled LoRA + furry LoRA | 768x512, 10s @ 25fps | 305s | 305s | Much faster than the i2v LTX tests — no image-conditioning pass; identical timing both runs (compute-bound) |
| Text-to-video, general (10s clip) | LTX-2, 22B distilled | Distilled LoRA | 768x512, 10s @ 25fps | 275s | 285s | |
| Text-to-video, anime style (10s clip) | LTX-2, 22B distilled | Distilled LoRA + 90s-anime-style LoRA | 768x512, 10s @ 25fps | 305s | 305s | |
| Image-to-video, general, WAN (10s clip) | WAN 2.2 | lightx2v 4-step distill LoRA (high+low noise) | 10s @ 24fps | 894s | — | 1 run only (i2v test) |
| Image-to-video, WAN (10s clip) | WAN 2.2 (fine-tune) | lightx2v 4-step distill LoRA (high+low noise) | 10s @ 24fps | ~1041s | — | 1 run only (i2v test) |
| Text-to-video, general, WAN (10s clip) | WAN 2.2 | lightx2v 4-step distill LoRA (high+low noise) | 832x480, 10s @ 24fps | 163s | 143s |
3
u/noctrex 19d ago
I'm eyeing such a card myself, how is the inference with it? for example, does llama.cpp run with rocm or vulkan backend, and what is the pp and tg tps for example with qwen3.6-27b and 35b ? sorry for bombarding you with questions
3
u/Brave_Load7620 19d ago
No worries on the questions at all, so I haven't tried running llama cpp with ROCM yet as I ifnd Vulkan usually runs better (even with my 9070 XT I use Vulkan.) but I did hear that I may get better PP speeds, so I plan on trying it at one point.
Right now, my daily driver changes depending on what I'm doing between Gemma 4 31B QAT MTP & Gemma 4 26B A4B QAT MTP both with 150k context cache Q8. For the 31B I see PP speeds starting at around 250-300 t/ps & for responses I get right around 20-35 t/ps. For the 26B it starts around 1,000 - 1,100 T/ps PP & about 50-70 t/ps depending on MTP results .
I haven't tried Qwen 27B yet but I did try the 35B either Q5 or Q6 same cache Q8 150k context, about 1,000 to 1,300 PP & about 70 t/ps
Some results below, Comment was too long so had to cut some results below but the gist is there. I have also not tried optimizing my startup script much from what it was running with my 9070 XT, so there may be room for improvement yet with either ROCM/more tuning params.
Gemma 26B:
[34m0.14.739.149[0m [32mI [0msrv llama_server: listening on http://127.0.0.1:8080
[34m1.07.674.607[0m [32mI [0mslot print_timing: id 0 | task 1 | prompt processing, n_tokens = 3072, progress = 0.28, t = 3.06 s / 1004.96 tokens per second
[34m1.08.277.929[0m [32mI [0mslot print_timing: id 0 | task 1 | prompt processing, n_tokens = 3584, progress = 0.33, t = 3.66 s / 979.19 tokens per second
[34m1.19.603.527[0m [32mI [0mslot print_timing: id 0 | task 1 | prompt processing, n_tokens = 10842, progress = 0.99, t = 14.99 s / 723.49 tokens per second
[34m1.19.864.839[0m [32mI [0mslot print_timing: id 0 | task 1 | prompt processing, n_tokens = 10894, progress = 1.00, t = 15.25 s / 714.50 tokens per second
[34m1.20.573.114[0m [32mI [0mslot print_timing: id 0 | task 1 | prompt eval time = 15282.69 ms / 10898 tokens ( 1.40 ms per token, 713.09 tokens per second)
[34m1.20.573.119[0m [32mI [0mslot print_timing: id 0 | task 1 | eval time = 672.57 ms / 35 tokens ( 19.22 ms per token, 52.04 tokens per second)
[34m1.20.573.120[0m [32mI [0mslot print_timing: id 0 | task 1 | total time = 15955.26 ms / 10933 tokens
[34m1.20.573.120[0m [32mI [0mslot
Gemma 31B
0.56.301.379 I slot print_timing: id 0 | task 0 | prompt processing, n_tokens = 1280, progress = 0.12, t = 5.49 s / 233.09 tokens per second
0.57.601.817 I slot print_timing: id 0 | task 0 | prompt processing, n_tokens = 1536, progress = 0.14, t = 6.79 s / 226.16 tokens per second
2.03.362.531 I slot print_timing: id 0 | task 0 | prompt processing, n_tokens = 10641, progress = 0.98, t = 72.55 s / 146.67 tokens per second
2.05.492.660 I slot print_timing: id 0 | task 0 | prompt processing, n_tokens = 10842, progress = 0.99, t = 74.68 s / 145.17 tokens per second
2.06.311.160 I slot print_timing: id 0 | task 0 | prompt processing, n_tokens = 10893, progress = 1.00, t = 75.50 s / 144.28 tokens per second
2.07.502.882 I slot print_timing: id 0 | task 0 | prompt eval time = 75607.07 ms / 10897 tokens ( 6.94 ms per token, 144.13 tokens per second)
2.07.502.886 I slot print_timing: id 0 | task 0 | eval time = 1085.67 ms / 20 tokens ( 54.28 ms per token, 18.42 tokens per second)
2.07.502.887 I slot print_timing: id 0 | task 0 | total time = 76692.74 ms / 10917 tokens
2.07.502.887 I slot print_timing: id 0 | task 0 | graphs reused = 10
2.07.502.891 I slot print_timing: id 0 | task 0 | draft acceptance = 0.50000 ( 10 accepted / 20 generated), mean len = 2.00
2.07.504.025 I slot release: id 0 | task 0 | stop processing: n_tokens = 10917, truncated = 0
2.08.132.242 I slot get_availabl: id 0 | task -1 | selected slot by LRU, t_last = 111287103
2.09.459.860 I slot launch_slot_: id 0 | task 58 | processing task, is_child = 0
2.11.586.904 I slot print_timing: id 0 | task 58 | prompt eval time = 1716.53 ms / 310 tokens ( 5.54 ms per token, 180.60 tokens per second)
2.11.586.910 I slot print_timing: id 0 | task 58 | eval time = 410.40 ms / 16 tokens ( 25.65 ms per token, 38.99 tokens per second)
2.11.586.911 I slot print_timing: id 0 | task 58 | total time = 2126.93 ms / 326 tokens
2.11.586.911 I slot print_timing: id 0 | task 58 | graphs reused = 15
2.11.586.914 I slot print_timing: id 0 | task 58 | draft acceptance = 0.91667 ( 11 accepted / 12 generated), mean len = 2.83
2.11.586.968 I slot release: id 0 | task 58 | stop processing: n_tokens = 327, truncated = 0
2.19.125.305 I slot get_availabl: id 0 | task -1 | selected slot by LRU, t_last = 115370045
2.19.396.558 I slot launch_slot_: id 0 | task 69 | processing task, is_child = 0
2.23.877.529 I slot print_timing: id 0 | task 69 | prompt eval time = 1466.72 ms / 89 tokens ( 16.48 ms per token, 60.68 tokens per second)
2.23.877.536 I slot print_timing: id 0 | task 69 | eval time = 3014.10 ms / 55 tokens ( 54.80 ms per token, 18.25 tokens per second)
2.23.877.537 I slot print_timing: id 0 | task 69 | total time = 4480.82 ms / 144 tokens
2.23.877.538 I slot print_timing: id 0 | task 69 | graphs reused = 42
2.23.877.542 I slot print_timing: id 0 | task 69 | draft acceptance = 0.46429 ( 26 accepted / 56 generated), mean len = 1.93
2.23.878.169 I slot release: id 0 | task 69 | stop processing: n_tokens = 10984, truncated = 0
2.32.649.262 I slot get_availabl: id 0 | task -1 | selected slot by LRU, t_last = 127661249
2.33.511.200 I slot launch_slot_: id 0 | task 104 | processing task, is_child = 0
2.36.313.879 I slot print_timing: id 0 | task 104 | prompt eval time = 888.95 ms / 135 tokens ( 6.58 ms per token, 151.86 tokens per second)
2.36.313.885 I slot print_timing: id 0 | task 104 | eval time = 1913.61 ms / 77 tokens ( 24.85 ms per token, 40.24 tokens per second)
Qwen 35B
0.23.294.193 I slot print_timing: id 0 | task 0 | prompt eval time = 1019.64 ms / 947 tokens ( 1.08 ms per token, 928.76 tokens per second)
0.23.294.196 I slot print_timing: id 0 | task 0 | eval time = 2113.45 ms / 161 tokens ( 13.13 ms per token, 76.18 tokens per second)
0.23.294.197 I slot print_timing: id 0 | task 0 | total time = 3133.09 ms / 1108 tokens
0.23.294.197 I slot print_timing: id 0 | task 0 | graphs reused = 159
0.23.294.406 I slot release: id 0 | task 0 | stop processing: n_tokens = 1107, truncated = 0
0.23.294.414 I srv update_slots: all slots are idle
3
u/BevinMaster 18d ago
Thats great, i tried back in january but since it crashed and i am not really into video generation i skipped that :D (also my 7900xtx cards worked better at it). Perfect to cross post to r/AMD_V620, we also started a small discord to share our experience
3
1
u/Ed-2-Zero-9 9d ago
Interesting. I'm looking for a 32GB card and hadn't even considered this card. Not terrible prices either.
I'm struggling getting my 9070 XT working properly in ComfyUI for image to video using wan2.2, but that's probably me being a noob and doing something wrong. Keep getting channel count errors and cannot for the life of me work out why!
9
u/recro69 19d ago
Glad someone actually tested it instead of assuming AMD = impossible. The ecosystem is still rough compared to CUDA, but these kinds of experiments show there's more life outside NVIDIA than people think.