#docker #tensorflow #machine-learning #singularity-container
Вопрос:
Я использую предварительно построенный контейнер сингулярности для Tensorflow ML в удаленном кластере. Я открываю контейнер сингулярности, расположенный в /cvmfs/unpacked.cern.ch/registry.hub.docker.com/fnallpc/
команде, как показано ниже
singularity run --nv --bind `readlink $HOME` --bind `readlink -f ${HOME}/nobackup/`
--bind /cvmfs /cvmfs/unpacked.cern.ch/registry.hub.docker.com/fnallpc/fnallpc-docker:tensorflow-latest-devel-gpu-singularity
Это хорошо открывает изображение сингулярности, и команда работает.
Теперь у меня есть несколько файлов, которые мне нужны в среде Tensorflow, но когда я открываю изображение, очевидно, что файла нет. Есть ли способ использовать файлы в моем рабочем каталоге (для которого требуется среда Tensorflow), когда я открываю контейнер Singularity? Интересно, есть ли команда для совместного открытия изображения и файлов в моем рабочем каталоге, чтобы у меня был доступ к этим файлам, находясь в образе контейнера.
Комментарии:
1. вы запускаете образ локально или он запускает запуск на удаленном кластере?
2. Я запускаю изображение локально
Ответ №1:
И ваш $HOME
, и текущий каталог по умолчанию монтируются автоматически. Однако автоматическое монтирование может завершиться без сбоев, если путь не существует внутри контейнера. например, вы выполняете из /cluster/storage/somepath
/cluster
, но внутри контейнера сингулярности его нет. То же самое может произойти, если $HOME
это где-то странно, но встречается гораздо реже.
Явное использование --bind
не имеет этой проблемы. Добавление --bind "$PWD"
должно позаботиться об этом.
Вы можете быстро проверить, что вы выполняете там, где ожидаете singularity exec --bind "$PWD" image.sif pwd
. Рабочий каталог внутри контейнера совпадает с каталогом за пределами контейнера (если он доступен), возвращаясь к $HOME
тому, если $PWD
он недоступен, и /
если $PWD
ни $HOME
один из них не доступен внутри изображения.