Parallel processing Scikit学习使用嵌套并行进行分布式Dask?

Parallel processing Scikit学习使用嵌套并行进行分布式Dask?,parallel-processing,scikit-learn,data-science,dask,joblib,Parallel Processing,Scikit Learn,Data Science,Dask,Joblib,例如,假设我有以下代码: vectorizer = CountVectorizer(input=u'filename', decode_error=u'replace') classifier = OneVsRestClassifier(LinearSVC()) pipeline = Pipeline([ ('vect', vectorizer), ('clf', classifier)]) with parallel_backend('distributed', scheduler_

例如,假设我有以下代码:

vectorizer = CountVectorizer(input=u'filename', decode_error=u'replace')
classifier = OneVsRestClassifier(LinearSVC())
pipeline = Pipeline([
('vect', vectorizer),
('clf', classifier)])

 with parallel_backend('distributed',    scheduler_host=host_port):
    scores = cross_val_score(pipeline, X, y, cv=10)
如果我执行这段代码,我可以在dask webview(通过Bokeh)中看到创建了10个任务(每个折叠1个)。但是,如果我执行:

(我知道X和y应该分为训练和测试,但这只是为了测试目的)

我可以看到为每个y类创建一个任务(在我的例子中是20个)。有没有一种方法可以让交叉值与基础的OneVsRestClassifier并行运行?还是原始代码

with parallel_backend('distributed', scheduler_host=host_port):
    scores = cross_val_score(pipeline, X, y, cv=10)

并行运行OneVsRestClassifier以及并行运行cross_val_分数,但我没有看到它?我是否必须使用dask distributed手动实现此功能?

joblib的并行后端设计目前过于有限,无法处理嵌套的并行调用。此问题可在此处跟踪:

我们还需要扩展joblib的分布式后端以使用它

with parallel_backend('distributed', scheduler_host=host_port):
    scores = cross_val_score(pipeline, X, y, cv=10)