Давайте избежим очень болезненных хлопот при обучении модели и избавимся от необходимости держать терминал открытым для проверки статистики модели в реальном времени.

Обучать модель и просматривать ее статистику в реальном времени может быть проблематично, если вам приходится иметь дело с огромным количеством итераций или эпох. Чтобы сократить этот урок, я могу дать вам очень простую идею об обучении любой модели на основе машинного обучения или искусственного интеллекта и получении их статистики в реальном времени с помощью TensorBoard и хвостового модуля Ubuntu

Предпосылки:

В этом руководстве предполагается, что вы работаете в системе на базе UNIX, я использую Ubuntu и протестировал версии *18.04 LTS* и *20.04 LTS*.

Общие способы обучения модели:

Здесь у нас есть три разных способа обучения модели;

  • Использование простой однострочной команды nohupCommand
  • Использование процесса Python в качестве фоновой службы
  • Использование Jupyter Notebook в качестве фоновой службы

Использование простой однострочной команды nohup:

nohup — это команда *POSIX*, означающая «без зависаний». Прежде чем начать процесс обучения модели, я предполагаю, что вы находитесь внутри своего *рабочего каталога*, где присутствуют все соответствующие файлы;

Проверить путь установки python;

- whereis python

Вы можете получить список путей, где установлен python.

Предположим, вы обычно начинаете обучение модели с помощью этой простой команды;

- python train.py # Any Python file with long running processes

OR
- pyhton3 train.py

OR
- /usr/bin/python3 /path/to/file/train.py

Вместо запуска thepython script с помощью вышеупомянутой команды вы должны использовать одну из следующих команд для запуска процесса обучения модели;

- nohup python train.py & # Any Python file with long running processes
OR
- nohup python3 train.py & 
OR
- /usr/bin/python3 /path/to/file/train.py &

Оператор & слишком важен, поскольку он в основном запускает процесс Python в фоновом режиме. Вы можете получить полную *статистику консоли python* в имени файла nohup.out; Вы можете просмотреть статистику, используя эти команды;

- tail -f nohup.out
OR 
- cat nohup.out

Как и все другие процессы, nohup процесс имеет определенный идентификатор, и вы можете просмотреть статус процесса, используя этот PID, следующим образом.

root@ubuntu:~/wound-segmentation# nohup python3 train.py &
[4] 160851

PID = 160851 печатается при выполнении приведенной выше команды, хотя и только на экране, но нет необходимости записывать его, потому что вы можете найти его позже:

Вы можете либо проверить PID процессов, у которых открыт ваш выходной файл:

root@ubuntu:~/wound-segmentation# lsof nohup.out
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
python3 160851 root    1w   REG  252,1   806797 9041799 nohup.out
python3 160851 root    2w   REG  252,1   806797 9041799 nohup.out
root@ubuntu:~/wound-segmentation#

или используйте команду ps, чтобы найти процесс между всеми запущенными процессами виртуальной машины:

root@ubuntu:~/wound-segmentation# ps au | grep nohup
root      162428  0.0  0.0   8160   724 pts/0    S+   10:01   0:00 grep --color=auto nohup

Для kill процесса nohup;

- kill -9 <PID> # In my case: PID=160851

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

Использование процесса Python в качестве фоновой службы:

Системы Unix — лучшие платформы для запуска процессов обучения моделей. Если у вас есть права root [ sudo su], вы можете создавать процессы обучения модели, запускать их как системную службу и даже запускать ее при перезагрузке. Этого можно добиться с помощью встроенного менеджера служб. Вы можете выполнить следующие шаги, чтобы этот процесс работал быстро;

  1. Выберите версию Python для запуска обучающего скрипта.
  2. Напишите файл настроек службы ubuntu
  3. Включить и запустить службу

Выберите версию Python для запуска сценария обучения:

Чтобы начать шаги, я предполагаю, что вы, ребята, уже находитесь в рабочем каталоге, где доступны ваши скрипты Python;

Теперь, чтобы выбрать правильную версию Python для вашей разработки, во-первых, вы должны проверить, что доступно на вашем конце;

- whereis python

Это даст вам доступные пути установки python, такие как;

