Хороший вопрос. Просто чтобы убедиться, звучит так, как будто вы уже настраиваете MLflow для связи с сервером отслеживания при запуске скрипта, например, через MLFLOW_TRACKING_URI=http://localhost:5000 python my-script.py
.
Хранение артефактов в MLflow
Артефакты незначительно отличаются от других данных выполнения (метрик, параметров, тегов) тем, что клиент, а не сервер, отвечает за их сохранение. Текущий поток (по состоянию на MLflow 0.6.0):
- Код звонка пользователя
mlflow.start_run
- Клиент MLflow делает запрос API к серверу отслеживания для создания прогона
- Сервер отслеживания определяет соответствующий URI корневого артефакта для прогона (в настоящее время: корни артефактов прогонов являются подкаталогами корневых каталогов артефактов их родительского эксперимента)
- Сервер отслеживания сохраняет метаданные выполнения (включая его корень артефакта) и возвращает клиенту объект Run
- Код звонка пользователя
log_artifact
- Клиент регистрирует артефакты под корнем артефакта активного запуска
выпуск
Когда вы запускаете сервер MLflow через mlflow server --host 0.0.0.0 --file-store /mnt/mlruns/
, сервер регистрирует метрики и параметры в /mnt/mlruns
в контейнере Docker, а также возвращает пути артефактов в /mnt/mlruns
клиенту. Затем клиент пытается зарегистрировать артефакты в /mnt/mlruns
в локальной файловой системе , которая завершается ошибкой с PermissionError
, с которым вы столкнулись.
Исправление
Наилучшим способом хранения артефактов на удаленном сервере отслеживания является настройка сервера для использования корня артефакта, доступного как для клиентов, так и для сервера (например, корзины S3 или URI хранилища BLOB-объектов Azure). Вы можете сделать это через mlflow server --default-artifact-root [artifact-root]
.
Обратите внимание, что сервер использует этот корень артефакта только при назначении корней артефактов для вновь созданных экспериментов - прогоны, созданные в существующих экспериментах, будут использовать корневой каталог артефакта в корне артефакта существующего эксперимента. См. Руководство по отслеживанию MLflow для получения дополнительной информации о настройке сервера отслеживания.