Для обучения моделей необходимо разместить пользовательские данные в любом объектном хранилище S3 и перенести данные из S3 в «горячее» хранилище NFS.
При разработке скрипта распределенного обучения с использованием низкоуровневых библиотек (mpi, torch.distributed и т.д.) стоит обратить внимание на то, что процессы работают независимо друг от друга. Не забудьте поставить флаги коммуникации между процессами (barrier, all_reduce и пр.), чтобы распределенный процесс обучения шел корректно.
В Jupyter Server нет root-доступа, apt-get, sudo отключены.
Не рекомендуется менять версию базовых пакетов — Horovod, TensorFlow, Apex, MXNet, TensorBoard, KServe, PyTorch.
Рекомендуем выбрать подходящий образ из имеющихся в Distributed Train или собрать кастомный образ по инструкции.
Можно узнать статус выполнения задачи или вывести ее логи, используя стандартные средства функции client_lib.
Distributed Train позволяет обучать модели распределенно на базе суперкомпьютеров Christofari.V100 • DGX2-INF-001 и Christofari.A100.part2 • SR004. Количество GPU и количество рабочих узлов региона задаются с помощью параметров n_ gpus и n_ workers соответственно. Обратите внимание: чем больше GPU требуется для обучения модели, тем выше вероятность того, что вычислительных ресурсов может не хватить.
Подробнее об особенностях запуска задач на большом количестве GPU.
Можно.
Для запуска задачи обучения только на CPU используйте регион Cloud.Region.HP1 • SR003.
Подробнее в разделе задачи обучения (Job).
Скорее всего, для выполнения задачи сейчас нет ресурсов.
Изменить количество ядер нельзя, они выделяются пропорционально количеству GPU. В регионе Christofari.V100 • DGX2-INF-001 выделяется три ядра на один GPU, в регионе Christofari.A100.part2 • SR004 выделяется 16 ядер на один GPU.
Бывают случаи, когда процесс обучения нужно остановить, чтобы затем продолжить обучение с того же места и не потерять результаты работы. Решение — фиксировать состояние модели с некоторой разумной периодичностью, например, в конце каждой эпохи или после окончания итерации по небольшим блокам обучения. Подробнее о сохранении чекпоинтов.
Для этого откройте терминал в Jupyter Server и выполните команду:
free -h
Да, такая возможность есть. Для этого откройте терминал в Jupyter Server и выполните команду:
git clone <your_repo_url>
Репозиторий будет склонирован в рабочий каталог /home/jovyan на NFS. После этого можно импортировать из репозитория библиотеки, необходимые для работы.
Некоторые библиотеки требуют компиляции. Например, чтобы собрать библиотеку torch-blocksparse из репозитория, необходимо выполнить команду
sudo apt-get install llvm-9-dev
Исполнение этой команды требует прав администратора на NFS. На данный момент для использования sudo и работы c такими библиотеками необходимо написать письмо в support@cloud.ru.
В стандартных и пользовательских окружениях есть возможность подключения к контейнерам по SSH.
Для отправки запросов из Jupyter Server в интернет можно использовать любые TCP-порты. Доступ в интернет не ограничен.
Использование Jupyter Server из интернета невозможно без интерфейса Distributed Train или SSH-соединения с Jupyter Server.
Чтобы получить список белых IP-адресов, которые может использовать задача обучения при обращении в интернет, обратитесь в техническую поддержку.
Перейдите в список задач Environments → Задачи и окружения.
Рядом с нужной задачей нажмите и выберите Сообщить о проблеме.
Выберите суть проблемы и опишите подробности, если необходимо.
Будет создана заявка в техническую поддержку. Отслеживать статус можно в личном кабинете в разделе Поддержка.
Подключитесь к задаче альтернативным способом, последовательно выполнив в терминале Jupyter Notebook следующие команды:
export name=lm-mpi-job-b88a8c2d-489f-4021-b706-7c439de8975d # job-nameexport host=lm-mpi-job-b88a8c2d-489f-4021-b706-7c439de8975d-mpimaster-0 # job-name-pod-namessh user@${host}.${name} -p 2222 # connection command with your host and name
Для того чтобы проверить корректность работы скрипта и исправить ошибки в нем, запустите скрипт распределенно из Jupyter Server с несколькими GPU командой:
python -m torch.distributed.launch --nproc_per_node $GPUS_PER_NODE --nnodes 1 <myscript.py>
При запуске задачи обучения в регионе Cloud.Region.HP • SR006 используйте:
Чтобы посмотреть объем использованной памяти в каждом воркере задачи обучения:
В терминале выполните команду:
cat /sys/fs/cgroup/memory.current
После выполнения команды вернется значение используемой памяти в байтах:
cat /sys/fs/cgroup/memory.current 1020788117504