You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AWS Lambda中调用PyCaret predict_model触发只读文件系统异常

解决AWS Lambda中PyCaret预测时的只读文件系统错误

错误根源是PyCaret依赖的joblib库默认尝试在/var/folders目录写入缓存数据,但AWS Lambda的沙箱环境仅开放/tmp目录作为可写区域,其他目录均为只读,导致写入失败。

以下是几种可行的解决办法:

  • 修改joblib缓存目录到Lambda可写路径
    在Lambda函数代码开头添加环境变量配置,将joblib的临时目录指向/tmp:

    import os
    import tempfile
    # 强制joblib使用Lambda可写的/tmp目录作为缓存路径
    os.environ['JOBLIB_TEMP_FOLDER'] = tempfile.gettempdir()
    
  • 禁用PyCaret Pipeline的缓存功能
    PyCaret的模型Pipeline默认启用joblib缓存,直接禁用即可避免写入操作:

    from pycaret.classification import load_model, predict_model
    
    # 加载预训练模型
    trained_model = load_model('your_model_path')
    # 关闭缓存
    trained_model._memory = None
    # 执行预测
    prediction = predict_model(trained_model, raw_score=True, data=df)
    

    若你是在Lambda中训练模型,也可以在初始化阶段直接禁用缓存:

    from pycaret.classification import setup
    
    # setup时指定memory=None禁用缓存
    setup(data=train_df, target='target_column', memory=None)
    
  • 预生成缓存文件并打包(可选)
    若需保留缓存功能,可在本地训练模型时让joblib生成完整缓存文件,将缓存目录(默认是本地的/tmp/joblib)一并打包到Lambda部署包中,然后在Lambda代码中指定joblib读取该打包后的缓存路径。此方法步骤较繁琐,仅推荐有特殊缓存需求的场景。

本地及Docker环境可正常运行,是因为这些环境没有严格的文件系统读写限制,允许joblib在默认路径写入缓存。

内容的提问来源于stack exchange,提问作者Aks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:34:53