根据其他人的建议,我要检查的第一件事是找出为什么你的回购是如此之大,因为模型尺寸只有83MB。
鉴于您无法减小大小,可以选择卸载部分repo,但要做到这一点,您仍然需要知道哪些文件占用了空间。在heroku文档中建议卸载。 Slug大小限制为500MB,如下所述: https://devcenter.heroku.com/articles/slug-compiler#slug-size 而且我认为这与在需要更改资源时启动新实例所需的时间有关。但是,如果您有特别大的文件,则可以使用卸载。有关卸载的更多信息: https://devcenter.heroku.com/articles/s3
这个答案假设您的模型只有83MB,并且您的存储库目录的总大小(可能小得多)小于500MB。
可能存在一些问题,但您需要做的显而易见的事情是将git存储库减少到500MB以下。
首先,尝试以下命令来减小回购的大小(请参阅 这篇博文 以供参考):
heroku plugins:install heroku-repo heroku repo:gc --app your-app-name heroku repo:purge_cache --app your-app-name
这些 威力 解决你的问题。
另一个潜在的问题是,您在某个时刻提交了另一个(大型)模型,并在后续提交中将其从您的仓库中删除。 git repo现在在.git文件夹和git历史记录中包含该模型的一个版本。有一些修复,但如果您不需要您的提交历史记录,您可以将repo复制到另一个文件夹并创建一个新的git仓库与 git init 。用“初始提交”之类的东西提交所有内容,然后尝试只用一次提交到Heroku来推送这个repo。可能会是一个小得多的回购规模。
git init
我会说Heroku不是部署深度学习模型本身的正确工具。为此,您可以考虑使用专用于深度学习的平台即服务,例如 Floydhub 。 您也可以在Floydhub上部署Flask REST API。
作为资源,您可以访问 Heroku Slug编译器 帮助页面。
拥有83MB的型号并不意味着它一直是83MB。由于软件包在被推送到Heroku时正在编译,这显然会占用更多的slug空间,因此应用程序可以使用这些软件包。最好的解决方案可能是将大型资产放入像AWS S3这样的容器或其他任何好的容器中。或者最糟糕的是使用不同的云服务。