0

问题 :

尝试使用 Dask CUDF 加载文件(CSV 和 Parquet)并看到一些与内存相关的错误。数据集可以轻松装入内存,并且可以使用 BlazingSQL 的 read_parquet 方法正确读取文件。但是 dask_cudf.read_parquet() 方法无法做到这一点。两种文件格式都出现相同的错误。

其他观察结果是,当从 cudf dataframe 创建 blazingSQL 表时,该表被创建但记录为零。

如果有人可以提供任何指示来解决此问题,那将很有帮助。

数据集信息:

行数 - 1.26 亿列数 - 209 文件格式 - parquet 分区数 - 8 文件大小 parquet - 400 MB 文件大小 csv - 62 GB

系统信息 :

GPU - 6 (V100 TESLA) 内存 - 16GB GPU 核心 - 32 核心

客户端信息: 调度程序:tcp://127.0.0.1:36617 仪表板:http: //127.0.0.1 :8787/status 集群工作人员:4 核:4 内存:239.89 GiB

代码 :

from blazingsql import BlazingContext
from dask.distributed import Client,wait
from dask_cuda import LocalCUDACluster
import dask
import dask_cudf
cluster = LocalCUDACluster()
client = Client(cluster)
bc = BlazingContext(dask_client=client)


ddf = dask_cudf.read_parquet('/home/ubuntu/126M_dataset/')
bc.create_table('table', ddf.compute())

错误信息:

super(NumericalColumn, col).fillna(fill_value, method)
    501 
    502     def find_first_value(

~/miniconda3/lib/python3.7/site-packages/cudf/core/column/column.py in fillna(self, value, method, dtype)
    733         """
    734         return libcudf.replace.replace_nulls(
--> 735             input_col=self, replacement=value, method=method, dtype=dtype
    736         )
    737 

cudf/_lib/replace.pyx in cudf._lib.replace.replace_nulls()

cudf/_lib/scalar.pyx in cudf._lib.scalar.as_device_scalar()

~/miniconda3/lib/python3.7/site-packages/cudf/core/scalar.py in device_value(self)
     75         if self._device_value is None:
     76             self._device_value = DeviceScalar(
---> 77                 self._host_value, self._host_dtype
     78             )
     79         return self._device_value

cudf/_lib/scalar.pyx in cudf._lib.scalar.DeviceScalar.__init__()

cudf/_lib/scalar.pyx in cudf._lib.scalar.DeviceScalar._set_value()

cudf/_lib/scalar.pyx in cudf._lib.scalar._set_numeric_from_np_scalar()

MemoryError: std::bad_alloc: CUDA error at: /home/ubuntu/miniconda3/include/rmm/mr/device/cuda_memory_resource.hpp:69: cudaErrorMemoryAllocation out of memory

系统信息 :

英伟达 smi 信息:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 465.19.01    Driver Version: 465.19.01    CUDA Version: 11.3     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA Tesla V1...  On   | 00000000:00:1B.0 Off |                    0 |
| N/A   49C    P0    55W / 300W |  16147MiB / 16160MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA Tesla V1...  On   | 00000000:00:1C.0 Off |                    0 |
| N/A   48C    P0    56W / 300W |  16106MiB / 16160MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   2  NVIDIA Tesla V1...  On   | 00000000:00:1D.0 Off |                    0 |
| N/A   46C    P0    61W / 300W |  16106MiB / 16160MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   3  NVIDIA Tesla V1...  On   | 00000000:00:1E.0 Off |                    0 |
| N/A   48C    P0    60W / 300W |  16106MiB / 16160MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A    113949      C   ...ntu/miniconda3/bin/python      823MiB |
|    0   N/A  N/A    114055      C   ...ntu/miniconda3/bin/python    15319MiB |
|    1   N/A  N/A    114059      C   ...ntu/miniconda3/bin/python    16101MiB |
|    2   N/A  N/A    114062      C   ...ntu/miniconda3/bin/python    16101MiB |
|    3   N/A  N/A    114053      C   ...ntu/miniconda3/bin/python    16101MiB |
+-----------------------------------------------------------------------------+
4

1 回答 1

1

文件大小 parquet - 400 MB 文件大小 csv - 62 GB GPU - 6 (V100 TESLA) 内存 - 16GB GPU 核心 - 32 核心

当您调用computeDask 集合时,它会完全计算结果并将其作为单 GPU 对象带入客户端进程。您的数据可能会压倒您其中一个 GPU 上的 16GB 内存。您可能正在寻找persist,它完全计算结果并将其存储在工作人员的内存中(请注意,执行将在后台发生并且persist会快速返回)。

此外,在从 Dask 对象创建 BlazingSQL 表之前,您也不需要保留数据。

您可能会发现此答案此博客文章此文档很有用。

于 2021-04-29T13:53:57.060 回答