{"id":172245,"name":"OpenCastKit","description":"Open-source solutions of global data-driven high-resolution weather forecasting.","url":"https://github.com/hfailab/opencastkit","last_synced_at":"2026-05-24T18:00:30.702Z","repository":{"id":38110469,"uuid":"501622279","full_name":"HFAiLab/OpenCastKit","owner":"HFAiLab","description":"The open-source solutions of FourCastNet and GraphCast","archived":false,"fork":false,"pushed_at":"2023-04-18T02:57:00.000Z","size":3547,"stargazers_count":378,"open_issues_count":25,"forks_count":96,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-05-15T20:30:41.794Z","etag":null,"topics":["foucastnet","weather-forecast"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HFAiLab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-06-09T11:21:34.000Z","updated_at":"2026-04-22T08:20:23.000Z","dependencies_parsed_at":"2024-01-14T22:03:36.649Z","dependency_job_id":"9529e7d2-8c3b-4f04-a635-9dfe72b858c9","html_url":"https://github.com/HFAiLab/OpenCastKit","commit_stats":{"total_commits":15,"total_committers":1,"mean_commits":15.0,"dds":0.0,"last_synced_commit":"6e3f934533e1aeb6446058a19eb3057b1a304ad2"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/HFAiLab/OpenCastKit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HFAiLab%2FOpenCastKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HFAiLab%2FOpenCastKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HFAiLab%2FOpenCastKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HFAiLab%2FOpenCastKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HFAiLab","download_url":"https://codeload.github.com/HFAiLab/OpenCastKit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HFAiLab%2FOpenCastKit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33266621,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-20T15:12:43.734Z","status":"ssl_error","status_checked_at":"2026-05-20T15:12:42.300Z","response_time":356,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"HFAiLab","name":"High-Flyer AI","uuid":"90186689","kind":"organization","description":"幻方AI","email":null,"website":"https://www.high-flyer.cn/","location":"China","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/90186689?v=4","repositories_count":23,"last_synced_at":"2024-04-15T04:57:52.410Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/HFAiLab","funding_links":[],"total_stars":1029,"followers":355,"following":0,"created_at":"2022-11-15T21:08:22.030Z","updated_at":"2024-04-15T04:58:03.501Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HFAiLab","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HFAiLab/repositories"},"packages":[],"commits":{"id":1465346,"full_name":"hfailab/opencastkit","default_branch":"master","total_commits":15,"total_committers":1,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":15.0,"dds":0.0,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-05-22T17:01:16.389Z","last_synced_commit":"6e3f934533e1aeb6446058a19eb3057b1a304ad2","created_at":"2024-01-15T00:10:45.344Z","updated_at":"2026-05-22T17:01:16.346Z","committers":[{"name":"VachelHU","email":"vachelhu@qq.com","login":"VachelHU","count":15}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/hfailab%2Fopencastkit/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-24T00:00:21.472Z","repositories_count":6240463,"commits_count":883967098,"contributors_count":34907752,"owners_count":1157001,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"hfailab/opencastkit","html_url":"https://github.com/hfailab/opencastkit","last_synced_at":"2026-04-07T19:00:28.050Z","status":"error","issues_count":27,"pull_requests_count":1,"avg_time_to_close_issue":4577.0,"avg_time_to_close_pull_request":8.0,"issues_closed_count":3,"pull_requests_closed_count":1,"pull_request_authors_count":1,"issue_authors_count":20,"avg_comments_per_issue":1.6296296296296295,"avg_comments_per_pull_request":0.0,"merged_pull_requests_count":1,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2024-01-15T00:10:49.875Z","updated_at":"2026-04-07T19:00:28.050Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/hfailab%2Fopencastkit","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/hfailab%2Fopencastkit/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":24},"pull_request_author_associations_count":{"CONTRIBUTOR":1},"issue_authors":{"lk1983823":2,"zhrli":2,"liuweishuo":2,"chunniunai220ml":2,"morestart":2,"oubahe":2,"Afshinshafei":1,"ChongjianGE":1,"HaiXiang-Zhao":1,"yingtaoluo":1,"Vsooong":1,"Jeffrey-JDong":1,"CXL-edu":1,"AlexJJJChen":1,"vrcsds":1,"jialiangZ":1,"jafri":1,"Aquila96":1},"pull_request_authors":{"VachelHU":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-24T00:00:44.577Z","repositories_count":14690809,"issues_count":34006960,"pull_requests_count":111397159,"authors_count":11272946,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[],"active_maintainers":[]},"events":{"total":{"ForkEvent":16,"WatchEvent":54},"last_year":{"ForkEvent":2,"WatchEvent":15}},"keywords":["foucastnet","weather-forecast"],"dependencies":[],"score":5.998936561946683,"created_at":"2024-01-15T00:10:34.165Z","updated_at":"2026-05-24T18:00:30.704Z","avatar_url":"https://github.com/HFAiLab.png","language":"Python","category":"Atmosphere","sub_category":"Meteorological Observation and Forecast","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# OpenCastKit: an open-source solutions of global data-driven high-resolution weather forecasting\n\n简体中文 | [English](README_en.md)\n\n本项目是由幻方AI团队复现优化，并开源的全球AI气象预报模型工具库。基于 [FourCastNet](https://arxiv.org/abs/2202.11214) 和 [GraphCast](https://arxiv.org/abs/2212.12794) 的论文，我们构建了一个新的全球AI气象预报项目——**OpenCastKit**，它能够与欧洲中期天气预报中心（ECMWF）的传统物理模型——高分辨率综合预测系统（IFS），进行直接比较。\n\n我们将基于1979年1月到2022年12月的ERA5数据训练出来的模型参数开源到 [Hugging Face 仓库](https://huggingface.co/hf-ai/OpenCastKit)中，并上线了一个每日更新的 [HF-Earth](https://www.high-flyer.cn/hf-earth/)，展示模型的预测效果。\n\n下面是一些预测案例：\n\n![台风路径预测与真实路径比较](./img/wind_small.gif)\n\n![汽水浓度预测与真实情况比较](./img/precipitation_small.gif)\n\n\n## 依赖\n\n- [hfai](https://doc.hfai.high-flyer.cn/index.html) \u003e= 7.9.5\n- torch \u003e=1.8\n\n\n## 训练\n原始数据来自欧洲中期天气预报中心（ECMWF）提供的一个公开可用的综合数据集 [ERA5](https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5) ，需要通过 `data_factory/convert_ear5_hourly.py` 脚本提出数据特征，转化为[高性能训练样本格式 FFRecord](https://www.high-flyer.cn/blog/ffrecord/) 下的样本数据。\n\n\n### 训练 FourCastNet\n\n本地运行：\n```shell\n   python train_fourcastnet.py --pretrain-epochs 100 --fintune-epochs 40 --batch-size 4\n```\n\n也可以提交任务至幻方萤火集群，使用96张A100进行数据并行训练\n```shell\n   hfai python train_fourcastnet.py --pretrain-epochs 100 --fintune-epochs 40 --batch-size 4 -- -n 12 --name train_fourcastnet\n```\n\n### 训练 GraphCast\n\n本地运行：\n```shell\n   python train_graphcast.py --epochs 200 --batch-size 2\n```\n\n也可以提交任务至幻方萤火集群，使用256张A100进行流水线并行训练\n```shell\n   hfai python train_graphcast.py --epochs 200 --batch-size 2 -- -n 32 --name train_graphcast\n```\n\n\n## 引用\n\n```bibtex\n@article{pathak2022fourcastnet,\n  title={Fourcastnet: A global data-driven high-resolution weather model using adaptive fourier neural operators},\n  author={Pathak, Jaideep and Subramanian, Shashank and Harrington, Peter and Raja, Sanjeev and Chattopadhyay, Ashesh and Mardani, Morteza and Kurth, Thorsten and Hall, David and Li, Zongyi and Azizzadenesheli, Kamyar and others},\n  journal={arXiv preprint arXiv:2202.11214},\n  year={2022}\n}\n```\n\n```bibtex\n@article{remi2022graphcast,\n  title={GraphCast: Learning skillful medium-range global weather forecasting},\n  author={Remi Lam, Alvaro Sanchez-Gonzalez, Matthew Willson, Peter Wirnsberger, Meire Fortunato, Alexander Pritzel, Suman Ravuri, Timo Ewalds, Ferran Alet, Zach Eaton-Rosen, Weihua Hu, Alexander Merose, Stephan Hoyer, George Holland, Jacklynn Stott, Oriol Vinyals, Shakir Mohamed, Peter Battaglia},\n  journal={arXiv preprint arXiv:2212.12794},\n  year={2022}\n}\n```","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/172245","html_url":"https://ost.ecosyste.ms/projects/172245"}