Python Dask延迟错误-属性错误:'_螺纹。_本地';对象没有属性';价值';

Python Dask延迟错误-属性错误:'_螺纹。_本地';对象没有属性';价值';,python,keras,dask,dask-distributed,dask-delayed,Python,Keras,Dask,Dask Distributed,Dask Delayed,我一直在绞尽脑汁想弄明白为什么我不能在Dask上执行这个并行函数。本质上,我有一个函数,加载到keras模型中(我使用mlflow存储模型),然后对我分批发送的一些输入数据使用模型的预测方法。这段代码(如下)导致以下错误: AttributeError: '_thread._local' object has no attribute 'value' 代码示例: @delayed def load_and_predict(input_data_chunk): def contrast

我一直在绞尽脑汁想弄明白为什么我不能在Dask上执行这个并行函数。本质上,我有一个函数,加载到keras模型中(我使用mlflow存储模型),然后对我分批发送的一些输入数据使用模型的预测方法。这段代码(如下)导致以下错误:

AttributeError: '_thread._local' object has no attribute 'value'
代码示例:

@delayed
def load_and_predict(input_data_chunk):

    def contrastive_loss(y_true, y_pred):
            margin = 1
            square_pred = K.square(y_pred)
            margin_square = K.square(K.maximum(margin - y_pred, 0))
            return K.mean(y_true * square_pred + (1 - y_true) * margin_square)

    mlflow.set_tracking_uri('<tracking_uri>')
    mlflow.set_experiment('experiment_name')
    runs = mlflow.search_runs()
    artifact_uri = runs.loc[runs['start_time'].idxmax()]['artifact_uri']
    model = mlflow.keras.load_model(artifact_uri + '/model', custom_objects={'contrastive_loss': contrastive_loss})
    y_pred = model.predict(input_data_chunk)
    return y_pred

with Client(<scheduler_ip:port>) as client:
    batch_array = np.array_split(X_test, 10)
    results = []
    for batch in batch_array:
        prediction = load_and_predict(batch)
        results.append(prediction)

compute(*results)
@延迟
def加载和预测(输入数据块):
def对比损失(y_真,y_pred):
保证金=1
平方前=K.平方(y\u前)
边距×平方=K平方(K最大值(边距-y×pred,0))
返回K.均值(y_真*平方_pred+(1-y_真)*边距_平方)
mlflow.set_tracking_uri(“”)
mlflow.set_实验('实验名称')
runs=mlflow.search_runs()
artifact\u uri=runs.loc[运行['start\u time'].idxmax()]['artifact\u uri']
model=mlflow.keras.load_model(artifact_uri+'/model',自定义_对象={'contractive_loss':contractive_loss})
y_pred=model.predict(输入数据块)
返回y_pred
使用Client()作为客户端:
批处理数组=np.数组拆分(X\u测试,10)
结果=[]
对于批次数组中的批次:
预测=负载和预测(批次)
结果追加(预测)
计算(*结果)

诚然,我对Dask是一个新手,所以任何关于这个问题的专家指导都将不胜感激

如果要使用在上下文中创建的
客户机
进行计算,则
compute()
行也必须在上下文中:请缩进它