使用 dask 加载大型数据集

2024-01-17

我处于具有集群、紧密耦合互连和支持 Lustre 文件系统的 HPC 环境中。我们一直在探索如何利用 Dask 不仅提供计算,而且充当分布式缓存来加速我们的工作流程。我们专有的数据格式是 n 维且规则的,并且我们编写了一个惰性读取器以传递到 from_array/from_delayed 方法中。

我们在跨 Dask 集群加载和保存大于内存的数据集时遇到了一些问题。

hdf5 示例:

# Dask scheduler has been started and connected to 8 workers
# spread out on 8 machines, each with --memory-limit=150e9.
# File locking for reading hdf5 is also turned off
from dask.distributed import Client
c = Client({ip_of_scheduler})
import dask.array as da
import h5py
hf = h5py.File('path_to_600GB_hdf5_file', 'r')
ds = hf[hf.keys()[0]]
x = da.from_array(ds, chunks=(100, -1, -1))
x = c.persist(x) # takes 40 minutes, far below network and filesystem capabilities
print x[300000,:,:].compute() # works as expected

我们还从我们自己的一些文件格式加载了数据集(使用切片、dask.delayed 和 from_delayed),并且随着文件大小的增加,性能也出现了类似的下降。

我的问题:使用 Dask 作为分布式缓存是否存在固有的瓶颈?所有数据都会被迫通过调度程序吗?工作人员是否能够利用 Lustre,或者功能和/或 I/O 是否以某种方式序列化?如果是这样的话,不对海量数据集调用 persist,而只让 Dask 在需要时处理数据和计算会更有效吗?


  • 使用 Dask 作为分布式缓存是否存在固有的瓶颈?

    每个系统都存在瓶颈,但听起来您还没有接近我期望 Dask 遇到的瓶颈。 我怀疑你遇到了其他事情。

  • 所有数据都会被迫通过调度程序吗?

    不,工作人员可以执行自己加载数据的函数。这些数据将保留在工作人员身上。

  • 工作人员是否能够利用 Lustre,或者功能和/或 I/O 是否以某种方式序列化?

    Workers 只是 Python 进程,因此如果集群上运行的 Python 进程可以利用 Lustre(几乎可以肯定是这种情况),那么 Dask Workers 就可以利用 Lustre。

  • 如果是这样的话,不对海量数据集调用 persist,而只让 Dask 在需要时处理数据和计算会更有效吗?

    这当然很常见。这里需要权衡 NFS 的分布式带宽和分布式内存的可用性。

在你的位置上,我会使用 Dask 的诊断来找出是什么占用了这么多时间。您可能想阅读有关的文档了解绩效 http://dask.pydata.org/en/latest/understanding-performance.html以及关于仪表板 http://dask.pydata.org/en/latest/diagnostics-distributed.html尤其。该部分有一个视频可能特别有帮助。我想问两个问题:

  1. 工人是否一直在执行任务? (状态页、任务流图)
  2. 在这些任务中,什么占用了时间? (个人资料页)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 dask 加载大型数据集 的相关文章

