下面是用cuDF编写的python代码,以加速这个过程。但与我的4核心本地机器cpu相比,我没有看到任何速度上的差异。GPU配置为4 x NVIDIA Tesla T4
def arima(train):
h = []
for each in train:
model = pm.auto_arima(np.array(ast.literal_eval(each)))
p = model.predict(1).item(0)
h.append(p)
return h
for t_df in pd.read_csv("testset.csv",chunksize=1000):
t_df = cudf.DataFrame.from_pandas(t_df)
t_df['predicted'] = arima(t_df['prev_sales'])我在这里错过了什么?
发布于 2020-04-28 21:46:24
同时,我将帮助您解决不访问所有GPU的问题,我将与您分享一个性能提示:如果您的所有数据都适合于单个GPU,那么您应该使用cudf对单个GPU进行处理,因为它要快得多,因为它不需要任何编排开销。如果没有,请继续阅读:)
您没有使用这4个GPU的原因是因为您没有使用dask-cudf。cudf是一个单独的GPU库。dask-cudf允许您将其扩展到多个GPU和多个节点,或者处理“大于GPU内存”大小的数据集。
这里是一个很好的起点:https://docs.rapids.ai/api/cudf/stable/10min.html
至于你的速度问题,你应该通过cudf直接将CSV读入GPU,如果可能的话。在您的代码中,您将读取数据两次--一次用于与熊猫一起托管CPU,另一次用于支持熊猫的GPU。这是不必要的-而且你失去了GPU加速的所有好处在读。在大型数据集上,与熊猫相比,cudf将给您一个相当不错的文件读取速度。
import dask_cudf
df = dask_cudf.read_csv("testset.csv", npartitions=4) # or whatever multiples of the # of GPUs that you have然后从那里出发。一定要设置一个客户。https://docs.rapids.ai/api/cudf/stable/10min.html#Dask-Performance-Tips。在该链接中也可以找到此信息,该链接与上面链接的页面相同。不需要循环:)。
至于剩下的部分,我假设你在机器学习中使用累积值,就像ARIMA一样。https://docs.rapids.ai/api/cuml/stable/api.html?highlight=arima#cuml.tsa.ARIMA。下面是一个示例笔记本:https://github.com/rapidsai/cuml/blob/branch-0.14/notebooks/arima_demo.ipynb
https://stackoverflow.com/questions/61345809
复制相似问题