root@ubuntu:~# whereis python
python: /usr/bin/python3.8-config /usr/bin/python3.8 /usr/lib/python3.9 /usr/lib/python2.7 /usr/lib/python3.8 /etc/python3.8 /usr/local/lib/python3.8 /usr/include/python3.8 /root/anaconda3/bin/python3.7m-config /root/anaconda3/bin/python /root/anaconda3/bin/python3.7m /root/anaconda3/bin/python3.7-config /root/anaconda3/bin/python3.7

2. Напишите файл настроек службы Ubuntu:

Системные службы указаны в подобных INI файлах для их настроек и свойств. Они хранятся в любом из этих каталогов

- cd /etc/systemd/system/

OR
- cd /lib/systemd/system/

Напишем служебный файл! Это относительно простой вариант, в котором мы указали исполняемый файл для Python и параметры, включая каталог для запуска каталога ваших скриптов Python, который совпадает с каталогом, из которого будет выполняться служба. Измените настройки пользователя и группы на своего пользователя, убедитесь, что это не root. Следуйте этим командам;

- sudo nano ai-model-training.service

Теперь просто скопируйте и вставьте приведенный ниже код в свой служебный файл;

[Unit]
Description=AI Model Training Process
[Service]
Type=simple
ExecStart=/usr/bin/python /home/username/path/to/file/train.py WorkingDirectory=/home/username
User=username
Group=username
Restart=on-failure
RestartSec=60s
[Install]
WantedBy=multi-user.target

Раздел Перезапустить в приведенном выше файле службы перезапустит службу после ожидания 60 seconds в случае сбоя. Итак, на данный момент мы успешно закончили работу с служебным файлом.

3. Включите и запустите службу:

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

  • Включить означает, что служба запускается при перезагрузке компьютера. Это экономит ваше время при каждом ручном запуске службы.
# add the service file 
# let the daemon reload all the service files
- sudo cp ai-model-training.service /etc/systemd/system/
# (optional) "enable" -> started when the computer boots
- sudo systemctl daemon-reload 
# start the service
- sudo systemctl enable ai-model-training.service
- sudo systemctl start ai-model-training.service

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

- systemctl status ai-model-training.service

Если вы хотите остановить или отключить эту службу, которая больше не требуется, используйте следующие команды:

# To stop the service
- sudo systemctl stop ai-model-training.service
OR
# To disable
- sudo systemctl disable ai-model-training.service

Теперь у вас есть служба обучения моделей ИИ, которая всегда включена и runs когда ваш компьютер rebooted. Если служба завершится, система перезапустит ее, что позволит вам вернуться к работе, не беспокоясь.

Если вы хотите запустить свой процесс обучения модели ИИ на компьютере remote, таком как ваш компьютер home/work или в облаке, все, что вам нужно сделать, это подключиться к нему с помощью SSH.

Использование Jupyter Notebook в качестве фоновой службы:

Теперь мы можем запускать a python-based процессы обучения моделивсистемах Unix. Теперь мы посмотрим, как настроить Jupyer Notebook в качестве фоновой службы. Если у вас есть права root [ sudo su], вы можете создавать процессы обучения модели, запускать их как системную службу и даже запускать ее при перезагрузке. Этого можно добиться с помощью встроенного менеджера служб. Вы можете выполнить следующие шаги, чтобы этот процесс работал быстро;

  1. Найдите путь к вашим jupyter-notebook исполняемым файлам
  2. Установите jupyter-notebook конфигурации и пароль
  3. Напишите файл настроек службы ubuntu
  4. Включить и запустить службу

Найдите путь к вашим jupyter-notebook исполняемым файлам:

Чтобы начать шаги, я предполагаю, что вы, ребята, уже находитесь в рабочем каталоге, где доступны ваши скрипты Python;

Теперь, чтобы выбрать правильный исполняемый файл jupyter-notebook для вашей разработки. Во-первых, вы должны проверить, что доступно на вашем конце;

- whereis jupyter-notebook

Это даст вам доступные пути установки python, такие как;

root@ubuntu:~# which jupyter-notebook
/home/username/.local/share/virtualenvs/notebook/bin/jupyter-notebook

Установите jupyter-notebook конфигураций и пароль:

Если вы используете безопасный пароль вместо дублирования токенов, которые сервер генерирует при запуске, вам будет проще получить доступ к сервису позже.

