1. Збережіть повідомлення та контекст перед повторним запуском
Припиніть додавати завдання в чергу. Запишіть точний текст помилки, відповідний файл чи запит, кількість елементів, що обробляються разом, і досягнутий етап. Чи завантажувалася модель, чи тривали обчислення, чи саме записувався результат? Збережіть налаштування в нотатці, а вже завершені результати — у їхній теці.
Завислий екран або застосунок, що закрився без пояснень, не дають змоги визначити причину. Знайдіть його журнал, якщо такий є. Збій з’єднання, некоректні вхідні дані та переповнена пам’ять можуть давати схожі симптоми в інтерфейсі. Якщо програмне забезпечення нічого не уточнює, напишіть «причина не визначена» і підготуйте мінімальний тест, а не вигадуйте діагноз.
2. Розділяйте пам’ять GPU, системну пам’ять і місце на диску
Пам’ять GPU використовується для елементів обчислення на карті. RAM сервера та сховище відповідають на інші потреби. Обсяги, зазначені на картках GPU BriefGPU, не описують фактично доступну RAM чи диск. Перевірте ресурс, згаданий у повідомленні, та інформацію про ваше середовище.
У Python MemoryError означає збій виділення пам’яті; сама лише ця назва не вказує на нестачу VRAM. Код ENOSPC відповідає нестачі місця на цільовому пристрої. Ці орієнтири скеровують пошук, але журнал застосунку все одно потрібен, щоб визначити операцію.
| Спостереження | Перша перевірка | Чого більший GPU не вирішує сам собою |
|---|---|---|
| Повідомлення CUDA out of memory під час обчислення | Використана пам’ять карти, інші завдання та розмір групи | Несумісність програмного забезпечення або пошкоджений файл |
| MemoryError під час читання файлів | Пам’ять процесу, обсяг даних, завантажених у RAM | Завантаження всієї теки в системну пам’ять |
| Помилка «No space left on device» під час експорту | Місце та можлива квота теки виводу або тимчасової теки | Заповнений диск або ліміт сховища |
| Застосунок закрився без придатного повідомлення | Журнал, досягнутий етап і тест на одному елементі | Ще невідома причина |
3. Поверніться до одного елемента й одного активного завдання
Спершу перевірте процеси, які ви запустили самі. Попередній перегляд, стара сесія чи інший інструмент можуть досі працювати. Коректно закрийте завдання, які стали непотрібними, зберігши їхній стан. Не завершуйте процес, який ви не розпізнаєте, і не перезапускайте все середовище, щоб зекономити кілька хвилин діагностики.
Повторіть елемент, який зазнав збою, окремо, не знижуючи його якості. Якщо він проходить окремо, але збоїть у групі, то кількість одночасних елементів стає зачіпкою. Зменште, наприклад, групу з чотирьох до двох, а за потреби — до одного. Кількість файлів у теці залишається тією самою; змінюється лише обсяг, що обробляється одночасно.
Деякі інструменти пропонують послідовну обробку, щоб обмежити піки пам’яті. Зокрема Diffusers документує розбиття декодування групи зображень. Ця можливість залежить від використовуваного конвеєра: перегляньте його параметри, перш ніж вмикати налаштування, знайдене для іншої моделі.
4. Зменште навантаження, не втрачаючи потрібного результату
Якщо окремий елемент зазнає збою, розгляньте його розміри чи довжину. Для зображення перехід із 2048 × 2048 до 1024 × 1024 ділить кількість пікселів на чотири. Це не гарантує, що загальна пам’ять зменшиться вчетверо: модель та інші елементи зберігають власні потреби. Зменшення прийнятне лише тоді, коли результат зберігає потрібні деталі.
Для асистента розрізняйте надані документи, запитання та згенеровану відповідь. Кеш генерації може споживати більше пам’яті за довгого контексту; точні механізми залежать від моделі. Спробуйте коротший запит або лише один запит за раз. Не видаляйте фрагмент, що містить відповідь, і не робіть висновок, що проблему вирішено.
Завжди зберігайте оригінальний вхідний файл. Назвіть пробний варіант і запишіть, що він змінює. Якщо інструмент пропонує розбиття на тайли або перенесення окремих елементів до RAM, перевірте його документацію та проконтролюйте стики, якість і спостережуваний час. Ощадливий щодо VRAM варіант може перенести обмеження в інше місце.
5. Не плутайте зарезервовану та корисну пам’ять
У PyTorch пам’ять, зарезервована алокатором, і пам’ять, зайнята тензорами, — це два різні показники. Очищення невикористаного кешу не звільняє тензори, які ще активні. Тож команда очищення не перетворює завелике навантаження на сумісне.
Якщо чистий перезапуск вашого застосунку допомагає, відтворіть потім той самий маленький випадок і запишіть результат. Успіх після перезапуску сам по собі не доводить, що витік пам’яті виправлено. Якщо використання зростає на кожному однаковому проході, збережіть це спостереження та зверніться до документації чи підтримки програмного забезпечення, перш ніж накопичувати перезапуски.
Приклад: ізолювати проблему в папці з дванадцяти зображень
Ось ілюстративний сценарій, без вимірювань обладнання. Фрилансерка готує дванадцять зображень, два з яких мають великі розміри та дрібний текст. Обробка групами по чотири не вдається. Вона зберігає повідомлення, потім пробує одне з великих зображень окремо, у початковій якості. Таблиця показує, як тлумачити можливі спостереження.
У цьому сценарії вона зупиняється на групах по два лише після того, як перевірила два великі зображення разом і кілька звичайних. Вона перевіряє текст і контури в експортованих файлах. Вона не узагальнює цей результат на всі розміри зображень, усі моделі чи інше програмне забезпечення.
| Спроба сценарію | Гіпотетичне спостереження | Локальне рішення |
|---|---|---|
| Чотири зображення одночасно | Помилка пам’яті | Зберегти помилку та зменшити групу |
| Одне велике зображення, ті самі налаштування | Повний і прийнятний результат | Цільова якість може пройти на цьому окремому випадку |
| Два великі зображення разом | Повні та прийнятні результати | Перевірити цю групу на короткому відрізку |
| Сильно зменшене зображення | Обчислення завершено, текст нечитабельний | Відкинути це зменшення попри технічний успіх |
Коли інша потужність стає обґрунтованим напрямом
Порівняйте іншу карту, коли нестачу пам’яті GPU виявлено, потрібний випадок не проходить окремо, а зменшення, сумісні з вашою якістю, не допомагають. Збережіть відповідне програмне забезпечення, версію, параметри та вхідний файл: ця справа робить наступну спробу порівнюваною. Вона не дає змоги визначити точно, скільки додаткових ГБ буде достатньо.
Помилка під час завантаження моделі також може зменшити сенс скорочення групи: значна частина навантаження існує ще до першого входу. Варіанти точності чи квантизації змінюють умови виконання, а іноді й результати; вони потребують окремої спроби. Додавання пакетів не об’єднує автоматично пам’ять кількох карт.
Завершіть придатним до використання діагнозом
Ваша підсумкова нотатка містить п’ять елементів: повідомлення та крок, підозрюваний ресурс, збережений вхідний файл, налаштування, яке проходить чи не проходить, виконаний контроль якості. Додайте те, що залишається невідомим. Якщо жоден маленький випадок не працює, припиніть повторювати повний пакет і попросіть допомоги з цією інформацією.
Не видаляйте свої єдині оригінали, щоб звільнити диск, не знижуйте кілька параметрів одночасно та не вважайте частковий результат успіхом. Виділіть час, щоб зберегти дійсні результати. Діагностика має зменшувати невизначеність; їй не потрібно перетворюватися на нескінченну сесію налаштувань.