У меня возникла проблема: диск моего вычислительного экземпляра заполняется после выполнения на нем некоторого количества заданий ML. Я порылся в Интернете, но не смог найти много информации о том, как решить эту проблему. Когда диск заполняется, мой вычислительный экземпляр переходит в «непригодное для использования» состояние, и мне советуют удалить некоторые файлы, прежде чем я смогу перезагрузить экземпляр.
Проблема в том, что я понятия не имею, какие файлы удалять. Очевидно, что во время моих заданий ML создаются некоторые файлы, которые хранятся где-то на файловом диске, но я не знаю, что это за файлы и где они хранятся. Кроме того, файловый диск очень запутан и неинтуитивен:
Я удалил все задания, которые выполнялись на вычислительном экземпляре, из Azure ML Studio, думая, что это приведет к удалению всех файлов, созданных во время этих заданий. Но этого не произошло — задания были удалены, но вычислительный экземпляр по-прежнему непригоден для использования. Следующие ссылки предоставили некоторую информацию о проблеме, но ее недостаточно, чтобы понять, что делать.
https://learn.microsoft.com/en-us/azure/machine-learning/concept-compute-instance?view=azureml-api-2 (в самом низу)
https://www.reddit.com/r/azuredevops/comments/ypkdiu/help_to_solve_the_disk_full_error_when_running/ Хотя вопрос связан, нет полезной информации о том, как решить проблему «диск переполнен». Вычислительный экземпляр остается «непригодным для использования».
Если кто-нибудь что-нибудь понимает по этому поводу, я был бы безмерно благодарен и уверен, что это пригодится и будущим разработчикам Azure.


На самом деле вам не следует отслеживать монтирование, поэтому не смотрите на /mnt (возможно, я ошибаюсь, но давайте предположим, что на данный момент это правда)
Я потерял несколько виртуальных машин в «непригодном» состоянии из-за отсутствия места на диске виртуальной машины, обычно это образы докеров или виртуальные среды, такие как conda, со всеми этими пакетами, зависимостями и различными версиями.
Итак, моя квитанция:
Посмотрите, каково ваше использование пространства на виртуальной машине, а не на монтировании:
df -h
взгляните на первую строку /dev/root и не беспокойтесь о других строках:
так в моем случае используется 60 гигов, чтобы посмотреть, что именно съедает место на этой ВМ:
du -hsx /* | sort -rh | head -n 10
окей, мне не нужно беспокоиться о /mnt, как мы и договорились, а также о /usr, а также о системных библиотеках и т. д. самое интересное /anaconda
чтобы пойти глубже, я снова использую ту же команду, но с еще одним уровнем каталога анаконды:
du -hsx /anaconda/* | sort -rh | head -n 10
делая то же самое для следующей папки «envs», я вижу, кто является основным потребителем:
просто уничтожьте такой env через conda с помощью команды conda remove -n + в конце вы можете сделать rm -rf с этим каталогом, так что избавьтесь от него полностью. Если вам это не нужно для вашего эксперимента, конечно (как в моем случае).
Это не идеальный набор действий, но один раз в год/неделю/день вполне подойдет.
Чтобы очистить образ докера, лучше проверить его с помощью docker image list и удалить неиспользуемый, так как его сложнее отслеживать с помощью df/du.
Вы можете просто применить тот же список действий к своему делу и посмотреть, что именно занимает место на вашем вычислительном экземпляре в AML. Может быть, даже обернуть в сценарий запуска или что-то в этом роде, чтобы время от времени автоматически выполнять очистку, если это возможно.
Кроме того, существуют разные способы проведения экспериментов, но если у вас есть приличное количество экспериментов для запуска на вашем вычислительном экземпляре, я настоятельно рекомендую использовать удаленное выполнение в AML на вычислительных кластерах, а не на вычислительных экземплярах. Эти узлы кластера являются одноразовыми после каждого запуска и не имеют таких накопившихся проблем. Это было бы более эффективно, но у вас не будет возможностей отладки, поэтому он не очень подходит для специальных экспериментов, но все же стоит попробовать.
Я согласен, что работа на вычислительных кластерах обычно лучше и вызывает меньше проблем. Я считаю, что вычислительные экземпляры хороши только для отдельных заданий и для целей отладки.
Я думаю, что безопасно удалять среды conda по умолчанию, предоставляемые Azure, вероятно, они создают их для пользователей, чтобы у них было более удобное взаимодействие с AML из коробки. старые вычислительные экземпляры имеют разные окружения conda по сравнению с недавно созданными. Поэтому я бы сказал, что если вы его не используете, то удалите его с помощью conda remove --name ENV_NAME --all, особенно если вы уже самостоятельно контролируете виртуальные окружения. Я думал, что это может повлиять на установку az cli, но на самом деле нет, его можно установить в систему вообще без conda.
Спасибо, это отличный ответ! Однако вопрос: безопасно ли удалять эти среды conda? Я не думаю, что использую их, поскольку определяю свою собственную среду для каждого задания, которое запускаю с помощью az ml cli, но я хочу убедиться. Пользовательская среда — это типичная зарегистрированная среда в студии Azure ML, поэтому она имеет базовый образ Docker и спецификацию файла Conda.