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

使用Git LFS托管大体积ML模型后Heroku部署的模型调用问题

Heroku 部署Git LFS托管大体积ML模型解决方案

.gitattributes是Git层面的配置文件,不需要在业务代码中直接调用,它的作用仅为标记哪些文件走LFS规则托管,你可以直接在代码中按模型的实际存储路径加载文件即可,核心需要解决的是Heroku部署时能拉取到LFS存储的真实模型文件,而非LFS指针文件。

1. 确认本地Git LFS配置生效

  • 本地执行git lfs ls-files,确认目标模型文件出现在输出列表中,且标记为*(代表已被LFS追踪)
  • 检查项目根目录下的.gitattributes文件,是否存在匹配模型文件的规则,例如下方为追踪所有pth格式模型的规则:
    *.pth filter=lfs diff=lfs merge=lfs -text
    
  • 本地直接按相对路径加载模型调试,确保代码运行正常,Python示例如下:
    import torch
    # 直接填写模型的实际存储路径即可,无需操作.gitattributes文件
    model = torch.load("./models/pretrained_model.pth")
    

2. 配置Heroku支持拉取LFS文件

Heroku默认构建流程不会拉取LFS托管的真实文件,需要额外配置构建规则:

  • 给你的Heroku应用添加Git LFS构建包,执行命令:
    heroku buildpacks:add https://github.com/raxod502/heroku-buildpack-git-lfs.git -a 你的Heroku应用名称
    
  • 在Heroku应用的环境变量配置页添加两个变量:
    • HEROKU_GIT_LFS_REPO:填写你的代码仓库HTTPS地址
    • HEROKU_GIT_LFS_TOKEN:生成代码托管平台的个人访问令牌,勾选仓库读取权限即可,用于授权拉取LFS文件

3. 规避Heroku slug大小限制

Heroku的应用编译产物(slug)最大限制为500MB,你的858MB模型已经超过该阈值,就算配置好LFS也会触发部署失败,可选择以下任意一种方案解决:

  • 对模型做压缩处理:通过量化、剪枝、蒸馏等手段将模型体积压缩到500MB以内
  • 改用外部存储托管模型:将模型上传到对象存储服务,应用启动时动态拉取到临时目录或者直接加载到内存使用,不占用slug存储空间

4. 部署后校验

可以在应用启动逻辑中加入模型文件校验逻辑,避免拉取到LFS指针文件导致报错:

import os
model_path = "./models/pretrained_model.pth"
# 按你实际模型大小调整阈值,这里为800MB的字节数
if os.path.getsize(model_path) < 800 * 1024 * 1024:
    raise RuntimeError("模型未正常拉取,当前仅获取到LFS指针文件")

校验通过后即可正常调用模型处理GET请求返回结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:15:03