Як працюють функції ШІ
На цій сторінці описано, що відбувається “під капотом”: яку бібліотеку інференсу завантажує Darktable, доступні їй постачальники виконання, а також як зберігаються та активуються моделі.
🔗the inference runtime
Darktable завантажує моделі через ONNX Runtime – бібліотеку інференсу промислового рівня, спочатку розроблену в Microsoft, а тепер регульовану Linux Foundation – яка приймає моделі у відкритому форматі ONNX. ONNX є фактичним стандартом для обміну моделями машинного навчання між фреймворками (PyTorch, TensorFlow тощо), тому ми можемо взяти модель, навчену в будь-якому з них, експортувати її в ONNX та запустити з Darktable, не переносячи з собою її навчальний фреймворк.
Для кожного процесу Darktable завантажується лише одна бібліотека ONNX Runtime. Вона вибирається в такому порядку:
-
Якщо поле Бібліотека ONNX Runtime у налаштуваннях ШІ вказує на файл (або змінна середовища
DT_ORT_LIBRARYвказує на нього), завантажується ця бібліотека. -
В іншому випадку, ONNX Runtime, що постачається з Darktable, завантажується з каталогу встановлення.
Власний ONNX Runtime інсталяції Darktable працює лише на CPU в Linux, підтримує DirectML у Windows та CoreML у macOS. Це робить кожну інсталяцію функціональною “з коробки”. Якщо вам потрібне прискорення GPU від NVIDIA, AMD або Intel у Linux або Windows, ви замінюєте бібліотеку збіркою з підтримкою GPU – див. Прискорення GPU.
🔗Постачальники виконання
Постачальник виконання (EP) – це бекенд ONNX Runtime для певного апаратного прискорювача – саме такою є концепція, яку пропонує Darktable для налаштування Прискорення ШІ. Одна бібліотека ONNX Runtime може постачатися з кількома провайдерами; які з них фактично працюватимуть, залежить від того, які з них скомпільовані в бібліотеку, і які доступні у вашій системі. Меню в цьому налаштуванні містить список лише тих, які підтримує поточна завантажена бібліотека:
-
Авто – дозволити ONNX Runtime вибрати найкращого постачальника під час генерації (“інференсу”), використовуючи CPU як резервний варіант. Рекомендовано, якщо у вас немає причин для перевизначення.
-
CPU – завжди доступний. Добре працює для маскування об’єктів та нечастого знешумлення/збільшення масштабу. Повільний для інтерактивної роботи та для масштабування в 4 рази.
-
NVIDIA CUDA – графічні процесори NVIDIA на Linux/Windows. Вимагає ONNX Runtime з підтримкою CUDA та відповідний набір інструментів CUDA + cuDNN 9.x у вашій системі.
-
AMD MIGraphX – графічні процесори AMD на Linux. Вимагає ONNX Runtime з підтримкою MIGraphX та встановлення ROCm 6.3+. Не підтримується у Windows.
-
Intel OpenVINO – інтегровані та дискретні графічні процесори Intel на Linux/Windows. Середовище виконання OpenVINO постачається разом із встановленим пакетом – окреме встановлення не потрібне, окрім оновленого драйвера графічного процесора Intel.
-
Windows DirectML – будь-який графічний процесор із підтримкою DirectX 12 у Windows. Гарний запасний варіант, коли використання постачальника від певного вендора недоцільне. У комплекті.
-
Apple CoreML – Apple Silicon (нейронний рушій та графічний процесор) і новіші комп’ютери Mac з Intel. У комплекті.
Під час першого запуску певної моделі постачальник GPU компілює оптимізовану версію графа моделі для вашого конкретного обладнання. Тривалість цього процесу значно залежить від постачальника: для CUDA та DirectML це зазвичай займає кілька секунд; для AMD MIGraphX може зайняти від 5 до 30 хвилин під час першого запуску кожної моделі, залежно від GPU та розміру моделі. Наступні використання повторно використовують скомпільований граф і запускаються на повній швидкості.
🔗Моделі
Кожна функція ШІ підтримується однією або кількома моделями для кожного завдання. Модель – це каталог, що містить файл ONNX та невеликий файл config.json з метаданими (назва, завдання, опис, інформація про ліцензування). Моделі знаходяться за адресою:
-
Linux:
~/.local/share/darktable/models/ -
macOS:
~/Library/Application Support/darktable/models/ -
Windows:
%APPDATA%\darktable\models\
Darktable сканує цей каталог під час запуску (і щоразу, коли ви змінюєте моделі в налаштуваннях), щоб виявити доступні моделі. Для одного завдання можна встановити кілька моделей – наприклад, для знешумлення на диску можуть одночасно бути обидві опції, NIND, та NAFNet. В кожному завданні одночасно може бути активна лише одна; встановлення прапорця “увімкнено” на другій моделі того ж завдання автоматично знімає позначку з попередньо активної. Модулі, що використовують це завдання, завантажують модель, позначену як активну.
Моделі не постачаються разом із Darktable. Вони розповсюджуються як пакети .dtmodel із супутнього репозиторію darktable-ai. Вкладка налаштувань ШІ містить кнопки для безпосереднього завантаження набору за замовчуванням; для додаткових моделей для кожної задачі (альтернативні знешумлення, опорні мережі сегментації тощо) завантажте .dtmodel зі сторінки релізів репозиторію та встановіть його за допомогою кнопки Встановлення моделей ШІ на тій самій вкладці.