以下是要求-:
class MultiMachineDoWork:
def Function1(self, A, B):
return A+B
def Function2(self, A, B):
return A*B
def Function3(self, A, B):
return A**B
def Function4():
X = MultiMachineDoWork.Function1(5,10)
Y = MultiMachineDoWork.Function2(5,10)
Z = MultiMachineDoWork.Function3(5,10)
return X+Y+Z
假设Function1、Function2和Function3各自花费很长时间,那么最好在分布式模型上分别在机器L、M&N上并行运行它们。 函数4可以在P机上运行,它可以收集结果并进行组合。在
MapReduce的工作原理与之类似,但对数据的不同部分运行相同的函数。。。 Dask/Ray/芹菜在这个案例研究中有什么用处吗。。。在
如果必须构建自定义解决方案,解决方案应该如何进行。。。在
Pydoop/Spark与Dask本地群集?在
现实生活案例研究-ML的集成模型分类。一函数用于RandomForest,一个用于支持向量,一次用于XG增压。全部在同一数据集上运行。。。在
可以使用python中的各种框架跨多个机器/节点分布任务/功能/计算。最常见和最广泛使用的是Ray、Dask和PySpark,使用哪一种取决于用例。在
对于简单的函数/任务分布,可以使用光线库(@射线遥控器)分发,然后使用get方法集成/计算结果。同样可以通过达斯克实现。在
https://rise.cs.berkeley.edu/blog/modern-parallel-and-distributed-python-a-quick-tutorial-on-ray/
我更喜欢Spark/Pyspark,当您处理一个大型数据集时,您希望执行某种ETL操作,以便将巨大的数据集分布在多个节点上,然后对其执行一些转换或操作。注意Spark或mapreduce概念假设您将计算引入数据,它将在不同的数据子集上执行相同/相似的任务,并最终执行一些聚合(包括洗牌)。在
Spark/Pyspark通过其内置的随机森林或梯度提升树算法支持集成。但是spark(开箱即用)目前不支持在单独的节点/执行器上训练独立的模型(随机森林、梯度树、logistic回归等)。尽管这可能是通过定制的spark代码实现的,就像他们在内部为random forest(训练多个决策树)所做的那样。在
使用dask和sklearn可以很容易地实现真实场景的感知。Dask与scikit learn xgboost等集成良好,可以使用joblib context manager跨分布式集群节点/工作线程执行并行计算。在
现在对于集成场景,您可以使用scikit learn的不同模型/算法(random forest、SGD、SVM、Logistic回归),并使用投票分类器将多个不同的模型(即子估计量)组合成一个单独的模型,该模型(理想情况下)比任何单独的模型(即集成概念的基础)更强大。在
使用Dask将在集群中的不同机器上训练单独的子估计器/模型。在
https://docs.dask.org/en/latest/use-cases.html
高级代码看起来像-
**以上可以通过Ray等其他分布式框架实现/火花等同样,但它需要更多的定制编码。在
希望这些信息对你有帮助!在
相关问题 更多 >
编程相关推荐