Ваш GPU, ваш проєкт Криптооплата без KYCЯк оплатити
Українська
Мій кабінет
Гід для першого проєкту

Недостатньо пам’яті: знайдіть, що блокує, перш ніж змінювати GPU.

Помилка пам’яті не означає автоматично, що GPU замалий. Почніть з того, щоб визначити відповідний ресурс і момент збою, а потім повторіть запуск з одним єдиним елементом і тими самими налаштуваннями. Далі зменшуйте по одній змінній за раз: кількість одночасних елементів, розміри чи довжину даних. Корисний результат — це випадок, який проходить, відтворювана межа або краще описана проблема, а не нова оренда, обрана навмання.

На цій сторінці

1. Збережіть повідомлення та контекст перед повторним запуском

Припиніть додавати завдання в чергу. Запишіть точний текст помилки, відповідний файл чи запит, кількість елементів, що обробляються разом, і досягнутий етап. Чи завантажувалася модель, чи тривали обчислення, чи саме записувався результат? Збережіть налаштування в нотатці, а вже завершені результати — у їхній теці.

Завислий екран або застосунок, що закрився без пояснень, не дають змоги визначити причину. Знайдіть його журнал, якщо такий є. Збій з’єднання, некоректні вхідні дані та переповнена пам’ять можуть давати схожі симптоми в інтерфейсі. Якщо програмне забезпечення нічого не уточнює, напишіть «причина не визначена» і підготуйте мінімальний тест, а не вигадуйте діагноз.

2. Розділяйте пам’ять GPU, системну пам’ять і місце на диску

Пам’ять GPU використовується для елементів обчислення на карті. RAM сервера та сховище відповідають на інші потреби. Обсяги, зазначені на картках GPU BriefGPU, не описують фактично доступну RAM чи диск. Перевірте ресурс, згаданий у повідомленні, та інформацію про ваше середовище.

У Python MemoryError означає збій виділення пам’яті; сама лише ця назва не вказує на нестачу VRAM. Код ENOSPC відповідає нестачі місця на цільовому пристрої. Ці орієнтири скеровують пошук, але журнал застосунку все одно потрібен, щоб визначити операцію.

2. Розділяйте пам’ять GPU, системну пам’ять і місце на диску
СпостереженняПерша перевіркаЧого більший GPU не вирішує сам собою
Повідомлення CUDA out of memory під час обчисленняВикористана пам’ять карти, інші завдання та розмір групиНесумісність програмного забезпечення або пошкоджений файл
MemoryError під час читання файлівПам’ять процесу, обсяг даних, завантажених у RAMЗавантаження всієї теки в системну пам’ять
Помилка «No space left on device» під час експортуМісце та можлива квота теки виводу або тимчасової текиЗаповнений диск або ліміт сховища
Застосунок закрився без придатного повідомленняЖурнал, досягнутий етап і тест на одному елементіЩе невідома причина

3. Поверніться до одного елемента й одного активного завдання

Спершу перевірте процеси, які ви запустили самі. Попередній перегляд, стара сесія чи інший інструмент можуть досі працювати. Коректно закрийте завдання, які стали непотрібними, зберігши їхній стан. Не завершуйте процес, який ви не розпізнаєте, і не перезапускайте все середовище, щоб зекономити кілька хвилин діагностики.

Повторіть елемент, який зазнав збою, окремо, не знижуючи його якості. Якщо він проходить окремо, але збоїть у групі, то кількість одночасних елементів стає зачіпкою. Зменште, наприклад, групу з чотирьох до двох, а за потреби — до одного. Кількість файлів у теці залишається тією самою; змінюється лише обсяг, що обробляється одночасно.

Деякі інструменти пропонують послідовну обробку, щоб обмежити піки пам’яті. Зокрема Diffusers документує розбиття декодування групи зображень. Ця можливість залежить від використовуваного конвеєра: перегляньте його параметри, перш ніж вмикати налаштування, знайдене для іншої моделі.

4. Зменште навантаження, не втрачаючи потрібного результату

Якщо окремий елемент зазнає збою, розгляньте його розміри чи довжину. Для зображення перехід із 2048 × 2048 до 1024 × 1024 ділить кількість пікселів на чотири. Це не гарантує, що загальна пам’ять зменшиться вчетверо: модель та інші елементи зберігають власні потреби. Зменшення прийнятне лише тоді, коли результат зберігає потрібні деталі.

Для асистента розрізняйте надані документи, запитання та згенеровану відповідь. Кеш генерації може споживати більше пам’яті за довгого контексту; точні механізми залежать від моделі. Спробуйте коротший запит або лише один запит за раз. Не видаляйте фрагмент, що містить відповідь, і не робіть висновок, що проблему вирішено.

Завжди зберігайте оригінальний вхідний файл. Назвіть пробний варіант і запишіть, що він змінює. Якщо інструмент пропонує розбиття на тайли або перенесення окремих елементів до RAM, перевірте його документацію та проконтролюйте стики, якість і спостережуваний час. Ощадливий щодо VRAM варіант може перенести обмеження в інше місце.

