Python 在谷歌云虚拟机上加速和优化scikit学习

Python 在谷歌云虚拟机上加速和优化scikit学习,python,machine-learning,scikit-learn,google-cloud-platform,virtual-machine,Python,Machine Learning,Scikit Learn,Google Cloud Platform,Virtual Machine,我在Ubuntu 16.04的谷歌云虚拟机上运行Jupyter笔记本。虚拟机有8个CPU和32 GB内存(可以轻松增加)。 当我运行一些ML脚本时,我可以看到VM没有完全加载。 我注意到为GridSearchCV添加n_jobs=16有帮助:虚拟机的加载率为100%,计算速度更快 有两个问题: 我应该寻找哪些scikit学习功能的其他参数来确保im使用VM的全部功能?例如,使用拟合、变换、预测方法 虚拟机中是否有其他参数(除了CPU和内存)需要更改以加快ML任务的速度 谢谢, Alex就sk

我在Ubuntu 16.04的谷歌云虚拟机上运行Jupyter笔记本。虚拟机有8个CPU和32 GB内存(可以轻松增加)。 当我运行一些ML脚本时,我可以看到VM没有完全加载。 我注意到为
GridSearchCV
添加
n_jobs=16
有帮助:虚拟机的加载率为100%,计算速度更快

有两个问题:

  • 我应该寻找哪些scikit学习功能的其他参数来确保im使用VM的全部功能?例如,使用拟合、变换、预测方法
  • 虚拟机中是否有其他参数(除了CPU和内存)需要更改以加快ML任务的速度
谢谢,
Alex

就sklearn的并行化而言,一切都由
n_jobs
控制(很多都被底层的BLAS/LAPACK构建所隐藏;见下文!)

现在,在您的示例中有两个不同的级别:

  • A:某些方法支持的算法级并行化
    • e、 g
    • 在算法级别激活:例如
      clf=RandomForestClassifier(n_jobs=10)
    • 粒度和效果很难读出文档:对于RandomForest,如果
      n_jobs=n_jobs
如果使用了A(同样:并非所有内容都支持),那么它也用于预测和转换等方法

在这两个候选者中,B(稍微)粒度较小,而B的情况更为相似。如果满足完全加速条件(见上文);我只会在fit期间使用此方法。需要时,可以在拟合后重置估计器的
n_作业
。但这并不是期望,这将有很大帮助

其他(更明显的硬件方面):

  • SSD与HDD(如果学习有点IO限制;没有测试很难说)
另一件非常重要的事:

  • 使用可用的最快/实现,并确保其构建支持并行化(在这些例程中花费大量时间;BLAS示例:矩阵向量乘法;LAPACK示例:求解线性方程组)
    • 安装/链接在numpy/scipy安装时完成;不学习
      • 虽然我不确定第三方软件,如,和公司在使用中(由sklearn带来)会发生什么;哪个也会使用BLAS
      • 我认为这些LIB带来了他们自己的简化BLAS代码,这意味着:我们不在乎
    • 通常的候选者有:ATLAS、OpenBLAS、英特尔的MKL(直觉:从慢到快)等等
    • 它的优点之一是它是开箱即用的