我正在使用通过获得的 rapidsai docker 容器
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
当我random_forest_mnmg_demo
通过 JupyterLab 运行时,我得到以下准确度
SKLearn accuracy: 0.867
CuML accuracy: 0.833
虽然笔记本上说
由于算法的随机性,您可能会看到精度略有不同
我不会称这种差异为“轻微”。
附带说明:我还测试并修改了另一个 RF 笔记本 ( random_forest_demo
),观察到的精度差异高达 0.95 和 0.75(针对不同的数据集大小和 RF 参数)。根据cuML
文档,cuML
节点拆分算法不同于sklearn
. 因此,我改变split_algo = 0
并尝试了各种n_bins
价值观——但没有成功。我还测试h2o
了 s RF 实现,并且random_forest_demo
大部分时间都给出了非常相似的结果。h2o
sklearn
SO上有一个类似的问题,但似乎这个问题与cuML
0.12版有关,应该在我正在使用的0.14版中修复。所以肯定有其他事情发生。
我已经比较了RF 的sklearn
和cuML
参数设置,我认为它们应该足够接近以产生相似的结果。我错过了一些配置设置吗?或者这可能与硬件有关?
nvidia-smi
输出(在主机上执行,GPU 是“GeForce GTX 1050 Ti with Max-Q Design”)
+-----------------------------------------------------------------------------+
| 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
Cuda compilation tools, release 10.0, V10.0.130