5. Не плутайте зарезервовану та корисну пам’ять

У PyTorch пам’ять, зарезервована алокатором, і пам’ять, зайнята тензорами, — це два різні показники. Очищення невикористаного кешу не звільняє тензори, які ще активні. Тож команда очищення не перетворює завелике навантаження на сумісне.

Якщо чистий перезапуск вашого застосунку допомагає, відтворіть потім той самий маленький випадок і запишіть результат. Успіх після перезапуску сам по собі не доводить, що витік пам’яті виправлено. Якщо використання зростає на кожному однаковому проході, збережіть це спостереження та зверніться до документації чи підтримки програмного забезпечення, перш ніж накопичувати перезапуски.

Приклад: ізолювати проблему в папці з дванадцяти зображень

Ось ілюстративний сценарій, без вимірювань обладнання. Фрилансерка готує дванадцять зображень, два з яких мають великі розміри та дрібний текст. Обробка групами по чотири не вдається. Вона зберігає повідомлення, потім пробує одне з великих зображень окремо, у початковій якості. Таблиця показує, як тлумачити можливі спостереження.

У цьому сценарії вона зупиняється на групах по два лише після того, як перевірила два великі зображення разом і кілька звичайних. Вона перевіряє текст і контури в експортованих файлах. Вона не узагальнює цей результат на всі розміри зображень, усі моделі чи інше програмне забезпечення.

Приклад: ізолювати проблему в папці з дванадцяти зображень
Спроба сценаріюГіпотетичне спостереженняЛокальне рішення
Чотири зображення одночасноПомилка пам’ятіЗберегти помилку та зменшити групу
Одне велике зображення, ті самі налаштуванняПовний і прийнятний результатЦільова якість може пройти на цьому окремому випадку
Два великі зображення разомПовні та прийнятні результатиПеревірити цю групу на короткому відрізку
Сильно зменшене зображенняОбчислення завершено, текст нечитабельнийВідкинути це зменшення попри технічний успіх

Коли інша потужність стає обґрунтованим напрямом

Порівняйте іншу карту, коли нестачу пам’яті GPU виявлено, потрібний випадок не проходить окремо, а зменшення, сумісні з вашою якістю, не допомагають. Збережіть відповідне програмне забезпечення, версію, параметри та вхідний файл: ця справа робить наступну спробу порівнюваною. Вона не дає змоги визначити точно, скільки додаткових ГБ буде достатньо.

Помилка під час завантаження моделі також може зменшити сенс скорочення групи: значна частина навантаження існує ще до першого входу. Варіанти точності чи квантизації змінюють умови виконання, а іноді й результати; вони потребують окремої спроби. Додавання пакетів не об’єднує автоматично пам’ять кількох карт.

Завершіть придатним до використання діагнозом

Ваша підсумкова нотатка містить п’ять елементів: повідомлення та крок, підозрюваний ресурс, збережений вхідний файл, налаштування, яке проходить чи не проходить, виконаний контроль якості. Додайте те, що залишається невідомим. Якщо жоден маленький випадок не працює, припиніть повторювати повний пакет і попросіть допомоги з цією інформацією.

Не видаляйте свої єдині оригінали, щоб звільнити диск, не знижуйте кілька параметрів одночасно та не вважайте частковий результат успіхом. Виділіть час, щоб зберегти дійсні результати. Діагностика має зменшувати невизначеність; їй не потрібно перетворюватися на нескінченну сесію налаштувань.

Часті запитання

Чи може JPEG-зображення на кілька мегабайтів не мати достатньо пам’яті?

Так. Вага стисненого файлу не відображає безпосередньо дані, які використовуються під час його обробки. Зверніть увагу на його розміри, канали та потрібні операції. Збережіть оригінальну версію та протестуйте одне зображення, перш ніж змінювати всю теку.

Чи потрібно очищати всі кеші після кожної помилки?

Ні. Спершу визначте кеш та його роль. Видалення файлів може змусити знову завантажувати або перераховувати елементи; очищення кешу пам'яті не звільняє дані, які ще активні. Використовуйте задокументовані команди вашого програмного забезпечення, зберігши копію того, що потрібно зберегти.

Чому перший прохід працює, а наступний — ні?

Можливі кілька причин: новий вхідний запит вимогливіший, інше активне завдання або дані, збережені програмою. Відтворіть той самий невеликий вхідний запит після чистого перезапуску застосунку та занотуйте умови. Це спостереження допомагає в діагностиці, але саме по собі не доводить витік пам'яті.

Чи достатньо меншого налаштування, яке завершує обчислення, щоб підтвердити проєкт?

Ні. Потрібно відкрити результат і перевірити очікувані критерії. Нечитабельне зображення або приватна відповідь із правильного документа залишається провалом проєкту, навіть якщо програма більше не повідомляє про помилку.

Просувайтеся у своєму темпі

Трохи методики — і старт буде вдалим.

Відкрити посібники