我训练了一个scikit学习模型(~70MB),我想用它来对apachebeam进行预测。在
但是,我想知道使用parDo
是否会为每一行加载模型,从而使用大量的资源
class PredictClass(beam.DoFn):
def process(self, row):
call([...]) # copy the model from remote location
model = joblib.load('model_path.pk1')
在我的管道中:
^{pr2}$有更好的方法吗? 我应该在哪里加载经过训练的分类器?在
如果您想为整个
DoFn
加载一些资源,您应该使用beam.DoFn
类的start_bundle
方法(实现它并在那里加载模型),或者手动实现延迟初始化。这将允许您加载模型一次*,然后在apachebeam调用实现的process
方法时使用它。在这不会是一次,但你可以用这种方式来解释。在
这里有一个很好的解释和一些性能测试,用于在apachebeampythonsdkApache Beam: DoFn.Setup equivalent in Python SDK中初始化可重用和昂贵的对象
相关问题 更多 >
编程相关推荐