Support runtime EMOS auto-retrain outputs
This commit is contained in:
@@ -60,6 +60,9 @@ POLYWEATHER_EMOS_AUTO_MIN_SAMPLES=50
|
|||||||
POLYWEATHER_EMOS_AUTO_MAX_DELTA_CRPS=0
|
POLYWEATHER_EMOS_AUTO_MAX_DELTA_CRPS=0
|
||||||
POLYWEATHER_EMOS_AUTO_MAX_DELTA_MAE=0.05
|
POLYWEATHER_EMOS_AUTO_MAX_DELTA_MAE=0.05
|
||||||
POLYWEATHER_EMOS_AUTO_MIN_DELTA_BUCKET_HIT_RATE=-0.05
|
POLYWEATHER_EMOS_AUTO_MIN_DELTA_BUCKET_HIT_RATE=-0.05
|
||||||
|
# Optional: set this to a writable runtime path if you want auto retrain to
|
||||||
|
# promote new EMOS parameters without rebuilding the image.
|
||||||
|
# POLYWEATHER_PROBABILITY_CALIBRATION_FILE=/var/lib/polyweather/probability_calibration/default.json
|
||||||
POLYWEATHER_LGBM_ENABLED=false
|
POLYWEATHER_LGBM_ENABLED=false
|
||||||
POLYWEATHER_LGBM_MODEL_PATH=/app/artifacts/models/lgbm_daily_high.txt
|
POLYWEATHER_LGBM_MODEL_PATH=/app/artifacts/models/lgbm_daily_high.txt
|
||||||
POLYWEATHER_LGBM_SCHEMA_PATH=/app/artifacts/models/lgbm_daily_high_schema.json
|
POLYWEATHER_LGBM_SCHEMA_PATH=/app/artifacts/models/lgbm_daily_high_schema.json
|
||||||
|
|||||||
@@ -117,7 +117,13 @@ python scripts\auto_retrain_probability_calibration.py
|
|||||||
候选产物默认写入:
|
候选产物默认写入:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
artifacts/probability_calibration/candidates/<version>/
|
/var/lib/polyweather/probability_calibration/candidates/<version>/
|
||||||
|
```
|
||||||
|
|
||||||
|
最新自动训练报告默认写入:
|
||||||
|
|
||||||
|
```text
|
||||||
|
/var/lib/polyweather/probability_calibration/auto_retrain_report.json
|
||||||
```
|
```
|
||||||
|
|
||||||
允许门禁通过后自动发布:
|
允许门禁通过后自动发布:
|
||||||
@@ -146,12 +152,31 @@ Docker 手动触发:
|
|||||||
docker compose exec -T polyweather_web python scripts/auto_retrain_probability_calibration.py
|
docker compose exec -T polyweather_web python scripts/auto_retrain_probability_calibration.py
|
||||||
```
|
```
|
||||||
|
|
||||||
|
查看最新报告:
|
||||||
|
|
||||||
|
```text
|
||||||
|
docker compose exec -T polyweather_web cat /var/lib/polyweather/probability_calibration/auto_retrain_report.json
|
||||||
|
```
|
||||||
|
|
||||||
Docker 允许门禁发布:
|
Docker 允许门禁发布:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
docker compose exec -T polyweather_web python scripts/auto_retrain_probability_calibration.py --promote-if-passed --run-tests
|
docker compose exec -T polyweather_web python scripts/auto_retrain_probability_calibration.py --promote-if-passed --run-tests
|
||||||
```
|
```
|
||||||
|
|
||||||
|
如果希望自动发布不需要重建镜像,需要在 `.env` 中指定可写参数文件:
|
||||||
|
|
||||||
|
```text
|
||||||
|
POLYWEATHER_PROBABILITY_CALIBRATION_FILE=/var/lib/polyweather/probability_calibration/default.json
|
||||||
|
```
|
||||||
|
|
||||||
|
首次启用该路径前,先用当前镜像内置参数初始化一次:
|
||||||
|
|
||||||
|
```text
|
||||||
|
docker compose exec -T polyweather_web mkdir -p /var/lib/polyweather/probability_calibration
|
||||||
|
docker compose exec -T polyweather_web cp /app/artifacts/probability_calibration/default.json /var/lib/polyweather/probability_calibration/default.json
|
||||||
|
```
|
||||||
|
|
||||||
建议后续挂到宿主机 `cron` 或 systemd timer:
|
建议后续挂到宿主机 `cron` 或 systemd timer:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|||||||
@@ -15,8 +15,20 @@ from src.analysis.probability_calibration import DEFAULT_CALIBRATION_FILE # noq
|
|||||||
|
|
||||||
|
|
||||||
ARTIFACT_DIR = os.path.join(PROJECT_ROOT, "artifacts", "probability_calibration")
|
ARTIFACT_DIR = os.path.join(PROJECT_ROOT, "artifacts", "probability_calibration")
|
||||||
DEFAULT_CANDIDATE_ROOT = os.path.join(ARTIFACT_DIR, "candidates")
|
|
||||||
DEFAULT_DECISION_REPORT = os.path.join(ARTIFACT_DIR, "auto_retrain_report.json")
|
|
||||||
|
def _runtime_calibration_dir() -> str:
|
||||||
|
runtime_dir = str(os.getenv("POLYWEATHER_RUNTIME_DATA_DIR") or "").strip()
|
||||||
|
if runtime_dir:
|
||||||
|
return os.path.join(runtime_dir, "probability_calibration")
|
||||||
|
return ARTIFACT_DIR
|
||||||
|
|
||||||
|
|
||||||
|
DEFAULT_CANDIDATE_ROOT = os.path.join(_runtime_calibration_dir(), "candidates")
|
||||||
|
DEFAULT_DECISION_REPORT = os.path.join(
|
||||||
|
_runtime_calibration_dir(),
|
||||||
|
"auto_retrain_report.json",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def _sf(value: Any) -> Optional[float]:
|
def _sf(value: Any) -> Optional[float]:
|
||||||
|
|||||||
Reference in New Issue
Block a user