问题标签 [cudf]

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.

0 投票
1 回答
201 浏览

python - 使用 cudf 和 cuspatial 计算组的半正弦距离

我正在尝试使用加速(GPU 支持)计算进行距离计算,但在处理 pandas 和 cudf 之间的细微差别时遇到了很多麻烦。

我有一个带有车辆和时间点(lat、lng、timestamp)的df,我基于cpu的计算大致是这样的:

其中基本上计算使用运算符对齐连续点get_distance实现的纬度、经度列之间的距离。.shift()

事实证明,尝试使用cudfcuspatial来自 RAPIDSAI 非常令人困惑。

我正在尝试做:

我的gpu_distance功能(什么不起作用)在哪里

这还不是我的完整用例,但我正在努力构建它,收到有关实际模块的错误

任何有问题的想法都将不胜感激,或者如果有更好的文档。

cuspatial.haversine_distance当不在 groupby 语句中运行时,我能够运行该函数,以下代码正常执行

0 投票
0 回答
102 浏览

python - cuDF 用于字符串比较提升

我正在寻找 2 个大型 csv 文件之间的匹配项。我使用这个函数来计算 2 个字符串之间的相似度。如果给定的比率大于预定义的阈值,那么我将接受它作为匹配项。

def similar(a, b): return SequenceMatcher(None, a, b).ratio()

因为我需要遍历两个文件的每一行,所以时间复杂度是 O(n^2)。我考虑过使用哈希将时间复杂度降低到 O(n),但这会将我的匹配限制为完全匹配而没有灵活性。但是,第一种方法需要我几天时间才能在具有 CPU 的本地计算机上执行。因此,我想知道是否有办法使用 cuDF 来增强 GPU 的操作。

另外,当我尝试 cuDF applymap 函数时,它说它不支持字符串 dtype,那么还有其他方法可以使用 cuDF 来实现吗?谢谢!

0 投票
1 回答
107 浏览

cupy - 向前填充cupy / cudf

应该可以用cupy/cudf执行填充吗?这个想法是执行一个施密特触发器函数,比如:

我正在尝试这个,但cupy没有积累ufunc:

任何想法?谢谢!

0 投票
3 回答
463 浏览

databricks - 在数据块上安装 cudf

我正在尝试在数据块上使用 cudf。

我开始关注https://medium.com/rapids-ai/rapids-can-now-be-accessed-on-databricks-unified-analytics-platform-666e42284bd1。但是初始化脚本链接已损坏。

