# Immich ML GPU Cache Paths and Model Names Known working for Immich v2.7.5. ## Model Sources All models hosted on HuggingFace under `immich-app/` org. | Model Name | HuggingFace Repo | Files | Size | |---|---|---|---| | `ViT-B-32__openai` | `immich-app/ViT-B-32__openai` | visual/model.onnx (335 MB), textual/model.onnx (254 MB) | ~590 MB total | | `buffalo_l` | `immich-app/buffalo_l` | detection/model.onnx (16 MB), recognition/model.onnx (166 MB) | ~182 MB total | ## Cache Directory Structure Cache root: `/cache` (from `MACHINE_LEARNING_CACHE_FOLDER` env var). ### CLIP (smart search) | Field | Value | |---|---| | Model task | `SEARCH` → `"clip"` | | Model type | `VISUAL` → `"visual"`, `TEXTUAL` → `"textual"` | | Cache dir | `/cache/clip/ViT-B-32__openai` | | Model dir (visual) | `/cache/clip/ViT-B-32__openai/visual` | | Model path (visual) | `/cache/clip/ViT-B-32__openai/visual/model.onnx` | | Model dir (textual) | `/cache/clip/ViT-B-32__openai/textual` | | Model path (textual) | `/cache/clip/ViT-B-32__openai/textual/model.onnx` | ### Face detection & recognition | Field | Value | |---|---| | Model task | `FACIAL_RECOGNITION` → `"facial-recognition"` | | Cache dir | `/cache/facial-recognition/buffalo_l` | | Model dir (detection) | `/cache/facial-recognition/buffalo_l/detection` | | Model path (detection) | `/cache/facial-recognition/buffalo_l/detection/model.onnx` | | Model dir (recognition) | `/cache/facial-recognition/buffalo_l/recognition` | | Model path (recognition) | `/cache/facial-recognition/buffalo_l/recognition/model.onnx` | ## Code Derivation Cache paths follow this pattern: ```python from immich_ml.config import settings # settings.cache_folder = "/cache" # model_task.value = one of: "clip", "facial-recognition", "ocr" # model_name = e.g. "ViT-B-32__openai" or "buffalo_l" # model_type.value = one of: "visual", "textual", "detection", "recognition" cache_dir = settings.cache_folder / model_task.value / model_name model_dir = cache_dir / model_type.value model_path = model_dir / "model.onnx" ``` ## Pre-download command ```python from huggingface_hub import snapshot_download import os # For CLIP os.makedirs("/cache/clip/ViT-B-32__openai", exist_ok=True) snapshot_download( "immich-app/ViT-B-32__openai", cache_dir="/cache/clip/ViT-B-32__openai", local_dir="/cache/clip/ViT-B-32__openai", ignore_patterns=["*.armnn", "*.rknn"], ) # For face detection/recognition os.makedirs("/cache/facial-recognition/buffalo_l", exist_ok=True) snapshot_download( "immich-app/buffalo_l", cache_dir="/cache/facial-recognition/buffalo_l", local_dir="/cache/facial-recognition/buffalo_l", ignore_patterns=["*.armnn", "*.rknn"], ) ``` ## docker-compose GPU config Required addition to `immich-machine-learning` service: ```yaml deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] ``` ## Environment variables | Variable | Value | Effect | |---|---|---| | `DEVICE` | `cuda` | Use CUDA (set by -cuda image) | | `MACHINE_LEARNING_MODEL_ARENA` | `false` | Load all models at once. Set `true` to load one at a time (saves VRAM but slower switching) | | `MACHINE_LEARNING_DEVICE_ID` | `0` | GPU device index | | `MACHINE_LEARNING_CACHE_FOLDER` | `/cache` | Where models are stored |