0

我是机器学习和使用 GPU 的新手——因此我对 RAPID 和 dask 感到很兴奋。

我在 AWS EC2 p3.8xlarge 上运行。在它上面,我正在使用 RAPIDs 容器运行 docker。我使用的是 0.16 版。有一个60GB的EBS。

我有一个包含大约 8000 万条记录的数据集。作为 csv,它大约是 27GB,而作为 parquet(功能少一点),它是 3.4GB(AWS S3 上的两种情况)。

尝试dask_cudf使用 aLocalCUDACluster时,我总是遇到崩溃工人的问题。创建核心转储并继续执行,创建新的工作人员并最终占用我机器上的所有存储空间。

请参阅下面的一些示例执行,显示内存增加,不考虑 rmm_pool_size 并最终崩溃。我尝试了许多 rmm_pool_size 的值,无论是在总 GPU 内存之上还是之下(据我了解,它应该能够溢出到机器内存)。

我正在使用以下初始代码:

from dask_cuda import LocalCUDACluster
from distributed import Client, LocalCluster
import dask_cudf


cluster = LocalCUDACluster(
    rmm_pool_size="60GB"  # I've tried 64, 100, 150 etc. No luck
)
# I also tried setting rmm_managed_memory... 
# I know there are other parameters (ucx, etc) but don't know whether relevant and how to use

client = Client(cluster)

df = dask_cudf.read_parquet("s3://my-bucket/my-parquet-dir/")

我打印内存使用情况:

mem = df.memory_usage().compute()
print(f"total dataset memory: {mem.sum() / 1024**3}GB")

导致

数据集总内存:50.736539436504245GB

然后,执行我的代码(无论是尝试做一些 EDA、运行 KNN 还是其他几乎所有东西,我都会遇到这种行为/错误。

我阅读了文档,阅读了许多博客(主要来自 RAPIDS),我浏览了笔记本,但我仍然无法让它工作。难道我做错了什么?这不适用于我的设置吗?

任何帮助,将不胜感激...

示例执行 - knn

示例执行 - 坚持

4

1 回答 1

1

设置 RMM 限制时,它是针对每个 GPU 的。因此,如果您的目标是 60GB,请将 RMM 设置为 15。刚刚意识到您只使用 4 个 GPU

于 2020-10-30T21:00:08.187 回答