Можно ли использовать Datalab с многопроцессорной обработкой как способ масштабирования преобразований Pandas? - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь использовать Google Cloud Datalab для масштабирования преобразований данных в Pandas.

На моей машине все отлично работает с небольшими файлами (сохраняя первые 100000 строк моего файла), но работает с полнымВходной CSV-файл 8G привел к ошибке памяти.

Я думал, что виртуальная машина Datalab поможет мне.Сначала я попытался использовать виртуальную машину с Highmem, до 120 ГБ или памяти.Там я получаю сообщение об ошибке: ядро, кажется, умерло.Он перезапустится автоматически.Я нашел кое-что здесь: https://serverfault.com/questions/900052/datalab-crashing-despite-high-memory-and-cpu Но я не использую TensorFlow, так что это не сильно помогло.

Поэтому я попробовал другой подход, обработку чанков и распараллеливание на нескольких ядрах.Он хорошо работает на моей машине (4 ядра, оперативная память 12 ГБ), но все еще требует многочасовых вычислений.

Поэтому я хотел использовать виртуальную машину Datalab с 32 ядрами для ускорения, но вот через 5 часовпервые потоки еще не завершились, когда на моем локальном компьютере уже завершено 10.

Так очень просто:

Можно ли использовать Datalab как способ масштабирования преобразований Панд?Почему я получаю худшие результаты с теоретически намного лучшей виртуальной машиной, чем на моей локальной машине?

Некоторый код:

import pandas as pd
import numpy as np
from OOS_Case.create_features_v2 import process
from multiprocessing.dummy import Pool as ThreadPool 



df_pb = pd.read_csv('---.csv')
list_df = []
for i in range(-) :
    df = df_pb.loc[---]
    list_df.append(df)



pool = ThreadPool(4) 
pool.map(process, list_df)

Все операции в моей функции процесса - чистые операции Pandas и Numpy

Спасибо за любые советы, альтернативные или лучшие рекомендации, которые вы могли бы датья!

...