O Projeto de Intercomparação do Modelo do Earth-2 (MIP) é uma estrutura de IA baseada em Python que permite que pesquisadores e cientistas climáticos explorem e experimentem o uso de modelos de IA para clima e clima. Ele fornece fluxos de trabalho de referência para entender como os modelos de IA capturam a física da atmosfera da Terra e como eles podem trabalhar com os modelos tradicionais de previsão do tempo numérico. Por exemplo, o repositório fornece uma interface uniforme para a inferência de execução usando pontos de verificação de modelo pré-treinado e pontuando a habilidade de tais modelos usando certas métricas padrão. Este repositório deve facilitar a comunidade climática e climática para criar uma boa linha de base de referência de eventos para testar os modelos contra e usar com uma variedade de fontes de dados.
O MIP do Terra-2 será instalável no PYPI após a liberação geral. Nesse meio tempo, pode -se instalar da fonte:
git clone [email protected]:NVIDIA/earth2mip.git
cd earth2mip && pip install .
Consulte a documentação da instalação para obter mais detalhes e outras opções.
O MIP EARTER-2 fornece um conjunto de exemplos que podem ser visualizados na página de documentação dos exemplos, que pode ser usada para começar com vários fluxos de trabalho. Esses exemplos podem ser baixados como notebooks Jupyer e scripts Python. Os scripts do Python de origem podem ser encontrados nas pastas de exemplos.
O MIP EARTER-2 fornece APIs de alto nível para a inferência de execução nos modelos de IA. Por exemplo, o seguinte pode ser usado para executar o clima de Pangu, usando um estado inicial do Store de Dados Climáticos (CDS):
python
>>> import datetime
>>> from earth2mip.networks import get_model
>>> from earth2mip.initial_conditions import cds
>>> from earth2mip.inference_ensemble import run_basic_inference
>>> time_loop = get_model( " e2mip://dlwp " , device= " cuda:0 " )
>>> data_source = cds.DataSource(time_loop.in_channel_names)
>>> ds = run_basic_inference(time_loop, n=10, data_source=data_source, time=datetime.datetime(2018, 1, 1))
>>> ds.chunk ()
< xarray.DataArray (time: 11, history: 1, channel: 69, lat: 721, lon: 1440) >
dask.array < xarray- < this-array > , shape=(11, 1, 69, 721, 1440), dtype=float32, chunksize=(11, 1, 69, 721, 1440), chunktype=numpy.ndarray >
Coordinates:
* lon (lon) float32 0.0 0.25 0.5 0.75 1.0 ... 359.0 359.2 359.5 359.8
* lat (lat) float32 90.0 89.75 89.5 89.25 ... -89.25 -89.5 -89.75 -90.0
* time (time) datetime64[ns] 2018-01-01 ... 2018-01-03T12:00:00
* channel (channel) < U5 ' z1000 ' ' z925 ' ' z850 ' ' z700 ' ... ' u10m ' ' v10m ' ' t2m '
Dimensions without coordinates: history
E você pode obter o ACC/RMSE assim:
>>> from earth2mip.inference_medium_range import score_deterministic
>>> import numpy as np
>>> scores = score_deterministic(time_loop,
data_source=data_source,
n=10,
initial_times=[datetime.datetime(2018, 1, 1)],
# fill in zeros for time-mean, will typically be grabbed from data.
time_mean=np.zeros((7, 721, 1440))
)
>>> scores
<xarray.Dataset>
Dimensions: (lead_time: 11, channel: 7, initial_time: 1)
Coordinates:
* lead_time (lead_time) timedelta64[ns] 0 days 00:00:00 ... 5 days 00:...
* channel (channel) <U5 't850' 'z1000' 'z700' ... 'z300' 'tcwv' 't2m'
Dimensions without coordinates: initial_time
Data variables:
acc (lead_time, channel) float64 1.0 1.0 1.0 ... 0.9686 0.9999
rmse (lead_time, channel) float64 0.0 2.469e-05 0.0 ... 7.07 2.998
initial_times (initial_time) datetime64[ns] 2018-01-01
>>> scores.rmse.sel(channel='z500')
<xarray.DataArray 'rmse' (lead_time: 11)>
array([ 0. , 150.83014446, 212.07880612, 304.98592282,
381.36510987, 453.31516952, 506.01464974, 537.11092269,
564.79603347, 557.22871627, 586.44691243])
Coordinates:
* lead_time (lead_time) timedelta64[ns] 0 days 00:00:00 ... 5 days 00:00:00
channel <U5 'z500'
Esses cadernos ilustram como usar com alguns modelos e isso pode servir como referência para trazer seu próprio ponto de verificação, desde que seja compatível. Pode haver trabalho adicional para torná-lo compatível com o Earth-2 MIP. O MIP do Terra-2 aproveita o zoológico do modelo no módulo para fornecer um conjunto de referência de modelos de linha de base. O objetivo é permitir que a comunidade aumente esta coleção de modelos, como mostrado na tabela abaixo.
EU IA | Modelo | Arquitetura | Tipo | Referência | Fonte | Tamanho |
---|---|---|---|---|---|---|
fcn | FourcastNet | Operador neural de Fourier adaptável | clima global | Arxiv | módulo | 300 MB |
DLWP | Previsão de aprendizado profundo | Codificador convolucional-decodificador | clima global | Agu | módulo | 50 MB |
Pangu | Pangu Weather (hierárquico 6 + 24 horas) | Transformador de visão | clima global | Natureza | ONNX | 2 GB |
pangu_6 | Modelo de 6 horas de clima pangu | Transformador de visão | clima global | Natureza | ONNX | 1 GB |
pangu_24 | Modelo de 24 horas de clima pangu | Transformador de visão | clima global | Natureza | ONNX | 1 GB |
fcnv2_sm | FourcastNet v2 | Operador neural de Harmonics Sféricos Fourier | clima global | Arxiv | módulo | 3,5 GB |
Graphcast | Graphcast, 37 níveis, 0,25 graus | Rede neural gráfica | clima global | Ciência | Github | 145 MB |
Graphcast_small | Graphcast, 13 níveis, 1 graus | Rede neural gráfica | clima global | Ciência | Github | 144 MB |
Graphcast_operational | Graphcast, 13 níveis, 0,25 graus | Rede neural gráfica | clima global | Ciência | Github | 144 MB |
precipitation_afno | Precipitação de quatrocastnet | Operador neural de Fourier adaptável | diagnóstico | Arxiv | módulo | 300 MB |
ClimateNet | Modelo de segmentação do climatenet | Rede neural convolucional | diagnóstico | GMD | módulo | 2MB |
* = em breve
Alguns modelos requerem dependências adicionais não instaladas por padrão. Consulte as instruções de instalação para obter detalhes.
Nota : Cada ponto de verificação do modelo pode ter sua própria licença exclusiva. Incentivamos os usuários a se familiarizarem com cada um a entender implicações para seu caso de uso específico.
Queremos integrar seu modelo ao placar para mostrar a comunidade! A melhor maneira de fazer isso é via módulo Nvidia. Você pode contribuir com seu modelo (tanto o código de treinamento quanto o ponto de verificação do modelo) e podemos garantir que ele seja mantido como parte do conjunto de referência.
O MIP EARTER-2 é uma colaboração de código aberto e seu sucesso está enraizado na contribuição da comunidade para promover o campo. Obrigado por contribuir para o projeto para que outras pessoas possam desenvolver sua contribuição. Para obter orientações sobre como fazer uma contribuição para o Earth-2 MIP, consulte as diretrizes contribuintes.
Este trabalho é inspirado para facilitar compromissos semelhantes entre as equipes aqui na NVIDIA - os especialistas em ML desenvolvendo novos modelos e os especialistas em domínio em ciência climática que avaliam a habilidade de tais modelos. Por exemplo, dados de entrada geralmente necessários, como constantes de normalização e valores de hiperparâmetro, não são embalados juntamente com os pesos do modelo. Todo modelo normalmente implementa uma interface ligeiramente diferente. As rotinas de pontuação são específicas para o modelo que está sendo pontuado e podem não ser consistentes entre os grupos.
O MIP do Terra-2 aborda esses desafios e preenche a lacuna entre os especialistas em domínio que geralmente estão avaliando os modelos de ML e os especialistas em ML que os produzem. Comparado a outros projetos neste espaço, o Earth-2 MIP se concentra na pontuação de modelos em voo. Ele possui APIs de Python adequadas para iteração rápida em um livro de Jupyter, CLIS para marcar modelos distribuídos por muitas GPUs e uma estrutura de plug -in flexível que permite que qualquer pessoa use seus próprios modelos ML. Mais importante ainda, o MIP da Terra-2 aspira a facilitar a exploração e a colaboração na comunidade de pesquisa climática para avaliar o potencial dos modelos de IA em simulações climáticas e climáticas.
Consulte a página de documentação para obter informações detalhadas sobre Earth-2 MIP, funcionalidade, APIs, etc.
O MIP EARTER-2 é fornecido sob a licença Apache 2.0, consulte Licença.txt para obter o texto completo da licença.