Для обучения моделей необходимо разместить пользовательские данные в любом объектном хранилище 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 требуется для обучения модели, тем выше вероятность того, что вычислительных ресурсов может не хватить.
Можно.
Для запуска задачи обучения только на 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 используйте:
тип задач обучения pytorch2;
instance_type='a100plus..'.
Чтобы посмотреть объем использованной памяти в каждом воркере задачи обучения:
В терминале выполните команду:
cat /sys/fs/cgroup/memory.current
После выполнения команды вернется значение используемой памяти в байтах:
cat /sys/fs/cgroup/memory.current 1020788117504