Heroku部署深度学习模型遇Slug体积超限问题求助
解决Heroku部署时Slug体积超标的问题
我之前也碰到过一模一样的情况——用Flask搭了深度学习API,本地跑完全顺畅,但推Heroku时就因为slug体积超500M报错。结合你的场景(模型仅83M,核心依赖是Keras+TensorFlow),给你几个实用的优化方向:
1. 清理冗余文件+精简依赖
- 先扫一遍项目根目录,把本地测试用的数据集、日志、缓存文件夹(比如
__pycache__、.ipynb_checkpoints)全加到.gitignore里,别让这些无关文件占slug空间。 - 狠狠精简
requirements.txt:只留生产必需的依赖,删掉开发用的工具(比如pytest、jupyter这类);如果你的模型不需要GPU加速,直接把tensorflow换成tensorflow-cpu——这个轻量版本能砍掉几百M的GPU相关依赖,效果立竿见影。 - 安装依赖时禁用缓存:在
requirements.txt开头加上--no-cache-dir,或者给Heroku设置环境变量PIP_NO_CACHE_DIR=1,避免pip把安装包的缓存也塞进slug里。
2. 优化模型文件体积
- 你的模型已经很小,但还能再压缩:比如用Keras导出
.h5模型后,用gzip压缩文件,部署时在代码里先解压再加载;或者转换成TensorFlow Lite格式,体积能比原生.h5小30%-50%,而且推理性能完全能满足文本分类场景的需求。
3. 排查Slug的体积构成
- 要是不确定哪部分占了最大空间,可以部署后运行
heroku run bash进入容器,执行du -sh *查看各个目录的大小。我之前就踩过坑:.git目录没加进.gitignore,占了近100M,删掉后直接达标了。
4. 用Pipenv替代pip管理依赖
- Pipenv会生成精准的
Pipfile和Pipfile.lock,比requirements.txt更严谨地管理依赖版本,而且默认会清理安装缓存,能有效减少slug的冗余体积。
这些方法组合起来,绝对能把slug压到500M以内。我当时就是靠换成tensorflow-cpu+清理本地冗余文件解决的问题,你可以试试看!
内容的提问来源于stack exchange,提问作者Antoine
相关产品推荐
相关产品推荐