随机推荐

  • HTTP 与 HTTPS 性能

    http 和 https 之间的性能有什么重大差异吗 我似乎记得读到过 HTTPS 的速度是 HTTP 的五分之一 这对于当前一代网络服务器 浏览器有效吗 如果是的话 有任何白皮书支持吗 对此有一个非常简单的答案 分析您的 Web 服务器的
  • 如何从文本中提取命名实体+动词

    嗯 我的目标是从文本中提取 NE 人 和与其相关的动词 例如 我有这样的文字 邓布利多转身沿着街道走回去 哈利 波特在毯子里翻了个身 没有醒来 作为理想的结果我应该得到 邓布利多转身走了 哈利 波特卷起 我使用斯坦福 NER 来查找和标记人
  • Angular 5 与 Canvas drawImage 未显示

    尝试使用drawImage 将背景图像添加到画布 但它没有显示 我知道图像的路径是正确的 因为我可以 img src 那行得通 其他一切在 JavaScript 中都可以正常工作 但不能很好地转换为 Angular HTML
  • 使用 Jquery 删除 CSS 属性

    我发现的所有其他答案仅删除属性的设置 而不是完全删除属性 我正在将元素从绝对定位更改为固定定位 我需要删除 right 定位属性并将其替换为 margin right 以便该元素位于其父 DIV 内的右侧 如果没有删除 right 属性 该
  • 加盐和哈希,为什么不使用用户名?

    我必须承认我对大多数与 Web 应用程序相关的高科技安全问题一无所知 但我至少认为我可以问一件事 因为这是一个直接的问题 并且 希望 有具体的答案 以这个网站为例 http www 15seconds com issue 000217 ht
  • 如何在 macOS 上使用终端重新启动 android adb?

    我一直遇到 Android Studio ADB 无法识别我的设备的问题 到目前为止 我找到的唯一解决方案是完全重新启动整个计算机 但这是不切实际的 我希望能够从终端重新启动 ADB 因为我在这里看到了其他帖子 声称它将解决该问题 但是 我
  • 无法在 HTC One M8 Lollipop 上进行 systrace

    我正在尝试使用systrace来自 Android Studio 的默认设置systrace选项设置 我还没有root手机 HTC Sense v6 0 Android 5 0 1 HTC SDK API 级别 6 55 当我这样做时 我得
  • 如何在Java中生成随机JSON字符串?

    我想测试apache kafka的一个功能 所以我需要用Java生成随机JSON字符串 我的生产数据是JSON格式 我用谷歌搜索 找到了这些网站 如何生成随机字母数字字符串 https stackoverflow com questions
  • 根据滚动隐藏和显示工具栏

    这个问题仅涉及代号一 我需要使 Codename One Form 的工具栏移动 如该视频所示 https www informatica libera net videoLavoro hideShowToolbarOnScrolling
  • 排序日期和时间

    我正在尝试编写一个控制台应用程序来根据开始日期按升序对我的日期和时间进行排序 这是我正在尝试做的一个示例 我的输入 break Start1 15 02 12 12 30PM break End1 15 02 12 01 30PM brea
  • 如何利用 FileReader 的异步特性实现进度条和回调

    我在 for 循环中调用了 FileReader API 以迭代多个文件对象 我使用 FileReader 本质上显示图像的预览 function for var i in Files var fileReader new FileRead
  • 在 .NET 中,如何在不重新压缩 JPEG 的情况下编写 Exif 标头?

    我有一个JPEG http en wikipedia org wiki JPEG我想要设置的图像Exif http en wikipedia org wiki Exchangeable image file format标题 特别是作者 在
  • 限制Spring Boot中的Tomcat只能访问某些IP地址

    我需要将基于 Spring Boot 的应用程序的嵌入式 tomcat 限制为某些 IP 地址 我只想允许来自两个 IP 地址的传入连接 而不是全部 我知道如何在未运行嵌入式的 Tomcat 中执行此操作 但不知道在 Spring Boot
  • 使用 Travis CI 将 Maven 版本部署到 Github

    我成功地使用标签将 JAR 从 Maven 项目部署到了 Github 但是 当前配置假设 JAR 的文件名始终保持不变 但事实并非如此 当我发布新版本时 这将相应更改 因此部署将失败 有没有办法在 YAML 文件中使用通配符 根据我在 S
  • 使用 PouchDB 过滤设计文档

    我正在使用设计文档来确保只有所有者才能修改文档 如何防止 couchdb 复制此设计文档 您可以使用过滤选项 http pouchdb com api html replication in changes and replicate e
  • ZF2:Zend Framework 2 完整 URL(包括主机名)

    在我看来 我需要绘制完整的 URL 像这样 http hostename com default url 当我尝试使用时 this gt url default array 1 2 3 我只得到 index get 有没有任何 Zend 方
  • Carrierwave - 如果文件类型不在白名单上,则触发存在验证

    在我的 Rails 4 应用程序中 我使用 Carrierwave 上传图像 class UserItemImage lt ActiveRecord Base include PicturesHelper attr accessor foo
  • 占位符张量需要机器学习引擎预测中的值,但不需要本地预测

    我一直在开发一个与云 ML 引擎的在线预测服务一起使用的模型 我的模型包含一个placeholder with default我用它来保存预测显着性阈值的张量 threshold tf placeholder with default 0
  • Backbone.js:更改未在 model.change() 上触发

    我在 Backbone js 上面临 更改事件未触发 问题 这是我对用户模型的看法 window UserView Backbone View extend initialize function this model on destroy
  • 使用 dask 加载大型数据集

    我处于具有集群 紧密耦合互连和支持 Lustre 文件系统的 HPC 环境中 我们一直在探索如何利用 Dask 不仅提供计算 而且充当分布式缓存来加速我们的工作流程 我们专有的数据格式是 n 维且规则的 并且我们编写了一个惰性读取器以传递到