104 lines
3.3 KiB
Markdown
104 lines
3.3 KiB
Markdown
# 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 |
|