我应该如何在 AWS lambda 实现中处理 joblib 多处理?

2023-12-25

我在 AWS 中有一个相对简单的线性回归 lambda。该函数被调用的每个实例日志都会显示以下内容:

/opt/python/sklearn/externals/joblib/_multiprocessing_helpers.py:38: UserWarning: [Errno 38] Function not implemented. joblib will operate in serial mode
warnings.warn('%s. joblib will operate in serial mode' % (e,))

我怀疑这是由于 sklearn 在 lambda(即“无服务器”)上运行并试图根据这个问题 https://stackoverflow.com/questions/2009278/python-multiprocessing-permission-denied and 这个 GH 问题 https://github.com/joblib/joblib/issues/391.

我还从 GH 了解到,这不是一个“可修复”的问题,在该硬件上部署这些依赖项时总会发生这种情况。我正在返回我的预期结果(尽管我目前已最大化默认的最小 lambda 内存 128mb)。

我的目标是控制警告,并知道是否有办法:

  • 停止 sklearn 寻找多处理,从而防止发出警告
  • capture 这个具体的警告并防止它从我的函数传递到 cloudwatch 日志中
  • 如果两者都可能,从 aws 架构/pythonic 的观点来看,哪一个更可取?

建议的解决方案都不适合我。在这里深入研究 joblib 的源代码:https://github.com/joblib/joblib/blob/master/joblib/_multiprocessing_helpers.py https://github.com/joblib/joblib/blob/master/joblib/_multiprocessing_helpers.py,我发现了环境变量JOBLIB_MULTIPROCESSING这似乎控制 joblib 是否尝试使用多处理。

将其设置为0为我解决了问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该如何在 AWS lambda 实现中处理 joblib 多处理? 的相关文章

随机推荐