[{"data":1,"prerenderedAt":439},["ShallowReactive",2],{"content-query-3rkkGlIJLW":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"cover":11,"type":12,"state":13,"body":14,"_type":433,"_id":434,"_source":435,"_file":436,"_stem":437,"_extension":438},"/activities/zh/2897","zh",false,"","直播预告 | 1分钟预测10天全球天气！MindSpore Earth 带你玩转登顶Science的天气预报大模型","活动预告：12月4日晚19:00-20:00，昇思MindSpore AI4S工程师带你看天气预报大模型，全面讲解GraphCast并介绍昇思MindSpore Earth地球科学套件的实现，欢迎各位同学参加！","2023-12-01","https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2023/12/08/e12555328b6446cf8028a7ca5267e981.png","activities",1,{"type":15,"children":16,"toc":430},"root",[17,25,30,35,44,49,57,62,67,76,81,86,93,98,105,113,121,126,131,143,151,156,166,171,179,184,192,197,205,213,218,225,233,241,246,254,259,279,287,292,299,306,311,318,323,330,335,340,345,350,355,364,369,378,385,390,400,410,420],{"type":18,"tag":19,"props":20,"children":22},"element","h1",{"id":21},"直播预告-1分钟预测10天全球天气mindspore-earth-带你玩转登顶science的天气预报大模型",[23],{"type":24,"value":8},"text",{"type":18,"tag":26,"props":27,"children":28},"p",{},[29],{"type":24,"value":9},{"type":18,"tag":26,"props":31,"children":32},{},[33],{"type":24,"value":34},"GraphCast是DeepMind提出的基于图神经网络的AI中期天气预报模型，提供了全球关键气象要素的高分辨率中期预报，预报精度超越目前最先进的数值预报模式。相关研究论文以“Learning skillful medium-range global weather forecasting”为题，已发表在权威科学期刊 Science 上。昇思MindSpore Earth完整实现了GraphCast高分辨率训练与推理复现，并已开源。",{"type":18,"tag":26,"props":36,"children":37},{},[38],{"type":18,"tag":39,"props":40,"children":41},"strong",{},[42],{"type":24,"value":43},"背景介绍",{"type":18,"tag":26,"props":45,"children":46},{},[47],{"type":24,"value":48},"天气现象与人类的生产生活、社会经济等方方面面都密切相关，准确的天气预报能够在灾害天气事件中减轻影响、甚至避免经济损失，还能创造持续不断地财政收入，例如能源、农业、交通和娱乐行业。从小的方面来说，每天人们在计划自己的行程时都会考虑接下来的天气，当这些决定涉及预计未来约三至十天的天气时，人们依靠“中期”天气预报进行判断。在中期天气预报领域，欧洲的ECMWF的综合预报系统（IFS）是目前最先进的数值预报模式，但数值模式需要大量超级计算机的投入，是一个耗时且昂贵的过程。而采用图神经网络（GNN）机器学习架构的GraphCast模型，仅在一分钟内便可生成10天的预报，其运行成本可节省1000倍。",{"type":18,"tag":26,"props":50,"children":51},{},[52],{"type":18,"tag":39,"props":53,"children":54},{},[55],{"type":24,"value":56},"GraphCast",{"type":18,"tag":26,"props":58,"children":59},{},[60],{"type":24,"value":61},"GraphCast使用GNN作为骨干网络，基于“Encode-Process-Decode”的网络结构专为复杂的物理动力学而设计，使用消息传递机制，允许在任何范围内进行任意空间交互模式。它提供了关键全球天气指标的中期预报，分辨率为0.25°，相当于赤道附近约25kmx25km的空间分辨率。在每一个网格点上，该模型都考虑了地表的五个变量，如温度、压力、湿度、经向风速和纬向风速，以及37个不同高度的大气中的六个变量。",{"type":18,"tag":26,"props":63,"children":64},{},[65],{"type":24,"value":66},"GraphCast模型包括编码器层、处理器层和解码器层。编码器将历史时刻气象要素的纬度-经度输入网格映射到多尺度内部网格表示；处理器在多网格表示上执行多轮消息传递；解码器将多网格表示映射回纬度-经度网格，同时输出预测结果。",{"type":18,"tag":26,"props":68,"children":69},{},[70],{"type":18,"tag":71,"props":72,"children":75},"img",{"alt":73,"src":74},"image.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/e64/154/b38/90a1d5d431e64154b387b3660e356ff5.20231208061240.41795486099319478606226059349364:50541207063347:2400:714C11A4D54D2BEF887FC3647E689B8AFE3B4EBE4C06FCF205FDCB4FB6E28802.png",[],{"type":18,"tag":26,"props":77,"children":78},{},[79],{"type":24,"value":80},"Figure 1 GraphCast模型架构",{"type":18,"tag":26,"props":82,"children":83},{},[84],{"type":24,"value":85},"GraphCast模型通过当前时间状态和上一个时间状态预测下一步天气状态。形式如下：",{"type":18,"tag":26,"props":87,"children":88},{},[89],{"type":18,"tag":71,"props":90,"children":92},{"alt":73,"src":91},"https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/e64/154/b38/90a1d5d431e64154b387b3660e356ff5.20231208061259.55322166398064189251771282124660:50541207063347:2400:6C2A35353661DAA5E188EA5634735F11A6E2D5AB592AE7F432F506E148EC0F10.png",[],{"type":18,"tag":26,"props":94,"children":95},{},[96],{"type":24,"value":97},"针对多步预测精度衰减，采用rollout多步迭代训练，降低模型误差累积，形式如下：",{"type":18,"tag":26,"props":99,"children":100},{},[101],{"type":18,"tag":71,"props":102,"children":104},{"alt":73,"src":103},"https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/e64/154/b38/90a1d5d431e64154b387b3660e356ff5.20231208061316.08582055803452011677561473730152:50541207063347:2400:74415B3F1048508FA35DD325617B147DB676CB7540DFD1B7ADD8CE1B022307B6.png",[],{"type":18,"tag":26,"props":106,"children":107},{},[108],{"type":18,"tag":39,"props":109,"children":110},{},[111],{"type":24,"value":112},"MindSpore Earth实践",{"type":18,"tag":26,"props":114,"children":115},{},[116],{"type":18,"tag":39,"props":117,"children":118},{},[119],{"type":24,"value":120},"1.数据集",{"type":18,"tag":26,"props":122,"children":123},{},[124],{"type":24,"value":125},"ERA5是ECMWF（欧洲中期天气预报中心）发布的全球气候第五代大气再分析数据集，提供了大量大气、陆地和海洋气候变量的每小时估计值。我们在ERA5的一个子集上训练我们的模型，输入分辨率为0.25°。我们选取了13个气压层（即50hPa、100hPa、150hPa、200hPa、250hPa、300hPa、400hPa、500hPa、600hPa、700hPa、850hPa、925hPa和1000hPa）及地表变量作为输入特征。同时，MindSpore Earth开源了正二十面体网格生成模块，用户可根据需要生成不同尺度和分辨率的多层级网格。多层级网格是一个空间均质的图，最高分辨率可通过 6 次迭代正二十面体（包含12个节点，20个面和30条边）形成，每次迭代会对网格进行精细化处理，将单个三角形划分为 4 个较小的三角形，并将其节点投影至球体上。",{"type":18,"tag":26,"props":127,"children":128},{},[129],{"type":24,"value":130},"为便于用户快速实践MindSpore Earth开源的GraphCast案例，我们提供了部分ERA5 1.4°分辨率的数据，用户可从下面链接中下载。",{"type":18,"tag":26,"props":132,"children":133},{},[134],{"type":18,"tag":135,"props":136,"children":140},"a",{"href":137,"rel":138},"https://download.mindspore.cn/mindscience/mindearth/dataset/WeatherBench%5C_1.4%5C_69/",[139],"nofollow",[141],{"type":24,"value":142},"https://download.mindspore.cn/mindscience/mindearth/dataset/WeatherBench\\_1.4\\_69/",{"type":18,"tag":26,"props":144,"children":145},{},[146],{"type":18,"tag":39,"props":147,"children":148},{},[149],{"type":24,"value":150},"2.模型实现",{"type":18,"tag":26,"props":152,"children":153},{},[154],{"type":24,"value":155},"MindSpore Earth提供 GraphCastNet网络接口，便于快速创建模型。",{"type":18,"tag":157,"props":158,"children":160},"pre",{"code":159},"model = GraphCastNet(vg_in_channels=data_params.get('feature_dims') * data_params.get('t_in'),\n                   vg_out_channels=data_params.get('feature_dims'),\n                   vm_in_channels=model_params.get('vm_in_channels'),\n                   em_in_channels=model_params.get('em_in_channels'),\n                   eg2m_in_channels=model_params.get('eg2m_in_channels'),\n                   em2g_in_channels=model_params.get('em2g_in_channels'),\n                   latent_dims=model_params.get('latent_dims'),\n                   processing_steps=model_params.get('processing_steps'),\n                …\n                recompute=model_params.get('recompute', False))\n",[161],{"type":18,"tag":162,"props":163,"children":164},"code",{"__ignoreMap":7},[165],{"type":24,"value":159},{"type":18,"tag":26,"props":167,"children":168},{},[169],{"type":24,"value":170},"在编码器层中，所有输入特征都使用多层感知器（MLP）嵌入到隐层空间中，将原始经纬度网格映射到多层级网格。",{"type":18,"tag":157,"props":172,"children":174},{"code":173},"class Encoder(nn.Cell):\n    def __init__(self, vg_in_channels, vm_in_channels, em_in_channels, eg2m_in_channels…):\n        super(Encoder, self).__init__()\n        self.feature_embedder = Embedder(vg_in_channels, …)\n       self.g2m_gnn = G2MGnn(node_in_channels=latent_dims, …)\n\n    def construct(self, grid_node_feats, …):\n        vg, vm, em, eg2m, em2g = self.feature_embedder(grid_node_feats, …)\n        eg2m, vm, vg = self.g2m_gnn(eg2m, vm, vg)\n        return vg, vm, em, eg2m, em2g\n",[175],{"type":18,"tag":162,"props":176,"children":177},{"__ignoreMap":7},[178],{"type":24,"value":173},{"type":18,"tag":26,"props":180,"children":181},{},[182],{"type":24,"value":183},"在处理器中，一个16层深度GNN，在多网格上执行可学习的信息传递，通过长程边使信息在空间有效传播。",{"type":18,"tag":157,"props":185,"children":187},{"code":186},"class Processor (nn.Cell):\n    def __init__(self, node_in_channels, node_out_channels, edge_in_channels, …):\n        super(Processor, self).__init__()\n        self.processing_steps = processing_steps\n        self.cell_list = nn.SequentialCell()\n        for _ in range(self.processing_steps):\n            self.cell_list.append(InteractionLayer(node_in_channels, …))\n\n    def construct(self, node_feats, edge_feats):\n        node_feats, edge_feats = self.cell_list((node_feats, edge_feats))\n        return node_feats, edge_feats\n",[188],{"type":18,"tag":162,"props":189,"children":190},{"__ignoreMap":7},[191],{"type":24,"value":186},{"type":18,"tag":26,"props":193,"children":194},{},[195],{"type":24,"value":196},"在解码器中，多层级网格信息被映射回原始经纬度网格，并输出预测结果。",{"type":18,"tag":157,"props":198,"children":200},{"code":199},"class Decoder (nn.Cell):\n    def __init__(self, node_in_channels, node_out_channels, edge_in_channels, …):\n        super(Decoder, self).__init__()\n        self.m2g_gnn = M2GGnn(node_in_channels, …)\n        self.node_fn = MLPNet(in_channels=node_in_channels, …)\n\n    def construct(self, m2g_edge_feats, mesh_node_feats, grid_node_feats):\n        m2g_edge_feats, mesh_node_feats, grid_node_feats = self.m2g_gnn(m2g_edge_feats, …)\n        return self.node_fn(grid_node_feats)\n",[201],{"type":18,"tag":162,"props":202,"children":203},{"__ignoreMap":7},[204],{"type":24,"value":199},{"type":18,"tag":26,"props":206,"children":207},{},[208],{"type":18,"tag":39,"props":209,"children":210},{},[211],{"type":24,"value":212},"3.损失函数",{"type":18,"tag":26,"props":214,"children":215},{},[216],{"type":24,"value":217},"通过自定义均方差计算模型训练的loss：",{"type":18,"tag":26,"props":219,"children":220},{},[221],{"type":18,"tag":71,"props":222,"children":224},{"alt":73,"src":223},"https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/e64/154/b38/90a1d5d431e64154b387b3660e356ff5.20231208061514.81123682027607863640191567957236:50541207063347:2400:BD9FC6EB57F4906972F71C3502B6BBA9898FDF346A26506F2702DFF6A8DCC445.png",[],{"type":18,"tag":157,"props":226,"children":228},{"code":227},"class CustomWithLossCell(nn.Cell):\n    def __init__(self, backbone, loss_fn, data_params):\n        super(CustomWithLossCell, self).__init__(auto_prefix=False)\n        self._backbone = backbone\n        …\n\n    def construct(self, data, labels):\n        pred_list = _forecast_multi_step(data, self._backbone, self.feature_dims, …)\n        loss = 0\n        for t in range(self.t_out_train):\n            pred = pred_list[t]\n            if self.t_out_train == 1:\n                label = ops.squeeze(labels)\n            else:\n                label = ops.squeeze(labels[:, t])\n            loss_step = self._loss_fn(label, pred)\n            loss += loss_step\n        loss = loss / self.t_out_train\n        return loss\n",[229],{"type":18,"tag":162,"props":230,"children":231},{"__ignoreMap":7},[232],{"type":24,"value":227},{"type":18,"tag":26,"props":234,"children":235},{},[236],{"type":18,"tag":39,"props":237,"children":238},{},[239],{"type":24,"value":240},"4.模型训练",{"type":18,"tag":26,"props":242,"children":243},{},[244],{"type":24,"value":245},"基于昇思MindSpore提供的Model接口，即可快速开展模型的训练。同时，可通过重写get_callback函数，在训练过程中对模型进行推理评价。",{"type":18,"tag":157,"props":247,"children":249},{"code":248},"class GraphCastTrainer(Trainer):\n    def __init__(self, config, model, loss_fn, logger):\n        super().__init__(config, model, loss_fn, logger)\n        self.train_dataset, self.valid_dataset = self.get_dataset()\n        self.pred_cb = self.get_callback()\n        self.solver = self.get_solver()\n\n    def get_solver(self):\n        loss_scale = DynamicLossScaleManager()\n        solver = Model(network=self.loss_fn,\n                     optimizer=self.optimizer,\n                     loss_scale_manager=loss_scale,\n                     amp_level=self.train_params.get('amp_level', 'O2'))\n        return solver\n\n    def get_callback(self):\n        pred_cb = EvaluateCallBack(self.model, self.valid_dataset, self.config, self.logger)\n        return pred_cb\n",[250],{"type":18,"tag":162,"props":251,"children":252},{"__ignoreMap":7},[253],{"type":24,"value":248},{"type":18,"tag":26,"props":255,"children":256},{},[257],{"type":24,"value":258},"若采用高分辨率网格（0.25°）、精细化多层级网格(M6：包含 40,962个节点， 81920个面)， GraphCast在训练中将需要大量内存。MindSpore Earth使用重计算、混合精度、异构存储等方式实现内存优化，从而在昇腾上实现上述输入的训练：",{"type":18,"tag":260,"props":261,"children":262},"ul",{},[263,269,274],{"type":18,"tag":264,"props":265,"children":266},"li",{},[267],{"type":24,"value":268},"重计算：MindSpore在计算时，可以不保存正向算子的计算结果，让这些内存可以被复用，然后在计算反向算子时，如果需要正向的结果，再重新计算正向算子，从而降低峰值。",{"type":18,"tag":264,"props":270,"children":271},{},[272],{"type":24,"value":273},"混合精度：在训练时，对神经网络不同的运算采用不同的数值精度的运算策略。在神经网络运算中，部分运算对数值精度不敏感，此时使用较低精度其所占用内存也会相应省，还可以达到明显的加速效果。",{"type":18,"tag":264,"props":275,"children":276},{},[277],{"type":24,"value":278},"异构存储：在训练过程中，将暂时不需要参与计算的参数或中间结果拷贝至Host侧内存，甚至硬盘存储，在需要数据参与计算时，再将其拷贝恢复至设备侧。可以提升相同硬件设备能够训练的模型规模。",{"type":18,"tag":26,"props":280,"children":281},{},[282],{"type":18,"tag":39,"props":283,"children":284},{},[285],{"type":24,"value":286},"5.模型评估",{"type":18,"tag":26,"props":288,"children":289},{},[290],{"type":24,"value":291},"我们在不同规模数据集（4年、16年）上进行训练，将测试集上的预报结果同欧洲中期天气预报中心（ECMWF）的高分辨率综合预测系统（IFS）模型进行对比。对于关键气象指标Z500, T850, T2m和U10，MindSpore Earth在16年数据集上训练的GraphCast模型，预报精度已超过IFS。",{"type":18,"tag":26,"props":293,"children":294},{},[295],{"type":18,"tag":71,"props":296,"children":298},{"alt":73,"src":297},"https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/e64/154/b38/90a1d5d431e64154b387b3660e356ff5.20231208061607.66108079415930331831304765542624:50541207063347:2400:5DC243BF7AF3FCA8850D57FA300514DD3C1C29C2695457B76537869F3A3B213B.png",[],{"type":18,"tag":26,"props":300,"children":301},{},[302],{"type":18,"tag":71,"props":303,"children":305},{"alt":73,"src":304},"https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/e64/154/b38/90a1d5d431e64154b387b3660e356ff5.20231208061615.32555038801844427390131055463734:50541207063347:2400:9B5D1AEE8991BC0032D3F82CDC9E8F7889141FF00C953972D86FA7D9A5784588.png",[],{"type":18,"tag":26,"props":307,"children":308},{},[309],{"type":24,"value":310},"训练完成后，用户可加载训练存储的checkpoint，使用测试数据，验证模型预测结果的误差。",{"type":18,"tag":26,"props":312,"children":313},{},[314],{"type":18,"tag":71,"props":315,"children":317},{"alt":73,"src":316},"https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/e64/154/b38/90a1d5d431e64154b387b3660e356ff5.20231208061630.56904245563501833749055428204881:50541207063347:2400:388DB6EDC41F72844F9168FAD8466AF9CFC3E5B95F392145208ECCFFC67C765A.png",[],{"type":18,"tag":26,"props":319,"children":320},{},[321],{"type":24,"value":322},"此外，MindSpore Earth内还提供了风场可视化接口，方便用户直观地查看风场随时间的变化效果。",{"type":18,"tag":26,"props":324,"children":325},{},[326],{"type":18,"tag":71,"props":327,"children":329},{"alt":73,"src":328},"https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/e64/154/b38/90a1d5d431e64154b387b3660e356ff5.20231208061648.13791344904201709241002477477958:50541207063347:2400:12258046B791ADCC77FF4DD46B627542D620E1FA8DA6670A76D1EED4DC34DBA4.png",[],{"type":18,"tag":26,"props":331,"children":332},{},[333],{"type":24,"value":334},"论文标题：",{"type":18,"tag":26,"props":336,"children":337},{},[338],{"type":24,"value":339},"Learning skillful medium-range global weather forecasting",{"type":18,"tag":26,"props":341,"children":342},{},[343],{"type":24,"value":344},"论文来源：",{"type":18,"tag":26,"props":346,"children":347},{},[348],{"type":24,"value":349},"Science",{"type":18,"tag":26,"props":351,"children":352},{},[353],{"type":24,"value":354},"论文链接：",{"type":18,"tag":26,"props":356,"children":357},{},[358],{"type":18,"tag":135,"props":359,"children":362},{"href":360,"rel":361},"https://www.science.org/doi/10.1126/science.adi2336",[139],[363],{"type":24,"value":360},{"type":18,"tag":26,"props":365,"children":366},{},[367],{"type":24,"value":368},"代码链接：",{"type":18,"tag":26,"props":370,"children":371},{},[372],{"type":18,"tag":135,"props":373,"children":376},{"href":374,"rel":375},"https://gitee.com/mindspore/mindscience/tree/master/MindEarth/applications/medium-range/graphcast",[139],[377],{"type":24,"value":374},{"type":18,"tag":26,"props":379,"children":380},{},[381],{"type":18,"tag":71,"props":382,"children":384},{"alt":73,"src":383},"https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/e64/154/b38/90a1d5d431e64154b387b3660e356ff5.20231208061715.00773657872385630011012816605448:50541207063347:2400:9B246D3347621EFFAA474246B7FD423F94560E1A389305C02CA789B32918BA2E.png",[],{"type":18,"tag":26,"props":386,"children":387},{},[388],{"type":24,"value":389},"往期回顾",{"type":18,"tag":26,"props":391,"children":392},{},[393],{"type":18,"tag":135,"props":394,"children":397},{"href":395,"rel":396},"http://mp.weixin.qq.com/s?__biz=MzkxMTM2MjMzNg==&mid=2247611994&idx=2&sn=c5304b19c6a2eb15626f5fd798ee2bb6&chksm=c11e2615f669af0307acfe256dfe4b203d8cfbaf8c247f4422dfe7a9c208dffb63da576c689c&scene=21#wechat_redirect",[139],[398],{"type":24,"value":399},"【直播预告】11月27日MindSpore Flow&Earth SIG分享会",{"type":18,"tag":26,"props":401,"children":402},{},[403],{"type":18,"tag":135,"props":404,"children":407},{"href":405,"rel":406},"http://mp.weixin.qq.com/s?__biz=MzkxMTM2MjMzNg==&mid=2247610653&idx=3&sn=0a626f601f0f76b2ad8acd52da41f626&chksm=c11e2152f669a844b92f2d25be44e35eeec04a169db720421befcfa946030883499b7e2601cc&scene=21#wechat_redirect",[139],[408],{"type":24,"value":409},"【直播预告】10月30日MindSpore Flow&Earth SIG分享会",{"type":18,"tag":26,"props":411,"children":412},{},[413],{"type":18,"tag":135,"props":414,"children":417},{"href":415,"rel":416},"http://mp.weixin.qq.com/s?__biz=MzkxMTM2MjMzNg==&mid=2247609036&idx=2&sn=dbb07460de6356454fa64cdfa35fe551&chksm=c11e3a83f669b39586087e31f81a6daa503d40283d8afdcfbee62284286f5c1c02fa60ba1c32&scene=21#wechat_redirect",[139],[418],{"type":24,"value":419},"【直播预告】9月27日MindSpore Flow SIG分享会",{"type":18,"tag":26,"props":421,"children":422},{},[423],{"type":18,"tag":135,"props":424,"children":427},{"href":425,"rel":426},"http://mp.weixin.qq.com/s?__biz=MzkxMTM2MjMzNg==&mid=2247604416&idx=2&sn=8c134de6f8dd86671512470441626a3c&chksm=c11e488ff669c199150dc7a5cba02cfb997619509f105eb71d2f70306d784e30013901da8b85&scene=21#wechat_redirect",[139],[428],{"type":24,"value":429},"【直播预告】8月11日MindSpore Flow SIG分享会——基于深度学习的非线性流固耦合系统降价建模方法",{"title":7,"searchDepth":431,"depth":431,"links":432},4,[],"markdown","content:activities:zh:2897.md","content","activities/zh/2897.md","activities/zh/2897","md",1776506021107]