Процессы завершаются во время обучения глубокому обучению (возможно, из-за высокого использования ЦП ‘netools’?)

Вопрос или проблема

Моя среда

  • ОС : 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-окружении.

Потенциальные причины проблемы:

  1. Недостаток оперативной памяти:

    • Вы упомянули, что ваш процесс Python (вероятно, выполняющий обучение) использует около 1.4 ГБ, что может быть значительной долей доступной RAM, особенно если у вас всего 6 ядер и, вероятно, в пределах 8-16 ГБ оперативной памяти.
    • Если другие процессы, такие как netools, потребляют чрезмерное количество ресурсов (судя по наблюдению за использованием CPU), это может привести к недостатку памяти для вашего процесса.
  2. Медленная работа netools:

    • Высокая загрузка CPU с процессом netools, который использует 600% процессорного времени, может указывать на проблему в вашей системе, включая потенциальные утечки памяти или проблемы с конфигурацией.

Шаги по устранению проблемы:

  1. Мониторинг ресурсов:

    • Используйте такие инструменты, как htop для более детального мониторинга использования CPU и RAM. Это позволит вам увидеть, какие процессы используют больше всего ресурсов в реальном времени.
  2. Проверка использования ОП:

    • Запустите команду free -h для проверки текущего состояния оперативной памяти. Если память почти полностью занята, стоит рассмотреть возможность увеличения объема RAM или оптимизации программы.
  3. Проверка конфигурации обучения:

    • Убедитесь, что ваш код не создает ненужные переменные и не загружает избыточные данные в память. Можно использовать простые методы, такие как уменьшение размера батча, чтобы снизить потребление памяти во время тренировки.
  4. Проблемы с netools:

    • Проверьте, для чего используется netools, и возможно, попробуйте остановить этот процесс, особенно если он не критичен для выполнения вашей задачи. Если это часть сетевой инфраструктуры, возможно, стоит переустановить или обновить его.
  5. Перезагрузка системы:

    • Иногда помогает простая перезагрузка системы для устранения временных проблем с ресурсами и освежения окружения.
  6. Логи и отладка:

    • Хотя вы уже проверили логи с помощью dmesg, рекомендую дополнительно проверить системные журналы (/var/log/syslog, /var/log/kern.log), чтобы найти дополнительные подсказки о том, что происходит перед убийством процесса.

Заключение:

Исходя из вышесказанного, рекомендуется провести анализ потребления ресурсов вашей системой в реальном времени и обратить внимание на другие запущенные вами процессы. Возможно, упрощение задачи или увеличение аппаратных ресурсов поможет решить вашу проблему с убиваемыми процессами во время тренировки модели глубокого обучения. Попробуйте указанные выше шаги, и если проблема сохранится, возможно, стоит рассмотреть профессиональную помощь для диагностики более сложных проблем.

Оцените материал
Добавить комментарий

Капча загружается...