我是机器学习和使用 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),我浏览了笔记本,但我仍然无法让它工作。难道我做错了什么?这不适用于我的设置吗?
任何帮助,将不胜感激...