# Quy trình vận hành — dự báo S2S nắng nóng cực đoan (EHD)

Bản chốt 2026-08-31.  Hệ thống: hai tầng, mô hình **gộp toàn quốc**, **ngưỡng riêng
từng ô lưới**, cho 541 ô lưới đất và sáu tuần hạn dự báo W1–W6.

## 1. Sản phẩm phát hành

| Cửa sổ | Sản phẩm | r | Trạng thái so với chỉ tiêu |
|---|---|---|---|
| W1 | nhị phân + xác suất | 0.84 | **đạt trọn bộ**: POD 0.652, POFD 0.102, FAR 0.198, FBI 0.814, CSI 0.562, SEDI 0.724 |
| W2 | **xác suất** (nhị phân là tiện ích) | 1.00 | POD 0.580, FAR 0.455, CSI 0.391, SEDI 0.521 |
| W3 | **xác suất** | 1.00 | POD 0.480, FAR 0.505, CSI 0.322, SEDI 0.399 |
| W4 | **xác suất** | 1.00 | POD 0.475, FAR 0.533, CSI 0.308, SEDI 0.358 |
| W5 | **xác suất** | 1.00 | POD 0.474, FAR 0.546, CSI 0.302, SEDI 0.341 |
| W6 | **xác suất** | 1.00 | POD 0.454, FAR 0.555, CSI 0.290, SEDI 0.315 |

Từ W2 trở đi **không có ngưỡng nào đạt FAR < 0.2** — đã dò toàn dải r từ 0.02 đến
1.50.  Đó là trần tín hiệu chứ không phải lỗi hiệu chỉnh, nên **không phát hành sản
phẩm nhị phân theo chỉ tiêu hiện hành cho W2–W6**; phát hành trường xác suất để
người dùng nghiệp vụ tự chọn ngưỡng theo chi phí bỏ sót và chi phí báo động sai của
họ.  Đường cong POD–FAR đầy đủ theo r nằm ở `outputs/AI_Results/week_tune.json`.

## 2. Ba điều làm sai là hỏng cả hệ

1. **Đầu vào phải là control forecast của ECMWF.**  Toàn bộ huấn luyện dựa trên
   control.  Trung bình 51 thành phần là đối tượng thống kê khác — trơn hơn, phương
   sai nhỏ hơn — nên z-score sẽ co về 0 và hệ dự báo thiếu một cách hệ thống, **mà
   không báo lỗi gì cả**.
2. **Không dùng số liệu quan trắc tại thời điểm khởi tạo.**  Vận hành không có nó.
   Mọi đặc trưng lấy từ chính lần chạy EC (bộ biến F3).  Các bộ F6/F7/F8 có dùng
   lịch sử quan trắc nên **không được dùng cho nghiệp vụ**.
3. **Khối tham số phải đóng băng theo model cycle.**  ECMWF đổi cycle 1–2 lần/năm;
   đổi cycle thì khí hậu mô hình đổi theo, phải huấn luyện lại toàn bộ.

## 3. Khối tham số đóng băng

| Khối | Dung lượng | Đường dẫn |
|---|---|---|
| clim_ec_mean / clim_ec_std | 2 × 1.4 GB | `outputs/Cli/` |
| Ngưỡng Tx (Qp_tx_mod, Qp_tx_obs) | 50 MB | `outputs/Cli/` |
| EOF (H500, T850) | 8 MB | `outputs/EOF/` |
| Bộ mô hình 6 cửa sổ + meta | 1.36 GB | `outputs/operational/` |
| **Tổng** | **≈ 4.3 GB** | |

`outputs/AI_Inp/ec_z.f4` (8.3 GB) là **dữ liệu huấn luyện**, không phải tham số —
không cần mang theo khi vận hành.

Mỗi cửa sổ gồm `model_<W>.joblib` (8 họ hồi quy tầng 1 kèm bảng hiệu chỉnh độ tán,
6 họ phân loại tầng 2) và `meta_<W>.json` (ngưỡng cổng p1 và ngưỡng tầng 2 cho từng
ô trong 541 ô, base rate khí hậu, r).  Tổng **56 mô hình** — so với 30 296 nếu làm
riêng từng ô lưới.  Đây chính là lý do chọn kiến trúc gộp: bài toán không phải thời
gian huấn luyện mà là **giám sát**.

## 4. Chạy dự báo

```bash
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib          # torch cần libstdc++ của conda
python src/operational_forecast.py --init 2023-01-05 \
       --windows W1 W2 W3 W4 W5 W6 \
       --out outputs/operational/forecast.nc
```

Đầu ra NetCDF, mỗi cửa sổ ba trường trên 541 ô lưới:
`prob_<W>` (xác suất EHDE), `pred_<W>` (quyết định nhị phân), `p_gate_<W>` (điểm số
tầng 1).  Mẫu bị cổng tầng 1 đóng được xuất ra **"không có EHDE"** — một khẳng định,
không phải "không phát báo".

## 5. Kiểm chứng lại sau mỗi lần huấn luyện

```bash
python src/operational_forecast.py --init valid --verify --windows W1 ... W6
```

Chạy lại toàn bộ 416 lần khởi tạo của 4 năm kiểm định và chấm điểm.  Kết quả phải
khớp bảng ở mục 1.  Lần chạy 2026-08-31 khớp **chính xác đến ba chữ số thập phân**
với số liệu nghiên cứu, tức chuỗi đóng gói không làm sai lệch gì.

## 6. Giám sát khi vận hành

- Theo dõi **FBI theo tháng trượt** cho từng cửa sổ.  FBI trôi khỏi khoảng 0.7–1.3
  là dấu hiệu khí hậu mô hình đã đổi (thường do đổi cycle) — hiệu chỉnh lại ngưỡng
  trước, huấn luyện lại sau.
- Theo dõi **SEDI**, không theo dõi CSI hay PC.  CSI phụ thuộc base rate nên mùa
  nóng lên là CSI tự tăng dù kỹ năng không đổi; PC thì vô dụng (luôn ~0.7 kể cả khi
  luôn nói "không").
- **Không chốt lại ngưỡng theo vùng.**  Đã thử: số vùng đạt chỉ tiêu giảm từ 5/7
  xuống 4/7 vì ngưỡng mức vùng bám nhiễu của trường ngoài mẫu.
