Проект Model-2 Model Inter-сравнения (MIP)-это структура искусственного интеллекта на основе Python, которая позволяет исследователям климата и ученым исследовать и экспериментировать с использованием моделей ИИ для погоды и климата. Он предоставляет эталонные рабочие процессы для понимания того, как модели ИИ захватывают физику атмосферы Земли и как они могут работать с традиционными моделями прогнозирования численной погоды. Например, Repo предоставляет равномерный интерфейс для выполнения вывода с использованием предварительно обученных контрольных точек модели и оценки навыков таких моделей с использованием определенных стандартных метрик. Этот репозиторий предназначен для того, чтобы облегчить сообществу погоды и климата придумать хорошую справочную базовую линию событий для проверки моделей и использования с различными источниками данных.
Земля-2 MIP будет установлен на PYPI при общем выпуске. В то же время можно установить из источника:
git clone [email protected]:NVIDIA/earth2mip.git
cd earth2mip && pip install .
Смотрите документацию по установке для получения более подробной информации и других вариантов.
Земля-2 MIP предоставляет набор примеров, которые можно просматривать на странице документации примеров, которые можно использовать для начала работы с различными рабочими процессами. Эти примеры могут быть загружены как ноутбуками Jupyer, так и сценариями Python. Сценарии источника Python можно найти в папках примеров.
Земля-2 MIP обеспечивает API высокого уровня для вывода с моделями искусственного интеллекта. Например, следующее можно использовать для запуска погоды Pangu, используя начальное состояние из хранилища климатических данных (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
И вы можете получить ACC/RMSE так:
>>> 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'
Эти записные книжки иллюстрируют, как можно использовать с несколькими моделями, и это может служить ссылкой, чтобы привлечь ваш собственный контрольно-пропускной пункт до тех пор, пока он совместим. Может быть дополнительная работа, чтобы сделать его совместимым с MIP Earth-2. Земля-2 MIP использует модельный зоопарк в модуле, чтобы обеспечить эталонный набор моделей базовой линии. Цель состоит в том, чтобы дать возможность сообществу развивать эту коллекцию моделей, как показано в таблице ниже.
ИДЕНТИФИКАТОР | Модель | Архитектура | Тип | Ссылка | Источник | Размер |
---|---|---|---|---|---|---|
FCN | Fourcastnet | Адаптивный нейронный оператор Фурье | Глобальная погода | Arxiv | модуль | 300 МБ |
DLWP | Прогноз погоды глубокого обучения | Сверточный энкодер-декодер | Глобальная погода | Агу | модуль | 50 МБ |
Пангу | Погода пангу (иерархическая 6 + 24 часа) | Vision Transformer | Глобальная погода | Природа | Onnx | 2 ГБ |
pangu_6 | Pangue Weather 6HR модель | Vision Transformer | Глобальная погода | Природа | Onnx | 1 ГБ |
pangu_24 | Pangue Weather 24 -часовая модель | Vision Transformer | Глобальная погода | Природа | Onnx | 1 ГБ |
fcnv2_sm | Fourcastnet v2 | Сферический гармоник Фурье Нейронный оператор | Глобальная погода | Arxiv | модуль | 3,5 ГБ |
График | График, 37 уровней, 0,25 град | График нейронной сети | Глобальная погода | Наука | GitHub | 145 МБ |
graphcast_small | График, 13 уровней, 1 град | График нейронной сети | Глобальная погода | Наука | GitHub | 144 МБ |
graphcast_operational | График, 13 уровней, 0,25 град | График нейронной сети | Глобальная погода | Наука | GitHub | 144 МБ |
upipation_afno | FourcastNet осадки | Адаптивный нейронный оператор Фурье | Диагностика | Arxiv | модуль | 300 МБ |
Климатенет | Модель сегментации климата | Сверточная нейронная сеть | Диагностика | GMD | модуль | 2 МБ |
* = скоро появится
Некоторые модели требуют дополнительных зависимостей, не установленных по умолчанию. Обратитесь к инструкциям по установке для получения подробной информации.
Примечание . Каждая модель контрольная точка может иметь свою уникальную лицензию. Мы призываем пользователей ознакомиться с каждым, чтобы понять последствия для их конкретного случая использования.
Мы хотим интегрировать вашу модель в табло, чтобы показать сообщество! Лучший способ сделать это - через модуль NVIDIA. Вы можете внести свой вклад в свою модель (как код обучения, так и модель контрольной точки), и мы можем убедиться, что она поддерживается как часть эталонного набора.
Земля-2 MIP-это сотрудничество с открытым исходным кодом, и ее успех основан на вкладе сообщества в дальнейшее поле. Спасибо за участие в проекте, чтобы другие могли опираться на ваш вклад. Для внесения вклада в MIP Земли-2, пожалуйста, обратитесь к рекомендациям.
Эта работа вдохновлена на то, чтобы облегчить сходные взаимодействия между командами здесь, в NVIDIA - эксперты ML, разрабатывающие новые модели и эксперты по домену в области климатической науки, оценивающие навыки таких моделей. Например, часто необходимые входные данные, такие как константы нормализации и значения гиперпараметра, не упакованы вместе с весами модели. Каждая модель обычно реализует немного другой интерфейс. Рутины оценки являются специфичными для оценки модели и могут быть не согласованными в разных группах.
Земля-2 MIP решает эти проблемы и мосты в рамках разрыва между экспертами домена, которые чаще всего оценивают модели ML, и экспертами ML, производящими их. По сравнению с другими проектами в этом пространстве MIP Earth-2 фокусируется на оценке моделей на лету. Он имеет Python APIS, подходящие для быстрой итерации в книге Юпитера, CLIS для моделей забивания, распределенных по многим графическим процессорам, и гибкая структура плагина, которая позволяет любому использовать свои собственные модели ML. Что еще более важно, MIP Earth-2 стремится облегчить разведку и сотрудничество в сообществе исследований климата, чтобы оценить потенциал моделей искусственного интеллекта в климатическом и погодном моделировании.
Пожалуйста, смотрите страницу документации для получения подробной информации о MIP Земли-2, функциональности, API и т. Д.
Земля-2 MIP предоставляется в соответствии с лицензией Apache 2.0, см. License.txt для полного текста лицензии.