1

我正在使用通过获得的 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大部分时间都给出了非常相似的结果。h2osklearn

SO上有一个类似的问题,但似乎这个问题与cuML0.12版有关,应该在我正在使用的0.14版中修复。所以肯定有其他事情发生。

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

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
4

0 回答 0