NCAR:水文模型

我是谁?

我是 Joe Hamman,我是 国家大气研究中心 计算水文组的一名项目科学家。我是 Xarray 项目的核心开发者,也是 Pangeo 项目的贡献成员。我的研究方向涵盖气候变化、水文学和水资源工程领域。

我正尝试解决什么问题?

气候变化将对水文循环产生广泛影响。我们之所以知道这一点,是因为过去二十年进行的多项研究表明,气候变化对受控和自然水文系统的一阶影响在水资源可用性、干旱、野火、极端降水和洪水等方面会是什么样子。然而,对于我们用来估计这些变化的工具选择所带来的特征性不确定性,我们并没有很好的理解。

在水文气候学领域,我们使用的工具是气候和水文系统的数值模型。这些模型可以通过多种方式构建,并且通常很难理解我们在构建模型时做出的特定选择如何影响我们可以从中得出的推论(例如,气候变化对洪水频率的影响)。我们正在研究暴露和约束水资源应用中气候影响建模范式的方法不确定性的方法。这包括开发和分析大量气候预测集合,并审问这些集合以了解特定的不确定性来源。

Dask 如何提供帮助?

气候和水文科学严重依赖存储在 HDF5 和 NetCDF 等格式的数据。我们通常使用 Xarray 作为这些格式的接口和友好的数据模型。在底层,Xarray 使用 NumPy 或 Dask 数组。这使得我们可以将通常使用 NumPy 在内存中进行的相同的 Xarray 计算,通过 Dask 扩展到更大的任务。

在我自己的研究中,我使用 Dask 和 Xarray 作为处理大型数据集(10 到 100 TB)的核心计算库。通常我们对这些数据集进行的操作是相当简单的归约操作,例如比较两个时期的平均气候。

我们为什么选择 Dask

在进行科学分析任务时,我不希望考虑如何并行化我的代码。我们选择使用 Dask 是因为 Dask.array 几乎可以即插即用地兼容 NumPy。这意味着在 Xarray 内部或外部采用 Dask 比采用其他并行框架要容易得多。同样地,Dask 与科学 Python 技术栈中的其他关键部分(包括 Pandas、Scikit-Learn 等)也很好地集成。

痛点

最初在 HPC 系统上部署 Dask 有点痛苦。但这已经变得容易多了。

此外,虽然 Dask 易于使用,但也容易出错。它提供的自由也意味着你有自找麻烦的自由。

诊断性能问题也比仅使用 Numpy 时更复杂。这仍然更像是一门艺术而不是科学。

我们围绕 Dask 使用的技术

  • 我们使用 Xarray 为 Numpy 数组和 Dask 数组提供更高级别(且熟悉)的接口

  • 我们使用 NetCDF 和 HDF 文件进行数据存储

  • 我主要在 HPC 系统上工作,并一直在帮助开发 dask-jobqueue 包,用于在作业排队系统上部署 Dask

  • Pangeo 项目中,我们正在探索使用 Kubernetes 和 Jupyter Notebooks 的 Dask 应用

其他想法

我非常有兴趣实现更直观的科学分析工作流程,特别是在需要并行化时。Dask 一直是我们努力促进在大型数据集上实现“端到端”工作流程模式的重要组成部分。