🧠NAS как ИИ-сервер

Это исходный отчёт фазы как есть — со всеми таблицами и методикой. Живая версия: 🔍 Поиск по фото.

Фаза 1: ML Immich на NAS (поиск по фото, лица, OCR)

Прогон: 18 октября 2026
Хост: UGREEN DXP4800 Pro, i3-1315U, 32 GB, iGPU Intel RPL-U (Xe-LP, 64 EU)
Что меряли: как быстро и в каком объёме памяти ML-контейнер Immich считает поиск по фото, лица и текст на CPU и на iGPU (OpenVINO), и даёт ли iGPU то же качество.

Коротко

Как мерили

CLIP: скорость и память

Фото — медиана последовательного запроса (ms) и пропускная способность при 2 параллельных запросах (фото/с), как у задачи Smart Search в Immich по умолчанию. Текст — медиана одного поискового запроса на русском. «Индекс 50k» — оценка времени на 50,000 фото при этой пропускной способности. Recall — из документации Immich (не наш замер). RAM — пик памяти: максимум из RSS процессов контейнера (видит веса, прочитанные через mmap) и docker stats (видит буферы iGPU).

Модель Recall en / ru (Immich) CPU фото ms CPU фото/с iGPU фото ms iGPU фото/с Ускорение Текст ms CPU / iGPU RAM CPU / iGPU, GiB Индекс 50k на iGPU
ViT-B-32__openai 69.90 / — 62.1 20.2 28.4 48.7 2.4× 36.2 / 16.2 0.7 / 1.2 17 мин
XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k 76.91 / 76.44 62.1 20.2 28.3 48.8 2.4× 72.8 / 22.0 1.3 / 1.7 17 мин
ViT-B-32-SigLIP2-256__webli 82.28 / 78.06 77.0 15.6 27.8 50.8 3.3× 62.2 / 19.4 1.4 / 2.2 16 мин
ViT-B-16-SigLIP2__webli 84.86 / 80.91 206.6 5.7 49.5 23.9 4.2× 62.2 / 21.4 1.0 / 2.3 35 мин
ViT-B-16-SigLIP-i18n-256__webli 79.78 / 79.35 269.2 4.2 55.4 21.1 5.0× 60.4 / 18.1 0.8 / 1.8 39 мин
nllb-clip-base-siglip__v1 80.16 / 78.91 640.3 1.8 103.1 10.7 5.9× 118.2 / 31.3 1.2 / 2.9 1.3 ч
ViT-L-16-SigLIP2-256__webli 85.03 / 83.11 899.5 1.2 153.4 6.9 5.7× 206.6 / 46.5 2.8 / 4.3 2.0 ч
ViT-SO400M-14-SigLIP2__webli 85.53 / 83.50 1200.3 0.9 210.8 4.9 5.4× 266.7 / 60.9 3.8 / 6.3 2.8 ч
ViT-SO400M-16-SigLIP2-256__webli 85.62 / 83.90 1234.0 0.9 208.8 5.0 5.3× 285.2 / 60.9 3.8 / 6.7 2.8 ч
ViT-L-16-SigLIP2-384__webli 85.47 / 83.69 2148.9 0.5 291.9 3.5 7.0× 206.6 / 46.5 3.0 / 4.9 4.0 ч
nllb-clip-large-siglip__mrl 83.23 / 83.31 3720.0 0.3 1217.9 0.8 2.9× 378.9 / 89.3 4.1 / 7.1 16.8 ч
XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k 82.43 / 82.69 1823.2 0.6 267.2 3.7 5.8× 242.1 / 60.5 4.4 / 3.8 3.8 ч
ViT-SO400M-16-SigLIP2-384__webli 85.99 / 84.54 2970.6 0.4 453.2 2.2 6.1× 268.5 / 60.9 4.3 / 5.9 6.2 ч

CLIP: контрольный recall на Crossmodal-3600 (наш замер)

Text→image по всем 3600 фото; recall = среднее R@1, R@5, R@10. Immich усредняет ещё XTD-10/Flickr30k, поэтому точного совпадения ждать не стоит; важен порядок моделей и совпадение CPU с iGPU.

Модель Устройство ru R@1 / R@5 / R@10 ru среднее en среднее Immich ru / en
ViT-B-32__openai iGPU 0.44 / 1.17 / 1.5 1.04 61.16 — / 69.90
ViT-B-16-SigLIP2__webli CPU 69.53 / 91.35 / 95.42 85.43 77.33 80.91 / 84.86
ViT-B-16-SigLIP2__webli iGPU 69.74 / 91.35 / 95.42 85.5 77.31 80.91 / 84.86
ViT-SO400M-16-SigLIP2-256__webli iGPU 74.15 / 92.49 / 96.24 87.63 76.97 83.90 / 85.62

Лица

Детекция + эмбеддинг всех найденных лиц за один запрос, minScore 0.7 (по умолчанию в Immich).

Модель CPU фото ms CPU фото/с iGPU фото ms iGPU фото/с RAM CPU / iGPU, GiB Результат на 200 фото
buffalo_s 28.6 52.8 12.7 109.9 0.5 / 0.4 45 лиц на 20 фото
buffalo_m 71.6 17.1 19.2 64.9 0.6 / 1.5 58 лиц на 22 фото
buffalo_l 155.2 6.6 34.1 32.2 0.8 / 1.5 69 лиц на 25 фото
antelopev2 156.0 5.9 34.4 29.3 0.8 / 1.9 69 лиц на 25 фото

OCR

Детекция + распознавание текста, настройки Immich по умолчанию (maxResolution 736). На фото из Crossmodal-3600 текста мало, поэтому это скорость «типичного» фото, а не скана документа.

Модель CPU фото ms CPU фото/с iGPU фото ms iGPU фото/с RAM CPU / iGPU, GiB Результат на 200 фото
PP-OCRv5_mobile 76.2 16.5 29.9 44.4 0.6 / 2.4 84 строк на 32 фото
ESLAV__PP-OCRv5_mobile 75.4 17.4 — — 0.6 / 0.4 84 строк на 32 фото
PP-OCRv5_server 938.4 1.2 320.5 3.0 1.3 / 5.4 200 строк на 42 фото
PP-OCRv6_small 93.4 12.9 54.3 25.0 0.6 / 2.6 119 строк на 47 фото

OCR: русский текст (синтетические вывески)

40 «фото» вывесок и надписей с известным текстом (make_ocr_signs.py: 7 шрифтов, поворот, размытие, JPEG). Слова — доля слов эталона, найденных в распознанном тексте; CER — по всему тексту. Время — медиана на фото.

Модель Слова найдены, % CER, % CPU ms iGPU ms
PP-OCRv5_mobile 19.0 87.2 217 56
ESLAV__PP-OCRv5_mobile 96.2 4.2 186 не запускается
PP-OCRv5_server 18.1 89.6 2396 760
PP-OCRv6_small 18.1 91.3 247 76

Выводы и рекомендации

Что видно в цифрах

Как настроить Immich

Вариант A — CPU-образ, всё работает (для старта рекомендую его):

Вариант B — iGPU, быстрее и с более сильной моделью поиска:

В любом варианте:
- сменить модель поиска с ViT-B-32__openai до первой индексации; - держать MACHINE_LEARNING_MODEL_TTL по умолчанию (модели выгружаются через 5 минут простоя), тогда память занята только во время индексации.

Ограничения