fix: opt-out из maintenance mode file-store серверного бэкенда (MLFLOW_ALLOW_FILE_STORE=true)
This commit is contained in:
@@ -142,6 +142,7 @@ mlflow run . -P epochs=10 -P batch_size=256 -P lr=0.001 --entry-point gpu
|
||||
- `train_gpu.py` передаёт `input_example` → сигнатура авто-infer'ится.
|
||||
- `autolog_demo.py` намеренно отключает сигнатуры (`log_model_signatures=False`) как демо опций autolog — там warning ожидаем.
|
||||
- **INFO про переменные окружения** (`OPENAI_API_KEY` и т.п.) при логировании подавлено через `MLFLOW_RECORD_ENV_VARS_IN_MODEL_LOGGING=false` в скриптах, логирующих модели.
|
||||
- **File-store как СЕРВЕРНЫЙ бэкенд в maintenance mode (MLflow 3.x)**: `mlflow server --backend-store-uri file://...` по умолчанию падает с `MlflowException ... filesystem tracking backend is in maintenance mode`. Официальный opt-out — `export MLFLOW_ALLOW_FILE_STORE=true` (уже выставлено в `start_ui.sh` перед file-блоком). Это касается ТОЛЬКО сервера; клиентский file store (как пишут скрипты в `./mlruns`) работает без opt-out. Альтернатива без opt-out — SQLite-бэкенд (закомментированный блок в `start_ui.sh`), но тогда скрипты должны логировать на сервер через `mlflow.set_tracking_uri('http://localhost:5555')`.
|
||||
- **`input_example` для `mlflow.pytorch.log_model` — только numpy**, не `torch.Tensor`: MLflow 3.x валидирует пример входа и падает с `MlflowException ... but got '<class 'torch.Tensor'>'`. В `train_gpu.py` передаётся `np.random.rand(1,1,28,28).astype(np.float32)`. Аналогично для других flavor'ов — пример должен быть DataFrame/ndarray/dict/list/скаляр.
|
||||
- **urllib3 `NotOpenSSLWarning`** на macOS (системный `ssl` собран с LibreSSL 2.8.3, urllib3 v2 просит OpenSSL 1.1.1+) — стороннее шумовое предупреждение, к проекту отношения не имеет; не подавляем (чтобы не прятать реальные предупреждения).
|
||||
- **«Эксперимент не виден в UI» (главная причина)**: скрипты по умолчанию пишут в локальный file store `./mlruns`, а `start_ui.sh` раньше поднимал сервер на **SQLite** (`mlflow.db`) — два разных хранилища, UI ничего не показывал. Теперь `start_ui.sh` использует `--backend-store-uri file://${PWD}/mlruns` — **то же хранилище, что и скрипты**, поэтому всё видно без настройки tracking URI. Альтернатива (SQLite-бэкенд) оставлена закомментированной в `start_ui.sh`; при её включении в скриптах нужно задать `mlflow.set_tracking_uri('http://localhost:5555')` (или `MLFLOW_TRACKING_URI`).
|
||||
|
||||
+10
-3
@@ -7,9 +7,14 @@
|
||||
# пишут по умолчанию). Поэтому UI видит все эксперименты/запуски
|
||||
# без доп. настройки tracking URI в скриптах.
|
||||
#
|
||||
# Альтернатива — SQLite-бэкенд (нужен, только если хотите SQL-запросы
|
||||
# к запускам). Тогда раскомментируйте блок SQLITE ниже и закомментируйте
|
||||
# FILE, а в скриптах задайте mlflow.set_tracking_uri("http://localhost:5555")
|
||||
# ВАЖНО: file-store как СЕРВЕРНЫЙ бэкенд в новых MLflow (3.x) переведён в
|
||||
# maintenance mode и по умолчанию запрещён. Официальный opt-out —
|
||||
# MLFLOW_ALLOW_FILE_STORE=true (его и выставляем ниже). Это касается только
|
||||
# `mlflow server`; клиентский file store (как пишут скрипты) работает и без него.
|
||||
#
|
||||
# Альтернатива — SQLite-бэкенд (recommended MLflow, без opt-out). Тогда
|
||||
# раскомментируйте блок SQLITE ниже и закомментируйте FILE, а в скриптах
|
||||
# задайте mlflow.set_tracking_uri("http://localhost:5555")
|
||||
# (или export MLFLOW_TRACKING_URI=http://localhost:5555).
|
||||
# ============================================================
|
||||
set -e
|
||||
@@ -26,6 +31,8 @@ echo " Нажмите Ctrl+C для остановки"
|
||||
echo ""
|
||||
|
||||
# ─── FILE backend (по умолчанию — единое хранилище со скриптами) ───
|
||||
# MLFLOW_ALLOW_FILE_STORE=true — opt-out из maintenance mode file-store бэкенда.
|
||||
export MLFLOW_ALLOW_FILE_STORE=true
|
||||
mlflow server \
|
||||
--backend-store-uri "file://${PWD}/mlruns" \
|
||||
--default-artifact-root "file://${PWD}/artifacts" \
|
||||
|
||||
Reference in New Issue
Block a user