#dask-distributed #rapids
#dask-распределенный #пороги
Вопрос:
Я новичок в машинном обучении и использовании GPU — по этой причине я был в восторге от RAPIDs и dask.
Я работаю на AWS EC2 p3.8xlarge. На нем я запускаю docker с контейнером RAPIDs. Я использую версию 0.16. Существует EBS с 60 ГБ.
У меня есть набор данных с примерно 80 миллионами записей. В формате csv он составляет около 27 ГБ, а в формате parquet (с чуть меньшими возможностями) — 3,4 ГБ (оба случая на AWS S3).
Пытаясь использовать dask_cudf
using a LocalCUDACluster
, я всегда сталкиваюсь и сталкиваюсь с сбоями рабочих. Создаются дампы ядра, и выполнение продолжается, создавая новых рабочих и, в конечном итоге, занимая все хранилище на моем компьютере.
Смотрите Ниже некоторые примеры выполнения, показывающие увеличение объема памяти, несоблюдение rmm_pool_size и, в конечном итоге, сбой. Я перепробовал много значений для rmm_pool_size, как над, так и под общей памятью графического процессора (насколько я понимаю, она должна быть в состоянии перейти в машинную память).
Я использую следующий начальный код:
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,736539436504245 ГБ
Затем, выполняя мой код (независимо от того, пытается ли он выполнить какой-либо EDA, запустить KNN или почти все остальное, я получаю это поведение / ошибку.
Я читаю документы, я читаю многочисленные блоги (в основном из RAPIDS), я просматриваю записные книжки, но я все еще не могу заставить его работать. Я делаю что-то не так? Не будет ли это работать с настройкой, которая у меня есть?
Любая помощь будет оценена…
Ответ №1:
При установке ограничений RMM это зависит от графического процессора. Итак, если ваша цель — 60 ГБ, установите RMM равным 15. только что понял, что вы используете только 4 GPU
Комментарии:
1. Я следовал примеру lile medium.com/rapids-ai /… который, кажется, создает пул памяти — больше, чем во всей памяти устройства… вы уверены, что это для каждого устройства? В первом примере есть
device_memory_limit
параметр, который, как я предполагаю, имеет значение, превышающее значение памяти устройства (40 ГБ), но теперь я вижу, что GPU имеет 48 ГБ памяти…2. Положительно, это для каждого устройства. Все RAPIDS соответствуют парадигме одного процесса на GPU.
3. @TomerCagan Я обновил суть этих ноутбуков, чтобы явно указать, что каждый графический процессор имеет 48 ГБ памяти. Надеюсь, это поможет сделать его более понятным!