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

Flask NLP应用部署Vercel遇函数大小超限,求解决方案

体积膨胀原因
  • 依赖打包冗余:Vercel部署Python Serverless函数时,会将所有依赖(包括Flask、spaCy及其依赖的numpy、blis等第三方库)全部打包,这些依赖加起来的体积远超过单个en_core_web_sm模型的15.3MB。
  • 模型打包冗余:直接import en_core_web_sm会让打包工具将整个模型包的所有文件(包括一些非核心的配置、缓存文件)都纳入压缩包,进一步增大体积。
解决部署体积超限的方案

1. 优化依赖安装与打包

  • 在requirements.txt中仅保留必要依赖,避免冗余包:
    flask>=2.0.0
    spacy>=3.0.0
    en_core_web_sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.5.0/en_core_web_sm-3.5.0.tar.gz
    
  • 在Vercel构建命令中添加--no-cache-dir参数,避免缓存文件被打包:
    pip install --no-cache-dir -r requirements.txt
    

2. 调整模型加载方式

将代码中直接导入模型包的写法改为使用spaCy的load方法,减少打包时的冗余:

from flask import Flask, request, jsonify, render_template
import spacy  # 替换原有的import en_core_web_sm
from rules import *

nlp = spacy.load("en_core_web_sm")  # 直接加载模型名称

app = Flask(__name__)

# 后续路由代码保持不变

3. 使用Vercel层分离依赖

将spaCy和模型打包为Vercel层,层的体积不计入函数压缩包限制:

  1. 本地创建层目录并安装依赖:
    mkdir spacy-layer && cd spacy-layer
    pip install spacy en_core_web_sm -t python/lib/python3.9/site-packages/
    
  2. 将python目录打包为zip文件,上传到Vercel控制台的「层」管理界面。
  3. 在函数配置中关联该层,函数代码仅保留Flask应用逻辑和rules.py,体积会大幅降低。

4. 排除不必要文件

在项目根目录创建.vercelignore文件,排除非必要文件:

__pycache__/
*.pyc
*.pyo
.env
.git/
tests/
docs/

5. 精简基础环境(Docker部署场景)

如果使用Docker部署,选择轻量Python镜像如python:3.9-slim替代完整镜像,减少基础体积。

内容的提问来源于stack exchange,提问作者Hex Heager

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 00:42:41