使用Flask并行化深度学习模型的训练

时间:2017-12-19 14:36:03

标签: python flask multiprocessing celery

我们假设我正在创建以下服务: @app.route('/train_model' , methods = ['GET' , 'POST'])

假设有多人想使用上述服务训练模型(使用不同的数据集)。

所以,我现在需要加入并行性。

所以必须添加以下内容

注意:以下不是完整的代码

def make_celery(app):
    celery = Celery(app.import_name, broker = 'redis://localhost:6379',#amqp://localhost//,
                    backend = 'redis://localhost:6379')
    celery.conf.update(app.config)
    TaskBase = celery.Task
    class ContextTask(TaskBase):
        abstract = True
        def __call__(self, *args, **kwargs):
            with app.app_context():
                return TaskBase.__call__(self, *args, **kwargs)
    celery.Task = ContextTask
    return celery

app = Flask(__name__)
celery = make_celery(app)

@app.route('/train_qna_service' , methods = ['GET' , 'POST'])
def uploadfile():
    train_model.delay()

@celery.task(name='main.train_model')
def train_model():
    # do appropriate task to train the model
    pass

但如果我使用train_model.delay(),我就不会得到结果。如果我使用train_model.wait(),则其他人无法点击该服务。如果我使用multiprocessing模块,还有其他人无法点击该服务。

使用刻录服务支持多种培训请求的最佳方法是什么?

0 个答案:

没有答案