GPU 会加速 ML 任务中的数据预处理吗?
Does GPU accelerate data preprocessing in ML tasks?
我正在做机器学习(价值预测)任务。当我预处理数据时,需要很长时间。我有一个包含大约 640000 行的 csv 文件,我试图减去连续行的日期并计算持续时间。 csv 文件看起来像附件一样。比如2011-08-17到2011-08-19需要2天,我想在“持续时间”一栏写2。我使用 python 日期时间函数来执行此操作。并且花费了很多时间。
data = pd.read_csv(f'{proj_dir}/raw data/measures.csv', encoding="cp1252")
file = data[['ID', 'date', 'value1', 'value2', 'duration']]
def time_subtraction(date, prev_date):
diff = datetime.strptime(date, '%Y-%m-%d') - datetime.strptime(prev_date, '%Y-%m-%d')
diff_days = diff.days
return diff_days
def calculate_time_duration(dataframe, set_0_indices):
for i in range(dataframe.shape[0]):
# For each patient, sets "Time Duration" at the first measurement to be 0
if i in set_time_0_indices.values:
dataframe.iloc[i, 4] = 0 # set time duration to 0 (beginning of this patient)
else: # time subtraction
dataframe.iloc[i, 4] = time_subtraction(date=dataframe.iloc[i, 1], prev_date=dataframe.iloc[i-1, 1])
return dataframe
# I am running on Google Colab. This line takes very long.
result = calculate_time_duration(dataframe = file, set_0_indices = set_time_0_indices)
我想知道是否有任何方法可以加速这个过程。使用 GPU 有帮助吗?我可以访问远程 GPU,但我不知道使用 GPU 是否有助于数据预处理。顺便问一下,GPU 在什么情况下才能真正让事情变得更快?提前致谢!
what my data looks like
关于以更快的方式更新您的数据,请参阅 this post。
关于使用 GPU 的速度改进:如果有优化操作实际上可以在 CPU 上 运行,则只能使用 GPU。像你这样的预处理通常不在范围内。您还必须考虑到您需要先将数据传输到 GPU,然后再计算任何内容,然后再将结果传回。在您的情况下,这将比实际加速花费更长的时间,特别是因为您对数据的操作非常简单。我确信使用正确的 pandas 语法会导致您期望的预处理速度加快。
我正在做机器学习(价值预测)任务。当我预处理数据时,需要很长时间。我有一个包含大约 640000 行的 csv 文件,我试图减去连续行的日期并计算持续时间。 csv 文件看起来像附件一样。比如2011-08-17到2011-08-19需要2天,我想在“持续时间”一栏写2。我使用 python 日期时间函数来执行此操作。并且花费了很多时间。
data = pd.read_csv(f'{proj_dir}/raw data/measures.csv', encoding="cp1252")
file = data[['ID', 'date', 'value1', 'value2', 'duration']]
def time_subtraction(date, prev_date):
diff = datetime.strptime(date, '%Y-%m-%d') - datetime.strptime(prev_date, '%Y-%m-%d')
diff_days = diff.days
return diff_days
def calculate_time_duration(dataframe, set_0_indices):
for i in range(dataframe.shape[0]):
# For each patient, sets "Time Duration" at the first measurement to be 0
if i in set_time_0_indices.values:
dataframe.iloc[i, 4] = 0 # set time duration to 0 (beginning of this patient)
else: # time subtraction
dataframe.iloc[i, 4] = time_subtraction(date=dataframe.iloc[i, 1], prev_date=dataframe.iloc[i-1, 1])
return dataframe
# I am running on Google Colab. This line takes very long.
result = calculate_time_duration(dataframe = file, set_0_indices = set_time_0_indices)
我想知道是否有任何方法可以加速这个过程。使用 GPU 有帮助吗?我可以访问远程 GPU,但我不知道使用 GPU 是否有助于数据预处理。顺便问一下,GPU 在什么情况下才能真正让事情变得更快?提前致谢!
what my data looks like
关于以更快的方式更新您的数据,请参阅 this post。 关于使用 GPU 的速度改进:如果有优化操作实际上可以在 CPU 上 运行,则只能使用 GPU。像你这样的预处理通常不在范围内。您还必须考虑到您需要先将数据传输到 GPU,然后再计算任何内容,然后再将结果传回。在您的情况下,这将比实际加速花费更长的时间,特别是因为您对数据的操作非常简单。我确信使用正确的 pandas 语法会导致您期望的预处理速度加快。