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 документирует раздельное декодирование группы изображений. Эта возможность зависит от используемого pipeline: изучите его параметры, прежде чем включать настройку, найденную для другой модели.
4. Снизьте нагрузку, не теряя требуемого результата
Если один входной элемент не проходит, изучите его размеры или длину. Для изображения переход с 2 048 × 2 048 на 1 024 × 1 024 уменьшает число пикселей в четыре раза. Это не гарантирует, что общая память уменьшится вчетверо: модель и другие элементы сохраняют собственные потребности. Снижение допустимо только тогда, когда результат сохраняет необходимые детали.
Для ассистента различайте предоставленные документы, вопрос и сгенерированный ответ. Кэш генерации может потреблять больше памяти при длинном контексте; точные механизмы зависят от модели. Попробуйте более короткий запрос или один запрос за раз. Не удаляйте фрагмент, содержащий ответ, а затем не делайте вывод, что проблема решена.
Всегда сохраняйте исходный ввод. Назовите пробный вариант и напишите, что он меняет. Если инструмент предлагает разбиение на тайлы или перенос части элементов в RAM, проверьте его документацию и проконтролируйте стыки, качество и наблюдаемое время. Экономичный по VRAM вариант может перенести ограничение в другое место.
5. Не путайте зарезервированную и полезную память
В PyTorch память, зарезервированная аллокатором, и память, занятая тензорами, — это две разные величины. Очистка неиспользуемого кэша не освобождает ещё активные тензоры. Поэтому команда очистки не превращает слишком большую нагрузку в совместимую.
Если чистый перезапуск вашего приложения помогает, затем повторите тот же небольшой случай и запишите результат. Успех после перезапуска сам по себе не доказывает, что утечка памяти устранена. Если потребление растёт при каждом одинаковом проходе, сохраните это наблюдение и обратитесь к документации или в поддержку программного обеспечения, прежде чем накапливать перезапуски.
Пример: изолировать проблему в папке из двенадцати изображений
Вот иллюстративный сценарий, без измерений на оборудовании. Фрилансер готовит двенадцать изображений, два из которых имеют большие размеры и мелкий текст. Обработка группами по четыре не удаётся. Она сохраняет сообщение, затем пробует одно из больших изображений отдельно, при исходном качестве. Таблица показывает, как интерпретировать возможные наблюдения.
В этом сценарии она выбирает группы по два только после того, как проверила два больших изображения вместе и несколько обычных изображений. Она проверяет текст и контуры в экспортированных файлах. Она не обобщает этот результат на все размеры изображений, все модели или другое программное обеспечение.
| Проверка сценария | Гипотетическое наблюдение | Локальное решение |
|---|---|---|
| Четыре изображения одновременно | Ошибка памяти | Сохранить ошибку и уменьшить группу |
| Одно большое изображение, те же настройки | Полный и приемлемый результат | Целевое качество может пройти на этом отдельном случае |
| Два больших изображения вместе | Полные и приемлемые результаты | Проверить эту группу на коротком отрезке |
| Сильно уменьшенное изображение | Расчёт завершён, текст нечитаем | Отклонить это уменьшение, несмотря на технический успех |
Когда другая мощность становится обоснованным вариантом
Сравните другую карту, когда нехватка памяти GPU установлена, необходимый случай не проходит в одиночку и уменьшения, совместимые с вашим качеством, не помогают. Сохраните соответствующее программное обеспечение, версию, параметры и ввод: это досье делает следующую попытку сопоставимой. Оно не позволяет точно вывести, сколько дополнительных GB хватит.
Ошибка при загрузке модели также может ограничить пользу от уменьшения группы: значительная часть нагрузки существует ещё до первого ввода. Опции точности или квантизации меняют условия выполнения, а иногда и результаты; они требуют отдельной проверки. Добавление пакетов не объединяет автоматически память нескольких карт.
Завершите работоспособной диагностикой
Ваша итоговая заметка состоит из пяти элементов: сообщение и этап, предполагаемый ресурс, сохранённый ввод, настройка, которая проходит или не проходит, выполненный контроль качества. Добавьте то, что остаётся неизвестным. Если ни один небольшой случай не работает, прекратите повторять полный пакет и попросите помощи с этой информацией.
Не удаляйте свои единственные оригиналы, чтобы освободить диск, не снижайте несколько параметров сразу и не считайте частичный результат успехом. Оставьте время для сохранения действующих результатов. Диагностика должна уменьшать неопределённость; ей не нужно превращаться в бесконечную сессию настройки.