$ jupyter-notebook password
[... password prompt, type it in twice] 
[NotebookPasswordApp] Wrote hashed password to /home/username/.jupyter/jupyter_notebook_config.json

Пароль необходимо ввести дважды, прежде чем он будет заполнен и сохранен в локальном каталоге jupyter-notebook config.

2. Напишите файл настроек службы Ubuntu:

Системные службы указаны в подобных INI файлах для их настроек и свойств. Они хранятся в любом из этих каталогов

- cd /etc/systemd/system/
OR
- cd /lib/systemd/system/

Напишем служебный файл! Это относительно простой вариант, в котором мы указали исполняемый файл для Python и параметры, включая каталог для запуска каталога ваших скриптов Python, который совпадает с каталогом, из которого будет выполняться служба. Измените настройки пользователя и группы на своего пользователя, убедитесь, что это не root. Следуйте этим командам;

- sudo nano jupyter-notebook.service

Теперь просто скопируйте и вставьте приведенный ниже код в свой служебный файл;

[Unit]
Description=AI Model Training Process
[Service]
Type=simple
ExecStart=/bin/bash -c "/home/username/.local/share/virtualenvs/notebook/bin/jupyter-notebook --no-browser --notebook-dir=/home/username"
WorkingDirectory=/home/username
User=username
Group=username
Restart=on-failure
RestartSec=60s
[Install]
WantedBy=multi-user.target

Раздел Перезапустить в приведенном выше файле службы перезапустит службу после ожидания 60 seconds в случае сбоя. Итак, на данный момент мы успешно закончили работу с служебным файлом.

3. Включите и запустите службу:

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

  • Включить означает, что служба запускается при перезагрузке компьютера. Это экономит ваше время при каждом ручном запуске службы.
# add the service file 
# let the daemon reload all the service files
- sudo cp jupyter-notebook.service /etc/systemd/system/
# (optional) "enable" -> started when the computer boots
- sudo systemctl daemon-reload
# start the service
- sudo systemctl enable jupyter-notebook.service
- sudo systemctl start jupyter-notebook.service

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

- systemctl status jupyter-notebook.service

Если вы хотите остановить или отключить эту службу, которая больше не требуется, используйте следующие команды:

# To stop the service
- sudo systemctl stop jupyter-notebook.service
OR
# To disable
- sudo systemctl disable jupyter-notebook.service

Теперь у вас есть служба демона ноутбука, которая всегда включена и runs всякий раз, когда ваш компьютер rebooted. Если служба завершится, система перезапустит ее, что позволит вам вернуться к работе, не беспокоясь.

Если вы хотите запустить службу демон ноутбука на remote компьютере, например, на home/work компьютере или в облаке, все, что вам нужно сделать, это подключиться к нему с помощью SSH.

Общие способы получения статистики модели в реальном времени:

На данный момент мы успешно поняли, как запускать различные процессы обучения режиму на основе ИИ в качестве фоновых служб. Теперь мы быстро завершим, как мы можем видеть статистику обучения модели в реальном времени, пока процесс обучения модели работает в качестве фоновой службы. У нас есть два метода анализа статистики в реальном времени.

Здесь у нас есть два разных способа получить статистику процесса обучения модели в реальном времени;

  • Использование TensorBoard в качестве фонового сервиса
  • Использование модуля Tail в Ubuntu

Использование TensorBoard в качестве фоновой службы:

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

Это лучшая ссылка, чтобы получить общее представление о TensorBoard и о том, как вы можете использовать его в своих программах: TensorBoard — пакет визуализации для моделей Tensorflow.

Использование хвостового модуля Ubuntu:

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

- tail -f model-training.logs 

Рядом вы также можете увидеть, сколько ваша программа, процесс или служба занимают ваш процессор.

Вывод:

Мы видели несколько способов запуска model training processes on local as well as cloud based servers в фоновом режиме, один для non-root users и один для root users. Первый требует некоторого контроля при запуске и закрытии, в то время как последний должен покрыть вас на сервере раз и навсегда.

В зависимости от привилегий пользователя, которые у меня есть, я использую оба способа на разных машинах. Например, первое идеально подходит для scientific computing clusters, тогда как второе идеально подходит для AWS EC2 instance, используемого для notebooks и remote data processing.