cuML与sklearn:随机森林分类器的不同精度

时间:2020-06-23 09:33:10

标签: python machine-learning scikit-learn random-forest rapids

我正在使用通过以下方式获得的Rapidsai泊坞窗容器

docker pull rapidsai/rapidsai:cuda10.0-runtime-ubuntu18.04
docker run --gpus all --rm -it -p 8888:8888 -p 8787:8787 -p 8786:8786 \
    rapidsai/rapidsai:cuda10.0-runtime-ubuntu18.04

并已通过

启动
docker run --memory=30g --cpus=12 --gpus all --rm -it \
    -p 8888:8888 -p 8787:8787 -p 8786:8786 \
    rapidsai/rapidsai:cuda10.0-runtime-ubuntu18.04-py3.6

当我通过JupyterLab运行random_forest_mnmg_demo时,得到以下准确性

SKLearn accuracy:   0.867
CuML accuracy:      0.833

笔记本上写着

由于算法中的随机性,您可能会看到准确性的细微变化

我不会将此区别称为“轻微”。

作为旁注:我还测试并修改了另一个RF笔记本(random_forest_demo),观察到精度差异高达0.95与0.75(对于不同的数据集大小和RF参数)。根据{{​​1}} documentationcuML节点拆分算法与cuML不同。因此,我更改了sklearn并尝试了各种split_algo = 0值-没有成功。我还测试了n_binsh2o上的RF实现,并且random_forest_demoh2o在大多数情况下给出的结果非常相似。

SO上有一个similar question,但似乎此问题与sklearn版本0.12有关,应该已经在我使用的版本0.14中修复。因此,肯定还有其他事情在发生。

我已经比较了RF的cuMLsklearn参数设置,我认为它们应该足够接近才能产生相似的结果。我错过了一些配置设置吗?或者这可能与硬件有关?

cuML输出(在主机上执行,GPU是“具有Max-Q设计的GeForce GTX 1050 Ti”)

nvidia-smi

+-----------------------------------------------------------------------------+ | NVIDIA-SMI 450.36.06 Driver Version: 450.36.06 CUDA Version: 11.0 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 GeForce GTX 105... On | 00000000:01:00.0 Off | N/A | | N/A 64C P0 N/A / N/A | 1902MiB / 4042MiB | 8% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ 给出的Cuda版本

nvcc --version

0 个答案:

没有答案