如何为依赖项指定版本,以便每个都兼容并保持在大小限制内?

数据挖掘 深度学习 火炬 火炬 图书馆 法泰
2022-03-03 21:42:58

我正在尝试将 Web 应用程序部署到 Heroku。免费层限制为500 MB

我正在使用我的 resnet34 模型作为.pkl文件。

我使用 fastai 库创建模型。

该项目需要 torch 和 torchvision 作为依赖项。

但不指定依赖项将下载最新版本的torch,仅750 MB,超过内存限制。

因此,我将 torchvision 版本指定为并在 requirements.txt 文件中0.2.2为 torch 指定轮子。v1.1.0现在,这引发了其他问题。

例如,我从 Heroku 构建日志中收到此错误消息-

错误:torchvision 0.2.2 要求 tqdm==4.19.9,但您将拥有不兼容的 tqdm 4.48.0。

但是,如果我将 tqdm 的版本指定为4.19.9,则某些调用的库将spacey变得不兼容,并且应用程序将失败。如果我安装更新版本的 torchvision,应用程序大小将超过允许的限制。

我该如何解决这个问题?如何找出哪些依赖版本相互兼容,并且总大小不超过500 MB有没有简单的方法可以做到这一点?

1个回答

到目前为止,我了解到这是一个反复试验的过程。

最好的解决方案是使用库的工作组合查找已经完成此操作的项目。

我使用了这个requirements.txt文件,它工作正常:

gunicorn
flask
numpy
https://download.pytorch.org/whl/cpu/torch-1.1.0-cp36-cp36m-linux_x86_64.whl
torchvision==0.2.2
fastai==1.0.52
jupyter

Web 应用程序运行良好,并且没有超出允许的大小。

尽管 Heroku 的大小限制为 500 MB,但它们的软限制为 300 MB。这些库、它们的依赖项和模型文件加起来超过了导致响应时间稍长的部分。