问题标签 [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.
python - 使用 cudf 和 cuspatial 计算组的半正弦距离
我正在尝试使用加速(GPU 支持)计算进行距离计算,但在处理 pandas 和 cudf 之间的细微差别时遇到了很多麻烦。
我有一个带有车辆和时间点(lat、lng、timestamp)的df,我基于cpu的计算大致是这样的:
其中基本上计算使用运算符对齐连续点get_distance
实现的纬度、经度列之间的距离。.shift()
事实证明,尝试使用cudf
和cuspatial
来自 RAPIDSAI 非常令人困惑。
我正在尝试做:
我的gpu_distance
功能(什么不起作用)在哪里
这还不是我的完整用例,但我正在努力构建它,收到有关实际模块的错误
任何有问题的想法都将不胜感激,或者如果有更好的文档。
cuspatial.haversine_distance
当不在 groupby 语句中运行时,我能够运行该函数,以下代码正常执行
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 来实现吗?谢谢!
cupy - 向前填充cupy / cudf
应该可以用cupy/cudf执行填充吗?这个想法是执行一个施密特触发器函数,比如:
我正在尝试这个,但cupy没有积累ufunc:
任何想法?谢谢!
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
在数据块集群上使用吗?
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%),见下面的截图:
我可以使用一些帮助来理解为什么 predict 方法需要这么长时间,以及我在代码中是否做错了什么。作为参考,我正在关注本文档站点上给出的 KNN Regressor 示例:https ://docs.rapids.ai/api/cuml/stable/api.html#id23
任何帮助将不胜感激,谢谢!
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)
将单元格向下连接,它们不会一起执行
环境
- 遵循指南 - https://github.com/rapidsai-community/notebooks-contrib/blob/branch-0.14/intermediate_notebooks/E2E/synthetic_3D/rapids_ml_workflow_demo.ipynb
conda create -n rapids-0.16 -c rapidsai -c nvidia -c conda-forge -c defaults rapids=0.16 python=3.7 cudatoolkit=10.2
- AWS EC2:深度学习 AMI (Ubuntu 18.04) 版本 36.0 - ami-063585f0e06d22308:MXNet-1.7.0、TensorFlow-2.3.1、2.1.0 和 1.15.3、PyTorch-1.4.0 和 1.7.0、Neuron 和其他。NVIDIA CUDA、cuDNN、NCCL、英特尔 MKL-DNN、Docker、NVIDIA-Docker 和 EFA 支持。如需完全托管的体验,请查看:https ://aws.amazon.com/sagemaker
- AWS EC2 实例 - g4dn.4xlarge - 16GB VRAM,64 GB RAM
边注
- 错误 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
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 编程的新手。
任何建议或解决方案都有帮助,谢谢。
cudf - 如何将 cudf.core.dataframe.DataFrame 转换为 pandas.DataFrame?
我有一个 cudf 数据框
我想转换为pandas.DataFrame()
. 尽管
刚刚找到了答案:
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
为静态列表,我仍然会收到错误消息。欢迎对列表理解问题或我的整个问题的任何解决方案。谢谢。
python - Pandas DF - 将时间 b/w 2 时间戳切入小时箱
假设我在 df 中有这种格式的数据
也许在同一个 df 或一个新的 df 中,我想添加如下所示的记录:
dur
以秒为单位。
我想groupby
id
,然后day
(从 中提取sta
),然后,为特定时间()h1, h2, etc.
聚合。dur
h1, etc.
id