Давайте избежим очень болезненных хлопот при обучении модели и избавимся от необходимости держать терминал открытым для проверки статистики модели в реальном времени.
Обучать модель и просматривать ее статистику в реальном времени может быть проблематично, если вам приходится иметь дело с огромным количеством итераций или эпох. Чтобы сократить этот урок, я могу дать вам очень простую идею об обучении любой модели на основе машинного обучения или искусственного интеллекта и получении их статистики в реальном времени с помощью TensorBoard и хвостового модуля Ubuntu
Предпосылки:
В этом руководстве предполагается, что вы работаете в системе на базе UNIX, я использую Ubuntu и протестировал версии *18.04 LTS* и *20.04 LTS*.
Общие способы обучения модели:
Здесь у нас есть три разных способа обучения модели;
- Использование простой однострочной команды
nohup
Command - Использование процесса 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
], вы можете создавать процессы обучения модели, запускать их как системную службу и даже запускать ее при перезагрузке. Этого можно добиться с помощью встроенного менеджера служб. Вы можете выполнить следующие шаги, чтобы этот процесс работал быстро;
- Выберите версию Python для запуска обучающего скрипта.
- Напишите файл настроек службы ubuntu
- Включить и запустить службу
Выберите версию 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
], вы можете создавать процессы обучения модели, запускать их как системную службу и даже запускать ее при перезагрузке. Этого можно добиться с помощью встроенного менеджера служб. Вы можете выполнить следующие шаги, чтобы этот процесс работал быстро;
- Найдите путь к вашим
jupyter-notebook
исполняемым файлам - Установите
jupyter-notebook
конфигурации и пароль - Напишите файл настроек службы ubuntu
- Включить и запустить службу
Найдите путь к вашим 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
.