Năm điều quan trọng nhất
- 10 luồng còn phát dự báo thật (9 trung tâm). 25 system còn lại chỉ là lưu trữ hoặc vừa bị thay thế.
- CDS không giao lưới gốc mô hình. Tất cả về 1.0°, riêng JMA 1.25° — chỉ ~30 ô lưới trên đất liền Việt Nam.
- Cả 10 hệ thống đều có
mx2t24bước 24h — đủ dựng ngưỡngmin(Tx90p, 35°C)trực tiếp. - Phát hành 1 lần/tháng. Bản init ngày 01 chỉ tới tay ngày 06 (ECMWF) hoặc 10 (còn lại) → mất trọn tuần 1.
- 6/10 hệ thống có ensemble hindcast khác ensemble real-time (ECMWF 25→51). Đây là bẫy hiệu chỉnh nghiêm trọng.
- 6/10 hệ chỉ có đúng một ngày khởi tạo mỗi tháng — ngày 01, không đổi suốt chuỗi. NCEP là hệ duy nhất chạy 4 cycle/ngày (00/06/12/18 UTC).
Nguồn nào thực sự cho dự báo real-time
Dataset liệt kê 35 giá trị system nhưng phần lớn đã ngừng chạy. Tiêu chí phân loại ở đây là dữ liệu thực có trong catalogue tại thời điểm 02/09/2026: hệ thống còn sống phải có dữ liệu tới tháng 08/2026 — tháng mới nhất đã được phát hành.
| Trung tâm | Mã CDS | Hệ thống | Trạng thái | Tháng cuối có dữ liệu |
|---|---|---|---|---|
| ECMWF | ecmwf / 51 | SEAS5.1 | Real-time | 2026-08 |
| Météo-France | meteo_france / 9 | System 9 | Real-time | 2026-08 |
| UK Met Office | ukmo / 610 | GloSea6-GC5.1 | Real-time | 2026-08 |
| DWD | dwd / 22 | GCFS2.2 | Real-time | 2026-08 |
| CMCC | cmcc / 4 | SPS4 | Real-time | 2026-08 |
| NCEP | ncep / 2 | CFSv2 | Real-time | 2026-08 |
| JMA | jma / 4 | CPS4 | Real-time | 2026-08 |
| ECCC | eccc / 4 | CanESM5.1p1bc | Real-time | 2026-08 |
| ECCC | eccc / 5 | GEM5.2-NEMO | Real-time | 2026-08 |
| BOM (Úc) | bom / 2 | ACCESS-S2 | Real-time | 2026-08 |
constraints.json của CDS.Vừa thay ukmo/604, ukmo/605, jma/3, dwd/21, cmcc/35, meteo_france/8 — vẫn còn số liệu tới 2025 hoặc đầu 2026 nhưng đã bị hệ thống mới thay thế; không dùng cho thiết kế nghiệp vụ.
Lưu trữ ecmwf/4, ecmwf/5, meteo_france/5,6,7, ukmo/12,13,14,15,600–603, dwd/2, cmcc/3, eccc/1,2,3, jma/2 — chỉ còn hữu ích khi cần chuỗi hindcast của phiên bản mô hình cũ.
Có mặt đúng hẹn hay không
“Đang chạy real-time” và “giao đúng hẹn” là hai chuyện khác nhau. Kiểm tra từng phiên bản catalogue của 12 lô gần nhất và hỏi: hệ nào thực sự có mặt với init ngày 01 của đúng tháng đó?
| Hệ thống | Có mặt / số lô | Từ 09/2025 đến 08/2026 |
|---|---|---|
| ecmwf / 51 | 12 / 12 | Không sót lô nào |
| meteo_france / 9 | 12 / 12 | Không sót lô nào |
| dwd / 22 | 12 / 12 | Không sót lô nào |
| cmcc / 4 | 12 / 12 | Không sót lô nào |
| ncep / 2 | 12 / 12 | Không sót lô nào |
| eccc / 4 | 12 / 12 | Không sót lô nào |
| eccc / 5 | 12 / 12 | Không sót lô nào |
| bom / 2 | 12 / 12 | Không sót lô nào |
| ukmo / 610 | 12 / 12 | Liên tục nhưng đổi số hiệu: 604 → 605 (T3) → 610 (từ T4/2026) |
| jma / 4 | 10 / 12 | Vắng mặt T2 và T3/2026 — CPS3 ngừng 21/01/2026, CPS4 vào từ T4/2026 |
Hai bất thường duy nhất trong 12 tháng:
- Khoảng trống JMA. Lô tháng 2 và tháng 3/2026 chỉ có 9 hệ. JMA CPS3 bị ngừng ngày 21/01/2026 còn CPS4 mãi tháng 4/2026 mới vào — hai tháng không có đóng góp nào từ JMA. Một pipeline đa mô hình cố định 10 thành viên sẽ gãy ở đây.
- Lô tháng 3/2026 đi sớm. Ghi lúc 09/03 15:05 UTC thay vì ngày 10 — sớm một ngày, không phải trễ. Lô ngày 06 tháng đó vẫn đúng hẹn với riêng ECMWF.
Không có lô nào bị trễ trong suốt 12 tháng. Rủi ro thực tế không nằm ở việc chậm giờ mà ở việc một trung tâm biến mất giữa hai phiên bản hệ thống — đã xảy ra với JMA, và sẽ còn xảy ra với UKMO vì nó đổi số hiệu 2–3 lần mỗi năm.
Cấu hình đầy đủ mười hệ thống real-time
Số ensemble dưới đây là đếm số bản ghi GRIB thực tế từ các yêu cầu tải thử (một điểm lưới, một lead, biến mx2t24), không lấy từ tài liệu. Với hệ thống lagged, con số là số thành viên của một ngày init; ensemble đầy đủ được tạo bằng cách gộp nhiều ngày init liên tiếp.
| Mã CDS | Hệ thống | Lưới giao ◆ | Hindcast ◆ | Số năm | RT từ | Ens HC ◆ | Ens RT ◆ | Hạn (ngày) |
|---|---|---|---|---|---|---|---|---|
| ecmwf / 51 | SEAS5.1 | 1.0° | 1981–2016 | 36 | 2017 | 25 | 51 | 215 |
| meteo_france / 9 | System 9 | 1.0° | 1993–2024 | 32 | 04/2025 | 31 | 51 | 215 |
| ukmo / 610 | GloSea6-GC5.1 | 1.0° | 1993–2016 | 24 | 03/2026 | 7 | 2 | 215 |
| dwd / 22 | GCFS2.2 | 1.0° | 1993–2023 | 31 | 03/2025 | 30 | 50 | 184 |
| cmcc / 4 | SPS4 | 1.0° | 1993–2024 | 32 | 08/2025 | 30 | 50 | 184 |
| ncep / 2 | CFSv2 | 1.0° | 1993–2016 | 24 | 2019/2020 | 4 | 4 | 215 |
| jma / 4 | CPS4 | 1.25° | 1993–2020 | 28 | 03/2026 | 5 | 5 | 215 |
| eccc / 4 | CanESM5.1p1bc | 1.0° | 1993–~2024 ○ | ~32 | ~2024 | 20 | 20 | 214 |
| eccc / 5 | GEM5.2-NEMO | 1.0° | 1993–~2024 ○ | ~32 | 06/2024 | 20 | 20 | 214 |
| bom / 2 | ACCESS-S2 | 1.0° | 1993–2018 | 26 | 03/2025 | 3 | 11 | 215 |
Cấu trúc cycle và ngày khởi tạo
Đây là chỗ dễ đếm nhầm nhất, vì hai đại lượng khác hẳn nhau cùng bị gọi là “thành viên ensemble”. Kiểm tra khoá dataTime trong từng bản ghi GRIB tách được chúng ra: nếu các bản ghi cùng dataTime và khác number thì đó là nhiễu động của cùng một cycle; nếu khác dataTime thì đó là các cycle khác nhau trong ngày.
| Mã CDS | Cycle/ngày ◆ | Ngày init/tháng — hindcast ◆ | Ngày init/năm | Ngày init — real-time ◆ | Lần chạy/năm (HC) |
|---|---|---|---|---|---|
| ecmwf / 51 | 1 · 00 UTC | 1 — luôn là ngày 01 | 12 | 1 — ngày 01 | 300 |
| meteo_france / 9 | 1 · 00 UTC | 1 — luôn là ngày 01 | 12 | 1 — ngày 01 | 372 |
| dwd / 22 | 1 · 00 UTC | 1 — luôn là ngày 01 | 12 | 1 — ngày 01 | 360 |
| cmcc / 4 | 1 · 00 UTC | 1 — luôn là ngày 01 | 12 | 1 — ngày 01 | 360 |
| eccc / 4 | 1 · 00 UTC | 1 — luôn là ngày 01 | 12 | 1 — ngày 01 | 240 |
| eccc / 5 | 1 · 00 UTC | 1 — luôn là ngày 01 | 12 | 1 — ngày 01 | 240 |
| jma / 4 | 1 · 00 UTC | 2 — ngày trôi theo lịch | 24 | hằng ngày | 120 |
| ukmo / 610 | 1 · 00 UTC | 4 — ngày 01, 09, 17, 25 chỉ tháng 3–9 | 24 | hằng ngày | 168 |
| ncep / 2 | 4 · 00, 06, 12, 18 UTC | ~6 — chu kỳ 5 ngày liên tục, ngày trôi | 73 | hằng ngày | 292 |
| bom / 2 | 1 · 00 UTC | 9 — ngày 01 + 8 ngày cuối tháng | 108 | 11 — ngày 01 + 10 ngày cuối | 324 |
Số bản ghi mỗi cycle đã được kiểm chứng là đồng nhất trên mọi ngày init, không riêng ngày 01: ukmo/610 ngày 17/07/2010 vẫn 7 bản ghi và ngày 15/07/2026 vẫn 2; ncep/2 ngày 15/07/2026 vẫn đủ 4 cycle 00/06/12/18 UTC; bom/2 ngày 25/07 cho 3 bản ghi ở hindcast và 11 ở real-time.
NCEP không phải ensemble 4 thành viên. Bốn bản ghi đều mang number=0 nhưng dataTime lần lượt là 0, 600, 1200, 1800 — tức 4 cycle riêng biệt trong ngày, mỗi cycle một lần chạy đơn. Đây là hệ duy nhất trong cả 10 hệ chạy nhiều hơn một cycle mỗi ngày.
Ngày init của NCEP và JMA trôi theo lịch. NCEP chạy chu kỳ 5 ngày liên tục xuyên tháng, nên ngày cụ thể đổi mỗi tháng: tháng 1 là 1, 6, 11, 16, 21, 26, 31 nhưng tháng 2 lại là 5, 10, 15, 20, 25. Đừng hard-code ngày init — phải đọc từ constraints.json.
BOM không khởi tạo rải đều trong tháng. Mẫu thực tế là ngày 01 cộng với 8–10 ngày cuối tháng (ví dụ tháng 7: ngày 1, 24–31). Đây là cấu trúc ensemble trễ, các ngày cuối tháng là thành viên lagged cho kỳ dự báo bắt đầu tháng sau.
UKMO bị chia nhỏ theo số hiệu system
Met Office sinh lại hindcast cho từng phiên bản hệ thống, và số hiệu system đổi ngay giữa năm. Luồng real-time nhảy qua nhiều số hiệu: 603 (T1–T2/2025) → 604 (T2/2025–T2/2026) → 605 (T2–T3/2026) → 610 (T3–T8/2026).
Hệ quả trực tiếp: ukmo/610 mới chỉ có hindcast cho tháng 3 đến tháng 9 (24 ngày init/năm), không phải cả năm.
| Mã CDS | Hindcast trải tháng ◆ | Ngày init/năm | Bản ghi/cycle ◆ | Cycle độc lập | Real-time phục vụ |
|---|---|---|---|---|---|
| ukmo / 603 | 1–12 · trọn năm | 48 | 7 ○ | 1.152 | T1–T2/2025 |
| ukmo / 604 | 1–12 · trọn năm | 48 | 7 | 1.152 | T2/2025 – T2/2026 |
| ukmo / 605 | 2–3 · chỉ 2 tháng | 4 | 7 ○ | 96 | T2–T3/2026 |
| ukmo / 610 | 3–9 | 24 | 7 | 576 | T3–T8/2026 (hiện hành) |
Muốn chuỗi UKMO đủ 12 tháng thì phải dùng ukmo/604 — đã kiểm chứng có hindcast trọn năm (cả tháng 1 lẫn tháng 7 đều 7 bản ghi), 4 ngày init mỗi tháng, tổng 1.152 cycle độc lập. Cấu hình 7 bản ghi ở hindcast và 2 ở real-time giữ nguyên qua các số hiệu system, nên đổi phiên bản không làm thay đổi cỡ ensemble — chỉ đổi cửa sổ tháng và phiên bản mô hình. Cái giá phải trả là nó không còn khớp với phiên bản đang chạy nghiệp vụ. Với bài toán nắng nóng mùa hè ở Việt Nam thì cửa sổ tháng 3–9 của 610 lại vừa đủ dùng, nên đây là đánh đổi chấp nhận được.
Số hiệu system của UKMO đổi khoảng 2–3 lần mỗi năm và không báo trước trong dữ liệu. Một pipeline nghiệp vụ hard-code system=610 sẽ lặng lẽ ngừng nhận dữ liệu khi Met Office chuyển sang số hiệu kế tiếp. Phải dò số hiệu khả dụng từ constraints.json ở mỗi chu kỳ chạy, hoặc chấp nhận dùng cố định một phiên bản cũ cho cả huấn luyện lẫn dự báo.
Về độ phân giải không gian
Đây là điểm dễ hiểu nhầm nhất. Độ phân giải gốc của các mô hình cao hơn nhiều — ECMWF SEAS5 chạy ở TCo319 ≈ 36 km, Met Office ở N216 ≈ 0,83°×0,55°, JMA ở TL319 ≈ 55 km ○ — nhưng CDS không giao lưới gốc. Mọi thứ đã được nội suy về lưới đều trước khi lưu trữ.
Ở 1,0° (≈110 km), toàn bộ phần đất liền Việt Nam chỉ rơi vào khoảng 30 ô lưới (ước tính từ diện tích 331.000 km²). Dải lãnh thổ hẹp theo kinh tuyến, phân hoá địa hình mạnh Đông–Tây Trường Sơn hoàn toàn không được phân giải. Downscaling về 0,25° là bắt buộc, không phải tuỳ chọn.
Dung lượng mẫu hindcast để huấn luyện
Với mô hình AI theo điểm lưới, câu hỏi thực sự là có bao nhiêu mẫu độc lập. Bảng dưới tách ba đại lượng thường bị gộp làm một: ngày init, cycle độc lập (ngày init × số cycle trong ngày — mỗi cycle là một trạng thái khí quyển ban đầu riêng) và tổng lần chạy (các nhiễu động trong cùng một cycle tương quan rất mạnh, không phải mẫu độc lập).
| Mã CDS | Năm HC | Ngày init/năm | Tổng ngày init | Cycle/ngày | Cycle độc lập | Bản ghi/cycle | Tổng lần chạy |
|---|---|---|---|---|---|---|---|
| ncep / 2 | 24 | 73 | 1.752 | 4 | 7.008 | 1 | 7.008 |
| bom / 2 | 26 | 108 | 2.808 | 1 | 2.808 | 3 | 8.424 |
| jma / 4 | 28 | 24 | 672 | 1 | 672 | 5 | 3.360 |
| ukmo / 610 | 24 | 24 | 576 | 1 | 576 | 7 | 4.032 |
| ecmwf / 51 | 36 | 12 | 432 | 1 | 432 | 25 | 10.800 |
| meteo_france / 9 | 32 | 12 | 384 | 1 | 384 | 31 | 11.904 |
| cmcc / 4 | 32 | 12 | 384 | 1 | 384 | 30 | 11.520 |
| eccc / 4 | ~32 | 12 | 384 | 1 | 384 | 20 | 7.680 |
| eccc / 5 | ~32 | 12 | 384 | 1 | 384 | 20 | 7.680 |
| dwd / 22 | 31 | 12 | 372 | 1 | 372 | 30 | 11.160 |
ukmo/610 chỉ có hindcast tháng 3–9 nên con số của nó là cho cửa sổ đó, không phải cả năm.Hai nhóm rõ rệt, đánh đổi ngược chiều nhau:
- Nhóm giàu cycle, nghèo nhiễu động — NCEP (7.008 cycle), BOM (2.808). Đây là nhóm hợp với bài toán phân loại EHD theo điểm lưới, nơi số tình huống khí quyển khác nhau mới là thứ quyết định. NCEP dẫn đầu nhờ 4 cycle mỗi ngày trên chu kỳ 5 ngày liên tục.
- Nhóm nghèo cycle, giàu nhiễu động — ECMWF, Météo-France, CMCC, DWD, ECCC. Chỉ 372–432 cycle nhưng 20–31 bản ghi mỗi cycle, cho phép ước lượng xác suất EHD trực tiếp từ tỷ lệ thành viên vượt ngưỡng thay vì phải học nó.
Ghi chú trong EXP3 lo rằng 104 init × 20 năm = 2.080 mẫu, sau khi tách nhóm nEHDE chỉ còn ~208, là quá ít. Hai hệ thống ở đây vượt qua con số 2.080 đó về số cycle độc lập: NCEP 7.008 và BOM 2.808 — và chúng độc lập với chuỗi ECMWF S2S đang dùng, nên có thể gộp để tăng dung lượng thay vì phải gộp tuần W1–W6.
Ngược lại, ukmo/610 chỉ cho 576 cycle chứ không phải 1.152 như con số 4 ngày init/tháng gợi ý, vì hindcast của phiên bản này chỉ trải tháng 3–9. Nếu cần UKMO trọn năm phải chuyển sang ukmo/604.
Biến sẵn có cho bài toán EHD
Đây là điểm mạnh rõ ràng nhất của bộ số liệu. Toàn bộ 10 hệ thống real-time đều cung cấp đầy đủ nhóm biến dưới đây ở bước thời gian 24 giờ, từ lead 24h tới hết hạn dự báo.
| Vai trò | Tên biến CDS | Dùng để làm gì |
|---|---|---|
| Target chính | maximum_2m_temperature_in_the_last_24_hours | Tx ngày — dựng trực tiếp ngưỡng min(Tx90p31d, 35°C) |
| Target phụ | minimum_2m_temperature_in_the_last_24_hours | Tn ngày — đêm nóng, xác định đợt nắng nóng kéo dài |
| Nền nhiệt | 2m_temperature | Nhiệt độ trung bình, tách bias hệ thống khỏi bias phần đuôi phân bố |
| Ẩm | 2m_dewpoint_temperature | Điểm sương → chỉ số nhiệt–ẩm, phân biệt nắng nóng khô và oi bức |
| Cưỡng bức | surface_solar_radiation_downwards | Bức xạ tới — tiền đề vật lý của cực trị Tx |
| Mặt đệm | soil_temperature_level_1 | Nhiệt độ đất tầng 1 — trí nhớ khô hạn, khuếch đại nắng nóng |
| Hoàn lưu | mean_sea_level_pressure | Áp thấp nóng phía Tây, rãnh gió mùa |
| Hoàn lưu | 10m_u/v_component_of_wind | Gió Tây khô nóng (hiệu ứng phơn) qua Trường Sơn |
| Che phủ | total_cloud_cover | Mây — điều biến chính của biên độ nhiệt ngày |
| Biên | sea_surface_temperature | Nhiệt độ mặt biển — tín hiệu chậm, nguồn khả dự báo mùa |
tcc không có ở NCEP; các biến còn lại đủ ở cả 10 hệ thống.Độ trễ phát hành — ràng buộc quyết định
C3S phát hành theo lô, mỗi tháng một lần. Với dự báo mùa 6 tháng thì vài ngày trễ không đáng kể, nhưng với bài toán nội mùa 45 ngày thì nó ăn mất phần lead có giá trị nhất. Đây là ràng buộc quyết định toàn bộ thiết kế nghiệp vụ, nên mục này tách riêng phần tài liệu công bố khỏi phần quan sát trực tiếp.
- Ngày 01, 00 UTCCác hệ thống khởi tạo dự báo. Đây là lead day 0.
- Ngày 02 – 05Dữ liệu nằm trong thời gian cấm vận. Không truy cập được.
- Ngày 06, 12:05 UTCECMWF SEAS5.1 lên CDS — và chỉ ECMWF. Đã mất 5,50 ngày lead. ◆
- Ngày 10, 12:05 UTCChín hệ còn lại lên CDS, cùng lúc với toàn bộ ngày init lagged 02–31 của tháng trước. Đã mất 9,50 ngày lead. ◆
Đo trực tiếp thời điểm dữ liệu lên hệ thống
Không cần suy đoán từ tài liệu. Mỗi lần CDS đăng ký dữ liệu mới, nó sinh lại constraints.json của dataset và ghi vào một object store công khai, giữ nguyên mọi phiên bản cũ kèm dấu thời gian ghi. Liệt kê bucket đó khôi phục được đúng thời điểm từng lô dữ liệu có mặt — không cần API key, không cần chờ.
| Lô | Nội dung ◆ | Số lần quan sát | Độ trễ so với init (ngày) | Giờ phát hành UTC |
|---|---|---|---|---|
| Ngày 06 | Chỉ ecmwf/51 | 20 | 5,503 – 5,525 | 12:04 – 12:35 |
| Ngày 10 | 9 hệ còn lại + init lagged 02–31 tháng trước | 19 | 9,504 – 9,525 | 12:05 – 12:35 |
Biên độ dao động của cả 39 lô chỉ khoảng 30 phút. Đây là lịch đủ ổn định để chốt cron nghiệp vụ.
Tải đúng hai phiên bản catalogue của tháng 8/2026 và hỏi hệ nào đã có init 01/08:
06/08 12:05:35 → ecmwf/51
10/08 12:05:38 → bom/2 · cmcc/4 · dwd/22 · eccc/4 · eccc/5 · ecmwf/51 · jma/4 · meteo_france/9 · ncep/2 · ukmo/610
Bốn ngày giữa hai lô là chênh lệch thật giữa ECMWF và phần còn lại, không phải sai số quan sát.
Số ngày init của ukmo/610 và ncep/2 trong từng phiên bản catalogue:
T05 T06 T07 T08
06/06 12:23 1 0 0 0
10/06 12:30 31 1 0 0
06/07 12:29 31 1 0 0
10/07 12:27 31 30 1 0
06/08 12:05 31 30 1 0
10/08 12:05 31 30 31 1
Mỗi lô ngày 10 mang về đồng thời hai thứ: init ngày 01 của tháng hiện tại, và toàn bộ ngày init 02–31 của tháng trước. Lô ngày 06 không thêm gì cho các hệ này.
Độ trễ cụ thể của init lagged — ví dụ tháng 7/2026, tất cả về lúc 10/08 12:05: init ngày 02 trễ 39 ngày 12 giờ, ngày 15 trễ 26 ngày 12 giờ, ngày 31 trễ 10 ngày 12 giờ. Không dùng được cho nghiệp vụ real-time.
Cửa sổ lead thực sự khai thác được
Tính theo tuần kể từ ngày khởi tạo: W1 = ngày 1–7, W2 = 8–14, W3 = 15–21, W4 = 22–28, W5 = 29–35, W6 = 36–42.
| Nguồn | Dữ liệu về | Lead đã mất | Tuần còn trọn vẹn | Lần/năm |
|---|---|---|---|---|
| ecmwf / 51 | ngày 06, 12 UTC | 5,5 ngày | W2 → W6 (+ 2 ngày cuối W1) | 12 |
| 9 hệ còn lại · init ngày 01 | ngày 10, 12 UTC | 9,5 ngày | W3 → W6 (+ 4 ngày cuối W2) | 12 |
| Init lagged ngày 02–31 | tháng M+1 | 10 – 40 ngày | không dùng được | — |
Bốn ngày chênh lệch giữa lô ngày 06 và lô ngày 10 đổi thành trọn một tuần dự báo: ECMWF cho W2 đến W6, chín hệ còn lại chỉ cho W3 đến W6. Đây là lý do mạnh nhất — mạnh hơn cả độ dài hindcast — để đặt ecmwf/51 làm trục chính và coi các hệ khác là thành phần bổ sung cho hạn dài hơn.
Vậy bộ số liệu này là subseasonal hay seasonal?
Câu trả lời nằm ở chỗ tách hạn dự báo khỏi tần suất cập nhật. Hai thứ này thường bị gộp làm một, nhưng chỉ một trong hai là ràng buộc thật.
| Tiêu chí | Yêu cầu của bài toán subseasonal | Bộ C3S seasonal đáp ứng |
|---|---|---|
| Hạn dự báo | tuần 2 – tuần 6 | Đạt. ECMWF cho trọn W2–W6, chín hệ còn lại W3–W6. Hạn 184–215 ngày dư sức. |
| Biến cần thiết | Tx ngày, bước 24h | Đạt. Cả 10 hệ đều có mx2t24 từ lead 24h. |
| Dung lượng hindcast | đủ dài để hiệu chỉnh theo lead-week | Đạt. 24–36 năm, hơn hẳn hindcast on-the-fly 20 năm của S2S. |
| Tần suất cập nhật | ít nhất hằng tuần | Không đạt. Chỉ 12 lần/năm, mỗi tháng một lần. |
Ba trên bốn tiêu chí đạt. Nên nói bộ này “chỉ dùng cho seasonal” là chưa chính xác — nó có phủ đúng khoảng subseasonal. Cái nó không làm được là cập nhật.
Số ngày init thực sự có sẵn, đọc lúc 02/09/2026:
T07 (đã đủ) T08 (mới nhất)
ncep/2 31 1
ukmo/610 31 1
ecmwf/51 1 1
Trong real-time, NCEP cũng chỉ có đúng một ngày init như chín hệ còn lại — 30 ngày init kia phải chờ lô tháng sau. Tệ hơn, NCEP nằm ở lô ngày 10 nên về muộn hơn ECMWF 4 ngày. Ưu thế 4 cycle/ngày của NCEP chỉ tồn tại trong hindcast, tức chỉ có giá trị cho huấn luyện, không cho vận hành.
Cách gọi đúng cho bộ số liệu này là “dự báo nội mùa phát hành hằng tháng”. Nó trả lời được câu “sáu tuần tới có đợt nắng nóng nào không”, mỗi tháng một lần. Nó không trả lời được câu “tuần này tình hình thay đổi thế nào so với tuần trước”.
Kiểm tra theo ngưỡng vận hành
Một hệ dự báo nội mùa nghiệp vụ cần thoả đồng thời hai điều kiện, và cả hai đều là ngưỡng cứng chứ không phải mong muốn:
- C1 — Nhịp khởi tạo ≤ 5 ngày. Thưa hơn thì giữa hai lần cập nhật, bản dự báo đang dùng đã trôi quá xa so với trạng thái khí quyển thực.
- C2 — Độ trễ số liệu ≤ 5 ngày. Trễ hơn thì phần lead có kỹ năng cao nhất đã bị ăn mất trước khi dùng được.
| Nguồn | Nhịp mô hình sản xuất | Nhịp thực giao được | Độ trễ | C1 | C2 | Nghiệp vụ subseasonal |
|---|---|---|---|---|---|---|
| ecmwf / 51 | 30 ngày | 30 ngày | 5,50 ngày | ✗ | ✗ | Không |
| ncep / 2 | 0,25 ngày | 30 ngày | 9,50 ngày | ✗ | ✗ | Không |
| ukmo / 610 | 1 ngày | 30 ngày | 9,50 ngày | ✗ | ✗ | Không |
| jma / 4 | 1 ngày | 30 ngày | 9,50 ngày | ✗ | ✗ | Không |
| bom / 2 | ~3 ngày | 30 ngày | 9,50 ngày | ✗ | ✗ | Không |
| meteo_france/9 · dwd/22 · cmcc/4 · eccc/4 · eccc/5 — giống hệt: 30 / 30 / 9,50 · ✗ ✗ | ||||||
Cột thứ hai và thứ ba là chỗ đáng chú ý nhất. Bốn hệ — NCEP, UKMO, JMA, BOM — sản xuất ở nhịp vượt xa ngưỡng C1, nhưng nhịp giao qua CDS vẫn là 30 ngày. Nút thắt nằm ở khâu phát hành của C3S, không nằm ở mô hình. Muốn khai thác nhịp thật thì phải lấy dữ liệu từ trung tâm gốc.
Những đường thực sự đáp ứng được cả hai ngưỡng
| Đường lấy dữ liệu | Nhịp init | Độ trễ | C1 | C2 |
|---|---|---|---|---|
CFSv2 · NOAA NOMADS cfs/prod | 0,25 ngày | vài giờ | ✓ | ✓ |
| ECMWF extended-range · S2S database | 3,5 ngày | 48 giờ ○ | ✓ | ✓ |
| JMA, ECCC, KMA, CMA… · S2S database | tuỳ hệ | 48 giờ ○ | tuỳ | ✓ |
| BoM, CNRM · S2S database | tuỳ hệ | 1 tuần ○ | tuỳ | ✗ |
| UKMO · S2S database | tuỳ hệ | 3 tuần ○ | tuỳ | ✗ |
| Toàn bộ C3S seasonal · CDS | 30 ngày | 5,5 – 9,5 ngày | ✗ | ✗ |
CFSv2 từ NOMADS là nguồn mở duy nhất thoả cả hai ngưỡng với biên độ rộng rãi: 4 cycle mỗi ngày, độ trễ tính bằng giờ. Sản phẩm cfs_flux và cfs_pgb mà dự án HW_CFS_raw đang dùng ở dạng reforecast chính là hai bộ này ở dạng nghiệp vụ.
ECMWF extended-range qua S2S database thoả cả hai với 2 lần/tuần và 48 giờ trễ — đúng nguồn dự án HW đang dùng.
Vai trò còn lại của bộ C3S seasonal trên CDS vì thế thu hẹp rõ rệt: không phải nguồn nghiệp vụ, mà là kho hindcast dài 24–36 năm để huấn luyện và hiệu chỉnh, cộng thêm outlook đa mô hình hằng tháng cho hạn dài hơn 6 tuần.
Kiểm tra lại bất cứ lúc nào
Lịch này là thông báo từ tháng 3/2023 và C3S đã từng đổi. Script info/release_schedule.py dựng lại toàn bộ lịch phát hành từ object store, chạy lúc nào cũng cho kết quả cập nhật tới lô gần nhất:
python release_schedule.py # lich + thong ke do tre
python release_schedule.py --diff # tung lo mang them nhung gi
python release_schedule.py --dataset seasonal-monthly-single-levels
Không cần API key, không cần cron, không phải chờ tháng sau — bucket đã giữ sẵn 63 phiên bản catalogue từ tháng 3/2024. Nên chạy lại mỗi khi thiết kế lại lịch nghiệp vụ, hoặc khi một trung tâm nâng cấp hệ thống.
Bẫy hiệu chỉnh: ensemble hindcast ≠ ensemble real-time
Sáu trên mười hệ thống thay đổi kích thước ensemble giữa chế độ hindcast và chế độ real-time. Nếu huấn luyện mô hình trên hindcast rồi áp dụng nguyên xi cho real-time, phân bố của mọi đặc trưng dạng ensemble — độ tán, phân vị, tỷ lệ thành viên vượt ngưỡng — sẽ lệch một cách hệ thống.
| Mã CDS | Ens hindcast | Ens real-time | Thay đổi |
|---|---|---|---|
| ecmwf / 51 | 25 | 51 | gấp 2,0× |
| meteo_france / 9 | 31 | 51 | gấp 1,6× |
| dwd / 22 | 30 | 50 | gấp 1,7× |
| cmcc / 4 | 30 | 50 | gấp 1,7× |
| bom / 2 | 3 | 11 | gấp 3,7× |
| ukmo / 610 | 7 | 2 | giảm 3,5× (mỗi ngày init) |
| ncep / 2 | 4 | 4 | không đổi |
| jma / 4 | 5 | 5 | không đổi |
| eccc / 4 | 20 | 20 | không đổi |
| eccc / 5 | 20 | 20 | không đổi |
Hai cách xử lý, chọn theo mục tiêu:
- Cắt bớt về mẫu số chung. Chỉ dùng N thành viên đầu ở cả hai chế độ (ECMWF: 25). Đơn giản, an toàn, nhưng bỏ phí một nửa thông tin real-time.
- Dùng đặc trưng bất biến theo cỡ ensemble. Trung bình, độ lệch chuẩn hiệu chỉnh bậc tự do, phân vị nội suy, tỷ lệ vượt ngưỡng. Tránh mọi đặc trưng phụ thuộc thứ hạng thô hay giá trị cực trị của ensemble, vì cực trị phụ thuộc trực tiếp vào số thành viên.
Nếu chọn ukmo/610, chú ý chiều thay đổi bị đảo: hindcast nhiều thành viên hơn real-time trên mỗi ngày init. Bù lại bằng cách gộp lagged nhiều ngày init trong real-time để đạt cỡ ensemble hiệu dụng tương đương.
Khuyến nghị khai thác
ECMWF SEAS5.1
ecmwf/51 — hindcast 36 năm, dài nhất toàn bộ dataset; 51 thành viên real-time; phát hành sớm nhất (ngày 06). Nền tảng để hiệu chỉnh và làm chuẩn so sánh.
Bốn hệ cùng init ngày 01
meteo_france/9, dwd/22, cmcc/4, eccc/5 — cùng lịch khởi tạo nên ghép thành super-ensemble không cần căn chỉnh thời gian. Cho ~180 thành viên mỗi lần dự báo.
NCEP và BOM
ncep/2 cho 7.008 cycle độc lập, bom/2 cho 2.808 — gấp 6,5 và 2,6 lần ECMWF. Dùng cho khâu huấn luyện và kiểm định, không dùng cho nghiệp vụ vì độ trễ ~40 ngày.
NCEP CFSv2
ncep/2 — cùng mô hình với dự án HW_CFS_raw nhưng đã được C3S chuẩn hoá về lưới 1° với hindcast 1993–2016 liền mạch. Dùng để đối chứng quy trình downscaling đang xây từ số liệu gốc.
Nếu mục tiêu thực sự là nội mùa tuần 1–4, đây không phải công cụ tối ưu. Bộ C3S seasonal khởi tạo mỗi tháng một lần và mất trọn tuần 1 vì độ trễ phát hành. ECMWF extended-range 46 ngày — hai lần mỗi tuần, hindcast on-the-fly 20 năm, nằm trong S2S database chứ không phải CDS — mới đúng công cụ, và dự án HW đã có nó.
Vai trò hợp lý của bộ số liệu này là bổ sung cho tuần 3–6, nơi tín hiệu khả dự báo chuyển từ điều kiện ban đầu khí quyển sang cưỡng bức chậm của đại dương và mặt đệm, cộng thêm nguồn hindcast dài để huấn luyện mà bộ S2S không có.
Tái lập kết quả
Toàn bộ bảng cấu hình dựng lại được từ hai lệnh. Lấy catalogue để biết năm, tháng, ngày init và lead khả dụng:
curl -sSL "https://cds.climate.copernicus.eu/api/catalogue/v1/collections/\
seasonal-original-single-levels/constraints.json" -o cons.json
Đếm số thành viên ensemble bằng một yêu cầu tải cực nhỏ — một điểm lưới, một lead, một biến — rồi đếm số bản ghi GRIB:
import cdsapi
cdsapi.Client().retrieve("seasonal-original-single-levels", {
"originating_centre": "ecmwf", "system": "51",
"variable": ["maximum_2m_temperature_in_the_last_24_hours"],
"year": ["2026"], "month": ["07"], "day": ["01"],
"leadtime_hour": ["24"], "data_format": "grib",
"area": [22, 105, 21, 106], # 1 gridpoint
}, "probe.grib")
# grib_ls -p dataDate,dataTime,number probe.grib
#
# ecmwf/51 -> 51 ban ghi, dataTime deu = 0, number = 0..50
# => 1 cycle/ngay, 51 nhieu dong
# ncep/2 -> 4 ban ghi, dataTime = 0/600/1200/1800, number deu = 0
# => 4 cycle/ngay, moi cycle 1 lan chay
Khoá dataTime là thứ phân biệt cycle với nhiễu động — bỏ qua nó là nguồn gốc của việc đếm nhầm NCEP thành “ensemble 4 thành viên”. Ngày init hợp lệ của mỗi tháng cũng phải đọc từ constraints.json chứ không suy ra được, vì NCEP và JMA có ngày init trôi theo lịch:
import json
cons = json.load(open("cons.json"))
V = "maximum_2m_temperature_in_the_last_24_hours"
def init_days(centre, system, year, month):
d = set()
for b in cons:
if (V in b["variable"] and centre in b["originating_centre"]
and system in b["system"] and year in b["year"]
and month in b["month"]):
d |= set(b["day"])
return sorted(d)
init_days("ncep", "2", "2010", "01") # ['01','06','11','16','21','26','31']
init_days("ncep", "2", "2010", "02") # ['05','10','15','20','25']
Hàng đợi CDS chỉ chạy một job mỗi lần cho mỗi tài khoản, nên 20 lần thăm dò mất khoảng 20 phút. Mỗi file chỉ vài KB.