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

如何在spaCy运行时下载en_core_web_sm模型(AWS Lambda场景)

AWS Lambda 运行时下载spaCy en_core_web_sm模型实现方案

实现原理

利用AWS Lambda自带的/tmp临时可写目录存储模型,冷启动时完成模型下载,热启动复用已下载的模型文件,无需依赖EFS。en_core_web_sm模型压缩包大小约15MB,解压后不超过100MB,完全适配Lambda/tmp目录的存储限制。

前置配置

  • 打包Lambda部署包时已引入对应版本的spaCy依赖
  • Lambda超时配置调整为≥60秒,预留足够的模型下载时间
  • Lambda临时目录/tmp存储配置≥256MB(默认512MB足够使用)

代码实现示例

import os
import spacy
from spacy.cli import download

# 模型配置,版本需和部署包中的spaCy版本完全匹配
MODEL_NAME = "en_core_web_sm"
MODEL_VERSION = "3.7.0"
MODEL_TMP_PATH = f"/tmp/{MODEL_NAME}"

def load_spacy_model():
    # 热启动场景复用已下载的模型,跳过重复下载
    if os.path.isdir(MODEL_TMP_PATH):
        return spacy.load(MODEL_TMP_PATH)
    # 冷启动场景下载模型
    download(f"{MODEL_NAME}=={MODEL_VERSION}", direct=True)
    # 加载模型后持久化到/tmp目录,供后续热启动使用
    nlp = spacy.load(MODEL_NAME)
    nlp.to_disk(MODEL_TMP_PATH)
    return nlp

def lambda_handler(event, context):
    # 加载模型
    nlp = load_spacy_model()
    # 业务逻辑示例
    text = event.get("text", "")
    doc = nlp(text)
    return {
        "statusCode": 200,
        "result": {
            "tokens": [token.text for token in doc],
            "entities": [(ent.text, ent.label_) for ent in doc.ents]
        }
    }

注意事项

  • 版本匹配校验:spaCy和对应模型的版本必须完全一致,否则会触发模型加载兼容性错误。比如spaCy 3.7.x版本必须搭配3.7.x版本的en_core_web_sm使用
  • 只读目录限制:Lambda除/tmp外的所有目录均为只读权限,不可修改下载路径到其他位置
  • 冷启动优化可选方案:如果业务对冷启动延迟要求较高,可以直接将预下载的模型打包进Lambda部署包,只要部署包解压后总大小不超过250MB的Lambda限制即可,稳定性比运行时下载更高

内容的提问来源于stack exchange,提问作者Vikas Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:36:01