帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:for  GPU  随机  Building  rand  随机森林  构建  
Building random forests on GPU

  • 源代码名称:CudaTree
  • 源代码网址:http://www.github.com/EasonLiao/CudaTree
  • CudaTree源代码文档
  • CudaTree源代码下载
  • Git URL:
    git://www.github.com/EasonLiao/CudaTree.git
  • Git Clone代码到本地:
    git clone http://www.github.com/EasonLiao/CudaTree
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/EasonLiao/CudaTree
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • CudaTree

    因为在随机森林中做了一个sigificant改进,所以我决定停止维护 CudaTree,而且它的维护也很好。

    CudaTree是breiman随机森林的Leo 实现,适合于在GPU上运行。 随机森林是随机决策树集合的集合,用来预测新标签。 CudaTree与集成中每个独立树的构建并列,因此能够比最新版本的 scikits学习更快的train。

    我们还实现了一个混合版本的随机森林,使用多个GPU和多核CPU来充分利用你的系统所拥有的所有资源。 对于多核版本,我们使用scikits学习随机林,你还可以提供它的他多核实现,如 WiseRF。

    用法

    import numpy as np
     from cudatree import load_data, RandomForestClassifier
     x_train, y_train = load_data("digits")
     forest = RandomForestClassifier(n_estimators=50, verbose=True, bootstrap=False)
     forest.fit(x_train, y_train, bfs_threshold=4196)
     forest.predict(x_train)

    对于混合版本:

    import numpy as np
     from cudatree import load_data
     from hybridforest import RandomForestClassifier
     from PyWiseRF import WiseRF
     x_train, y_train = load_data("digits")
     #We gonna build random forest on two GPU and 6 CPU core. #For the GPU version we use CudaTree, CPU version we use WiseRF forest = RandomForestClassifier(n_estimators=50, 
     n_gpus=2, 
     n_jobs=6, 
     bootstrap=False, 
     cpu_classifier= WiseRF)
     forest.fit(x_train, y_train)
     forest.predict(x_train)

    安装

    你应该能够通过运行以下命令从它的PyPI软件包安装 CudaTree:

    
    pip install cudatree
    
    
    
    

    依赖项

    CudaTree是 python 2.7的writen,它依赖于:

    的限制:

    重要的是要记住,一个适合你的计算机内存的数据集不一定适合一个更小的gpu内存。 此外,在树结构中CudaTree使用了几个临时数组,这将限制可用空间。 下面给出适合给定数据集的决策树所需的总字节数的公式。 如果你的GPU上的数量少于这个数量,那么CudaTree将失败。

    [gpu memory = dataset + 2 *samples*features*ceil(log2(samples)/8) + samples*features] ( https://raw.github.com/EasonLiao/CudaTree/master/doc/gpumem.png )

    例如,假设你有一个培训数据集占用 200 MB,示例= 10000和特征数为 3000,所需的GPU总内存为:

    200MB + ( 2 * 3000 * 10000 * 2 + 3000 * 10000 )/1024/1024 = 314 MB

    除了内存需求之外,还有其他一些硬编码到CudaTree中的限制:

    • 允许的最大功能数为 65,536.
    • 允许的最大类别数为 5000 ( 当类别数量为 <=100时,CudaTree表现最佳)。
    • 你的NVIDIA GPU必须具有计算能力> = 1.3。
    • 目前唯一的分裂准则是基尼杂质,这意味着CudaTree还不能回归( 连续输出的方差分解)。

    因为scikit学会了改变随机森林的能力。 因此,我们可能比scikit慢一些在一些数据集上学习。 无论如何,如果你使用混合模式,你总是可以获得性能提升。

    实现细节

    树首先以深度的顺序构造,并为数据的每个 node 子集单独的核心启动。 最终,数据被分解成非常小的子集,此时CudaTree切换到每个内核启动的多个子集的宽度第一组。



    文章标签:for  构建  Building  rand  随机  GPU  随机森林  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语