问题标签 [furrr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 有没有办法在使用 furrr 函数时修改集群资源分配的期货?
我在我的 R 脚本中使用了future、future.batchtools和furrr包,以便在slurm管理的远程机器上运行代码。
当我定义我的未来拓扑时,我将一个模板文件传递给future.bacthtools::batchtools_slurm()
并使用参数定义 slurm 作业的计算资源resources =
。
然后当我运行该furrr::future_pwalk()
函数时,每个未来都使用相同的资源进行评估,即我在batchtools_slurm()
.
有没有办法让作业使用不同的资源,具体取决于传递给的变量furrr::future_pwalk()
?
提前感谢您的帮助!
r - 如何为 future_map 拆分数据帧以获得最佳性能
我正在运行一个数据准备脚本,其中涉及将数据帧的行拆分为多个观察值的步骤。这一步需要相当长的时间,我正在尝试优化未来的使用以获得一些改进。我正在处理的数据框非常大(大约 300 万行),我正在尝试找到将其分成块以允许并行处理的最佳方法。我在 64 个内核上运行它,因此有可能加快速度,但我不确定如何不遇到内存问题或在哪里降低速度。
我做了一些小实验,结果让我很困惑。我尝试了嵌套的未来地图,我认为这不应该提高性能,因为第二级期货是连续运行的。但它确实加快了速度。
通常是否建议将数据帧拆分为尽可能小的位并将它们分配给不同的进程,或者是否有一个最佳数量可以传递给每个进程?在减少工人数量时,我的速度似乎有所提高。我应该减少数据框的拆分以匹配工人的数量吗?
我现在通常很困惑,非常感谢有用的解释。
r - 使用“未来”进行并行化的速度增益不佳
我发现使用future
(and furrr
) 包进行并行化的速度增益R
并不令人满意。尤其是速度提升并不接近线性。我的机器有 4 个工人,所以我认为当我指定的工人数量不大于我机器中可用的核心数量时,速度增益应该是线性的。然而,事实并非如此。
下面是一个说明问题的例子,我画了 10^7 个随机数 500 次。
在上面的例子中,我得到的速度增益是:
- 2 名工人 1.87 倍
- 3 名工人的 2.62 倍
- 4 名工人的 3.17 倍
上例中的速度增益并不接近线性,尤其是当我使用 4 个工人时。我认为这可能是因为plan
函数的开销时间。但是,如果我在设置工人数量后多次运行该过程,则速度增益是相似的。这说明如下:
我还尝试使用包中的future_lapply
函数future.apply
而不是包中的future_map
函数furrr
。但是,它们的速度增益也相似。因此,我将不胜感激任何关于这里发生的事情的建议。谢谢!
r - 在多会话中使用 rTorch furrr
我想在“循环”中使用rTorch 。furrr
一个最小的例子似乎是:
我得到输出:
当我使用多核或顺序时,我得到了预期的输出:
...结果是张量的预期列表。取消注释函数中的第一行,假设新会话“需要这个”没有帮助。
更新:我torch <- import("torch")
在 torch_it 函数中添加了。然后它运行没有错误,但我得到的结果是一个空指针列表(?):
那么,如何正确地将 rTorch 链接到每个多会话?提前致谢!
信息:
r - furrr 不会从全局环境中自动解析 S3 泛型方法
我开发了一些使用大量本地函数和 S3 方法的代码。当我开始在 furrr 函数中使用 S3 方法时,全局变量的自动检测无法正常工作以检测 S3 处理程序。
示例代码:
它失败并出现以下错误:
我知道,我可以使用furrr_options(globals = list(test.character = test.character))
,但我需要一些通用解决方案,它不需要在全局中枚举所有在 furrr 函数中使用的本地函数和 S3 方法。
有没有办法告诉 furrr 如何解决 S3 泛型方法?
r - 使用 Purrr 或 Furrr 进行过滤,并将字符向量传递给附加函数
我有一些非常低效的代码,希望有人可以帮助我。我没有很好的代表,但已经创建了我正在使用的当前代码/工作流程的示例。
这就是我要简洁地做的事情
- 将数据集过滤成组
- 将过滤后的数据集传递给 3 个单独的函数(特征选择、验证和应用)
组(过滤)从特征选择到验证再到应用程序都是一致的。
工作流程是:
- 特征选择采用过滤后的数据并返回每组特征的特征向量
- 验证采用 2 个参数:按组过滤的数据,以及与来自 1(特征选择)的该组对应的字符向量结果。返回
df
每个组并仅选择列prediction
和linear_weight
。然后行绑定 - 应用程序采用与 2(验证)相同的 2 个参数。为每个组返回
df
并根据每个组中存在的特征(从 1 开始)选择列,prediction
并且linear_weight
。然后行绑定
我毫不怀疑,某些版本purrr
可能会使我的代码更加高效并显着改善运行时间。我的一个想法是将选择特征的结果保存到 adf
中,特征位于列中,然后将该列结果传递给validate_data
andapplicate_data
函数。
抱歉没有完全可重现的东西。希望这个例子能很好地了解我想要实现的目标。
r - 使用 furrr 和 future 在 Shiny 中的进度条
我正在开发一个 Shiny 应用程序,我在其中使用furrr::
和将耗时的计算拆分为多个会话future
。我想在每次(或每 n 个)计算后更新进度条。我发现以下示例会更新进度条,但仅在会话完全完成后才会更新。这意味着 6 次更新在最后几乎同时发生。对于非闪亮版本,存在.progress = T
导致我想要的更新的参数(参见第二个示例)。
有没有类似的东西可以用于闪亮的进度条?如果更新仅取决于第一个工作人员,那甚至会很好,因为所有工作人员的计算几乎相同。
提前感谢您的帮助!
示例 1:
示例 2:
r - 有条件地将函数映射到列表中所有子列表的特定元素 - R
任务:
- 我想有条件地将函数应用于R中
ifelse
命名的所有子列表中的特定元素。list
- 我想将此输出存储在一个名为
list
. - 此外,如何提取满足条件的子列表中的元素并将其存储在新的命名列表中?
清单是 ggplot2
地块。
数据:
就其本身而言,以下作品:
试图:
r - 在 Golem Shiny 应用程序中使用 {future} 和 {furrr} 函数时出现错误,它来自什么?
我目前正在开发一个名为“package_name”(这是我的要求)的 Golem Shiny 应用程序,我创建的一些函数需要使用{furrr}
和{future}
包中的函数。但是,每当我尝试运行它们时,都会出现以下错误:
错误:没有名为“package_name”的包
请注意,只要不使用任何一个包的任何功能都可以正常工作。
有谁知道问题可能是什么?
谢谢 !
r - 在 `data.table` 中使用时,`Map()` 是并行的吗?-R
从data.table
包网站,鉴于:
“许多常见操作在内部并行化以使用多个 CPU 线程”
- 我想知道
Map()
在 a 中使用时是否是这种情况data.table
?
询问的原因是因为我注意到在大型数据集上比较相同的操作(cor.test(x, y)
具有x = .SD
并且y
是数据集的单列),使用Map()
比使用时执行得更快furrr::fututre_map2()
。