我正在使用通过以下方式获得的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}} documentation,cuML
节点拆分算法与cuML
不同。因此,我更改了sklearn
并尝试了各种split_algo = 0
值-没有成功。我还测试了n_bins
在h2o
上的RF实现,并且random_forest_demo
和h2o
在大多数情况下给出的结果非常相似。
SO上有一个similar question,但似乎此问题与sklearn
版本0.12有关,应该已经在我使用的版本0.14中修复。因此,肯定还有其他事情在发生。
我已经比较了RF的cuML
和sklearn
参数设置,我认为它们应该足够接近才能产生相似的结果。我错过了一些配置设置吗?或者这可能与硬件有关?
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