Skip to main content

Immich GPU vs CPU: I Timed an RTX 2060 Super Against Two Processors

I ran the same 10,000 photos through Immich search and face models on an Intel NUC, a Core i9 and an RTX 2060 Super. The card was up to 14 times faster. Is it worth it?

Same photos, same models, four configurations. The graphics card won by a wide margin, and for my library it still would not be worth buying.

The short answer

A graphics card makes Immich’s face recognition about 8 times faster than a small processor, and up to 14 times when given more work at once. A much bigger desktop processor was only about a third quicker. For my 54,000-item library that turns a three-hour one-off job into fifteen minutes.

8.4×faster face recognition on the RTX 2060 Super than on the NUC
1.3×is all a ten-core Core i9 gained over the NUC’s processor
15 minfor the whole library on the card, against 3 h 10 min on the NUC

Where this comes from

Measured on my own hardware on 11 October 2026, using photos from my own Immich library. I timed Immich’s machine-learning container directly. Addresses and paths are removed. Where a figure is calculated, not measured, it says so.

The question

In an earlier test I found that my NUC, with no graphics card, indexed my whole library in about an hour. That answered “do I need a GPU?” for me. It did not answer the next question people ask: how much faster would one be?

Test setup

Mini PC
Intel NUC8i7BEH, Core i7-8559U, 4 cores / 8 threads (2018), 16 GB, Docker on Ubuntu
Desktop
Core i9-10900K, 10 cores / 20 threads (2020), 32 GB, Docker Desktop on Windows 11
Graphics card
NVIDIA RTX 2060 Super, 8 GB (2019), in the desktop
Software
Immich 3.3.1 machine-learning images, default models ViT-B-32__openai and buffalo_l
Advertisement

Method

I drew one fixed, random sample from my library and used it for every run: 10,000 previews for the search model and 3,000 photo previews for the face model.

Immich feeds its models the preview image it has already made for each item, so that is what I sent. Each file went to the machine-learning container’s /predict endpoint, which is the call Immich’s server makes, and I recorded how long each call took. Both models were loaded and warmed before the clock started.

Every configuration ran two requests at a time. On the graphics card I also ran eight at a time, to see how much headroom it had. Nothing was written to my Immich server.

One difference between the machines: the NUC read the previews from my NAS over the network, the desktop from its own SSD. In the earlier test the network read took 7 milliseconds against 123 for the model, so it does not change the picture.

Results

No errors in any run. Every configuration found exactly the same 4,664 faces in the sample, so the graphics card is doing the same work, not a rougher version of it.

Face recognition

photos per second, higher is better
NUC, Core i7-8559U5.1
Desktop, Core i9-10900K only6.9
RTX 2060 Super42.6
RTX 2060 Super, 8 at a time72.7

Search indexing

items per second, higher is better
NUC, Core i7-8559U14.4
Desktop, Core i9-10900K only19.0
RTX 2060 Super50.9
RTX 2060 Super, 8 at a time143.0

Blue bars are the graphics card. Grey bars are processors only. Two requests at a time unless noted.

Time per image, at two requests at a time:

Configuration Search, median Faces, median Faces, slowest 5%
NUC, Core i7-8559U 0.123 s 0.279 s over 0.863 s
Desktop, Core i9-10900K only 0.103 s 0.217 s over 0.649 s
Desktop, RTX 2060 Super 0.039 s 0.042 s over 0.076 s

During the graphics-card run the card reported 3.5 GB of its 8 GB in use and was about half busy.

What the numbers mean

A
The graphics card matters most for faces.

Face recognition went from 5.1 to 42.6 photos a second at the same setting, a little over 8 times faster. Search indexing went from 14.4 to 50.9, about 3.5 times.

B
It also evens out the slow photos.

On a processor, the slowest 5% of photos took three times as long as a typical one, which I take to be group shots with many faces. On the card that tail almost disappears.

C
At the default setting the card is half idle.

Two requests at a time left it about 50% busy. Eight at a time nearly tripled search indexing. If you add a GPU and leave the job concurrency where it was, you use roughly half of what you bought.

D
A faster processor buys very little.

The desktop’s Core i9 has more than twice the cores of the NUC’s chip and is two years newer. It was 32% faster at search and 35% faster at faces.

E
A modest card is plenty.

A 2019 card with 8 GB was using under half its memory. You do not need a current or high-end GPU for Immich’s default models.

What that means for a whole library

Calculated from the rates above for my library of 51,126 previews and 39,546 photos. These are not end-to-end timings.

Configuration Search index Faces Both
NUC, Core i7-8559U 59 min 2 h 10 min about 3 h 10 min
Desktop, Core i9-10900K only 45 min 1 h 36 min about 2 h 20 min
Desktop, RTX 2060 Super 17 min 15 min about 32 min
Desktop, RTX 2060 Super, 8 at a time 6 min 9 min about 15 min

Is it worth it?

The saving is real, and for me it is a one-off. My library was imported once and nothing new is being added, so a GPU would have saved under three hours, a single time, on a job that ran in the background anyway.

A GPU is worth it if

  • your library is in the hundreds of thousands: at 500,000 photos the NUC’s rates mean about ten hours for search and over a day for faces
  • you re-run jobs, for example to try a different search model
  • a card is already sitting in a machine on your network

Skip it if

  • your library was imported once and rarely grows
  • the job can run in the background for an afternoon
  • the money could buy storage or a second copy of your photos
Limits of this test
  • One card, two processors. A newer GPU would be faster still; an older or smaller one may not reach these figures.
  • Not Immich’s own job queue. I timed the model step. Immich’s real jobs also write to its database and, for faces, group the results into people.
  • Thumbnails and video transcoding were not tested. They are separate jobs and can take longer than the machine learning.
  • The desktop ran Docker Desktop on Windows, which adds a virtualisation layer.
  • Power and cost were not measured.

Reproduce it

  1. Pick a fixed random sample of preview files from your library and copy the same files to every machine.
  2. Start the machine-learning image on its own, with the model port published. For an NVIDIA card:
docker run -d --gpus all -p 3003:3003 -v ml-cache:/cache \
  ghcr.io/immich-app/immich-machine-learning:v3-cuda

Use the tag without -cuda for a processor-only run.

  1. Send each file to http://localhost:3003/predict as a multipart form with an image field and an entries field. For search:
{"clip": {"visual": {"modelName": "ViT-B-32__openai"}}}
  1. Send a few files first so the model is loaded, then time the rest with a fixed number of requests in parallel.
  2. Confirm the container log shows CUDAExecutionProvider, so you know the card was used.

Takeaway

A GPU makes Immich’s machine learning roughly ten times faster, and a faster processor barely helps. Whether that matters depends on how often the job runs: for a growing or very large library it is a clear win, and for a finished archive it saves one afternoon.

Your turn

Would you add a GPU for Immich?

I decided it wasn’t worth it for an archive my size. Where do you land? If you have numbers from your own hardware, send them and I’ll add them to the table.

Follow the conversation on XEach answer opens a post on X that you can edit before sending.

Keep reading

AI assisted with running the measurements and drafting this article. The hardware, the library and every figure are from my own setup.

Written by Engineer running a 24/7 homelab since 2022. Every guide here is built and tested on my own hardware. No paid placements.

Keep reading