然后,我按照这个链接(https://github.com/rapidsai/spark-examples/blob/master/getting-started-guides/csp/databricks/databricks.md#start-a-databricks-cluster)安装了集群上的 cudf jars。我还是不能import cudf

我也尝试过: %sh conda install -c rapidsai -c nvidia -c numba -c conda-forge cudf=0.13 python=3.7 cudatoolkit=10.1它也失败了一个很长的错误,结尾是:

知道如何cudf在数据块集群上使用吗?

0 投票
1 回答
141 浏览

gpu - 为什么 dask_cudf DataFrame 的 KNearestNeighbors 的 cuml predict() 方法需要这么长时间?

我有一个大型数据集(大约 8000 万行),我正在使用带有 dask_cudf 数据帧的 cuml 训练一个 KNearestNeighbors 回归模型。

我正在使用 4 个 GPU,每个 rmm_pool_size 为 15GB:

我正在从存储在 S3 存储桶中的镶木地板文件中读取数据:

当我拟合 KNN 模型时,它运行良好,我可以看到这段时间 GPU 利用率很高。这是我用来拟合模型的代码:

但是,当我尝试输出测试集的预测时,与 fit 方法相比,这需要大量时间。

我等了将近 24 小时才终于有一次看到 predict 方法的结果。也很明显,predict 方法运行期间的 GPU 利用率要低得多,下降到大约 30-40%(在训练期间约为 100%),见下面的截图:

预测方法期间的 CPU 和 GPU 利用率

我可以使用一些帮助来理解为什么 predict 方法需要这么长时间,以及我在代码中是否做错了什么。作为参考,我正在关注本文档站点上给出的 KNN Regressor 示例:https ://docs.rapids.ai/api/cuml/stable/api.html#id23

任何帮助将不胜感激,谢谢!

0 投票
1 回答
3180 浏览

python - worker 0 上的内存分配错误:std::bad_alloc: CUDA 错误

描述

  • 我只是想为模型提供训练和测试集,但出现以下错误
  • 第一个数据包 -train_data = xgboost.DMatrix(data=X_train, label=y_train) 直到我只运行这个并进行培训和任何事情,只有这个不会给出错误消息
  • 第二个数据包 -test_data = xgboost.DMatrix(data=X_test, label=y_test) 将单元格向下连接,它们不会一起执行

环境

边注

  • 错误 GB VRAM 大小不是 30GB 或 15GB
    • 1 539 047 424 = 1.5 GB,
    • 3 091 258 960 = 3 GB,
    • 3 015 442 432 = 3GB,
    • 3 091 258 960 = 3 GB。
    • GPU 有 16 GB VRAM,所以我认为这不能回答问题。

错误

代码 2如果我清理并重新启动在 1 个单元中一起执行它们的笔记本。

错误 2

0 投票
1 回答
430 浏览

python - python cuDF groupby 适用于有序数据

我有一些有序数据,其中有事件层次结构。每列是一个事件的唯一 id,相对于层次结构中它上面的事件。类似于每天的数字在一个月中是唯一的,而每个月的数字在一年中是唯一的。我想让最低级别在最高级别中是唯一的,例如通过从 1 到 365 编号使一年中的每一天都是唯一的。我的用例并不特定于天、月和年。

前:

后:

目标是获得一个列,其中对于每个 id,都有一个 EVENT_3A,使得 EVENT_3A 是 EVENT_3 相对于 EVENT_1 发生的顺序(好像没有 EVENT_2)。此外,还有许多 ID 必须单独计算。现在我正在 CPU 上执行此操作,但需要很长时间,所以我想切换到 GPU 上执行此操作。

我的主要想法是做一个groupby('ID').apply_grouped()orgroupby('ID').agg()但我不知道在apply_grouped()oragg()函数中放什么。我之前在 CPU 上使用 dask 执行此操作,但它更直观,因为分组的 DataFrame 直接传递给apply()函数。似乎在 cuDF 中我必须通过 incols 并且我无法弄清楚如何将它们视为 DataFrame。

大约有 5,000 个 ID,因此理想情况下,每个分组的 ID 都将由 GPU 中的一个核心处理,但我不确定它是否可以这样工作,因为我是 GPU 编程的新手。

任何建议或解决方案都有帮助,谢谢。

0 投票
0 回答
1157 浏览

cudf - 如何将 cudf.core.dataframe.DataFrame 转换为 pandas.DataFrame?

我有一个 cudf 数据框

我想转换为pandas.DataFrame(). 尽管

刚刚找到了答案:

0 投票
1 回答
134 浏览

python - Python 在 cuDF 中通过列表理解修改了 groupby ngroup

我正在尝试编写一个类似于 pandas 的函数的groupby().ngroups() 函数。不同之处在于我希望每个子组计数从 0 重新开始。所以给出以下数据:

我想

我能想到的最好的实现方法是groupby()在 EVENT_1 上执行一个,在每个组中获取 EVENT_2 的唯一值,然后将 EVENT_2A 设置为唯一值的索引。例如,在EVENT_1 == 0组中,唯一值是[3, 5, 9],然后我们将 EVENT_2A 设置为唯一值列表中的索引,以获取 EVENT_2 中的相应值。

我写的代码在这里。请注意,EVENT_2 始终相对于 EVENT_1 进行排序,因此在 O(n) 中找到像这样的唯一值应该可以工作。

问题在于,在用户定义函数中使用列表似乎存在错误count()。Numba 说它的 JIT nopython 编译器可以处理列表理解,实际上当我使用该函数时

它可以工作,尽管有弃用警告。

我使用 cudf 得到的错误是

这与 numba 的弃用警告有关吗?即使我设置uq为静态列表,我仍然会收到错误消息。欢迎对列表理解问题或我的整个问题的任何解决方案。谢谢。

0 投票
1 回答
155 浏览

python - Pandas DF - 将时间 b/w 2 时间戳切入小时箱

假设我在 df 中有这种格式的数据

也许在同一个 df 或一个新的 df 中,我想添加如下所示的记录:

dur以秒为单位。

我想groupby id,然后day(从 中提取sta),然后,为特定时间()h1, h2, etc.聚合。durh1, etc.id