Я пытаюсь использовать Google Cloud Datalab для масштабирования преобразования данных в Pandas.
На моей машине все отлично работает с небольшими файлами (сохраняя первые 100000 строк моего файла), но работа с полным входным CSV-файлом 8G приводила к ошибке памяти.
Я думал, что виртуальная машина Datalab поможет мне. Сначала я попытался использовать виртуальную машину с Highmem, доведя до 120 ГБ памяти. Там я продолжаю получать сообщение об ошибке: ядро похоже, умерло. Он перезапустится автоматически. Я нашел кое-что здесь: https://serverfault.com/questions/900052/datalab-crashing-несмотря на высокую память-и-процессор Но я не использую TensorFlow, так что это не сильно помогло.
Поэтому я попробовал другой подход, обработку фрагментов и распараллеливание на большем количестве ядер. Он хорошо работает на моей машине (4 ядра, 12 Гб оперативной памяти), но требует многочасовых вычислений.
Поэтому я хотел использовать виртуальную машину Datalab с 32 ядрами для ускорения работы, но тут через 5 часов первые потоки так и не завершились, когда на моей локальной машине уже завершено 10.
Так очень просто:
Можно ли использовать Datalab как способ масштабирования преобразований Pandas? Почему я получаю худшие результаты с теоретически намного лучшей виртуальной машиной, чем моя локальная машина?
Некоторый код:
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.
Спасибо за любой совет, альтернативу или лучший практический совет, который вы могли бы мне дать!
Похоже, что GCP Datalab не поддерживает многопоточность:
Each kernel is single threaded. Unless you are running multiple notebooks at the same time, multiple cores may not provide significant benefit.
Дополнительную информацию вы можете найти здесь
Год спустя я узнал несколько полезных передовых практик: