Я пытаюсь использовать 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
Спасибо за любые советы, альтернативные или лучшие рекомендации, которые вы могли бы датья!