Вопрос или проблема
Моя среда
- ОС : Ubuntu 20.04
- ядро : 6
Привет,
Я сталкиваюсь с проблемой, когда процессы продолжают завершаться во время обучения глубокому обучению в среде Linux, как показано ниже.
global_average_pooling2d ( (None, 1920) 0 ['relu[0][0]']
GlobalAveragePooling2D)
dense (Dense) (None, 2) 3842 ['global_average_pooling2d[0][
0]']
==================================================================================================
Всего параметров: 18325826 (69.91 МБ)
Обучаемые параметры: 18096770 (69.03 МБ)
Необучаемые параметры: 229056 (894.75 КБ)
__________________________________________________________________________________________________
Эпоха 1: LearningRateScheduler устанавливает скорость обучения на 0.0010000000474974513.
Эпоха 1/150
Убито
Я выполнил команду sudo dmesg | grep -E -i -B100 'killed process'
, чтобы проверить логи, но результаты не были возвращены.
После некоторого исследования я выяснил, что это может быть связано с OOM (Out of Memory) оперативной памяти. Когда я проверил использование ЦП с помощью команды top
, я заметил, что процесс ‘netools’ потребляет почти 600% ЦП. Может ли это быть связано с тем, что процессы завершаются?
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2253 root 20 0 2451380 6516 4588 S 599.7 0.0 298:48.91 netools
910 root 20 0 1948088 41556 29884 S 0.3 0.1 0:03.85 containerd
Использование ЦП перед тем, как процесс обучения был убит, было следующим:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2253 root 20 0 2451368 6536 4588 S 599.7 0.0 324:40.91 netools
93857 admin 20 0 13.4g 1.4g 602488 R 100.3 2.3 0:19.27 python
94219 admin 20 0 20460 14828 2500 S 21.3 0.0 0:00.64 nvidia-smi
Обучение нормально работало ранее, но однажды, после проблемы с интернет-соединением, обучение внезапно стало работать неправильно.
В чем проблема??
Спасибо за чтение
Ответ или решение
Судя по вашему описанию, проблема с убиваемыми процессами во время обучения глубоких нейронных сетей может быть связана с исчерпанием оперативной памяти (OOM – Out of Memory), что является частой причиной внезапного завершения выполнения задач в Linux-окружении.
Потенциальные причины проблемы:
-
Недостаток оперативной памяти:
- Вы упомянули, что ваш процесс Python (вероятно, выполняющий обучение) использует около 1.4 ГБ, что может быть значительной долей доступной RAM, особенно если у вас всего 6 ядер и, вероятно, в пределах 8-16 ГБ оперативной памяти.
- Если другие процессы, такие как
netools
, потребляют чрезмерное количество ресурсов (судя по наблюдению за использованием CPU), это может привести к недостатку памяти для вашего процесса.
-
Медленная работа
netools
:- Высокая загрузка CPU с процессом
netools
, который использует 600% процессорного времени, может указывать на проблему в вашей системе, включая потенциальные утечки памяти или проблемы с конфигурацией.
- Высокая загрузка CPU с процессом
Шаги по устранению проблемы:
-
Мониторинг ресурсов:
- Используйте такие инструменты, как
htop
для более детального мониторинга использования CPU и RAM. Это позволит вам увидеть, какие процессы используют больше всего ресурсов в реальном времени.
- Используйте такие инструменты, как
-
Проверка использования ОП:
- Запустите команду
free -h
для проверки текущего состояния оперативной памяти. Если память почти полностью занята, стоит рассмотреть возможность увеличения объема RAM или оптимизации программы.
- Запустите команду
-
Проверка конфигурации обучения:
- Убедитесь, что ваш код не создает ненужные переменные и не загружает избыточные данные в память. Можно использовать простые методы, такие как уменьшение размера батча, чтобы снизить потребление памяти во время тренировки.
-
Проблемы с
netools
:- Проверьте, для чего используется
netools
, и возможно, попробуйте остановить этот процесс, особенно если он не критичен для выполнения вашей задачи. Если это часть сетевой инфраструктуры, возможно, стоит переустановить или обновить его.
- Проверьте, для чего используется
-
Перезагрузка системы:
- Иногда помогает простая перезагрузка системы для устранения временных проблем с ресурсами и освежения окружения.
-
Логи и отладка:
- Хотя вы уже проверили логи с помощью
dmesg
, рекомендую дополнительно проверить системные журналы (/var/log/syslog
,/var/log/kern.log
), чтобы найти дополнительные подсказки о том, что происходит перед убийством процесса.
- Хотя вы уже проверили логи с помощью
Заключение:
Исходя из вышесказанного, рекомендуется провести анализ потребления ресурсов вашей системой в реальном времени и обратить внимание на другие запущенные вами процессы. Возможно, упрощение задачи или увеличение аппаратных ресурсов поможет решить вашу проблему с убиваемыми процессами во время тренировки модели глубокого обучения. Попробуйте указанные выше шаги, и если проблема сохранится, возможно, стоит рассмотреть профессиональную помощь для диагностики более сложных проблем.