0

我是使用 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'])

我在这里缺少什么?

4

1 回答 1

0

虽然,我将帮助您解决无法访问所有 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。在您的代码中,您要读取两次数据 - 一次是使用 pandas 托管 [CPU],一次是从 pandas 托管 cudf [GPU]。这是不必要的 - 而且您在读取时失去了 GPU 加速的所有好处。在大型数据集上,与 pandas 相比,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。此信息也可在该链接中找到,该链接与上述链接在同一页面中。不需要for循环:)。

对于其余部分,我假设您将 cuml 用于您的机器学习算法,例如 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

于 2020-04-28T21:46:24.387 回答