我有一个 sklearn 模型,我想使用 joblib.dump 将泡菜文件保存在我的 s3 存储桶中
我joblib.dump(model, 'model.pkl')以前在本地保存模型,但不知道如何将其保存到s3存储桶。
s3_resource = boto3.resource('s3')
s3_resource.Bucket('my-bucket').Object("model.pkl").put(Body=joblib.dump(model, 'model.pkl'))
Run Code Online (Sandbox Code Playgroud)
我希望腌制文件在我的 s3 存储桶上。
我正在使用 Lambda 处理程序加载腌制的机器学习模型,因此我需要 sklearn(如果未包含,我会收到“ModuleNotFoundError:没有名为 'sklearn' 的模块”)
因此,我使用 sklearn 在 Docker 中创建了一个新的部署包。
但是当我尝试上传新的 lambda.zip 文件时,我无法保存 lambda 函数。我收到错误:解压后的大小必须小于 262144000 字节
我做了一些谷歌搜索,发现了两个建议:(1)将 CLFAG 与 PIP 结合使用,(2)使用 Lambda Layers。
我不认为图层会起作用。将我的部署包的部分内容移动到层不会减少总大小(并且AWS 文档指出“函数和所有层的解压缩总大小不能超过解压部署包大小限制 250 MB”。
CFLAGS 听起来很有希望,但我以前从未使用过 CFLAGS,并且遇到了错误。
我正在尝试添加标志:-Os -g0 -Wl,--strip-all
在 CLFAGS 之前,我的 docker pip 命令是:pip3 install requests pandas s3fs datetime bs4 sklearn -t ./
首先我尝试:pip3 install requests pandas s3fs datetime bs4 sklearn -t -Os -g0 -Wl,--strip-all ./
这产生了各种错误“没有这样的选项:-g”
然后我尝试了CFLAGS = -Os -g0 -Wl,--strip-all pip3 …