gpt4 book ai didi

google-app-engine - GAE/standard/second/Python 上的 Spacy 超出了最大实例的内存

转载 作者:行者123 更新时间:2023-12-02 20:03:41 32 4
gpt4 key购买 nike

我已经使用 GAE 一段时间了,没有任何问题。唯一的变化是我添加了 Spacy 以及我训练的模型。

当我使用 dev_appserver 在本地运行时,应用程序消耗了大约 153 MB。部署后,我收到内存超出错误。即使是 F4_1G例如,我超出了内存:

Exceeded hard memory limit of 1228 MB with 1280 MB after servicing 0 requests total. Consider setting a larger instance class in app.yaml.

如果我导入 Spacy 并且不加载我的模型(实例有大约 200MB),部署工作正常,所以 Spacy 本身不是问题,但是当我用 spacy.load() 加载我的模型时然后内存超过限制。请注意,这发生在我什至使用我的 Spacy 模型之前,因此仅加载模型就会导致问题。

我的 Spacy 模型是一个标记器和解析器,占用 27 MB 的磁盘空间。我不明白为什么 App Engine 上的内存要求比我的 Mac 上的要大得多。

看起来其他人已经能够run Spacy on app engine .知道我可能做错了什么吗?

最佳答案

我找到了解决方案。我将我的模型加载到模块级变量中,因此在导入模块时会加载模型。

当您部署第二代 GAE 应用程序时,会部署一堆工作线程(在我的例子中是 8 个)。我不了解工作线程的详细信息,但我怀疑有几个工作线程导入了模块,并且所有工作线程都对内存使用有所贡献。

我更改了我的代码,以便模型在首次使用时加载,而不是在模块导入时加载。进行此更改后,内存使用量为 428MB。

下面是一个不该做的例子:

import spacy

nlp = spacy.load('my_model')

def process_text(text):
return nlp(text)

改为这样做:

import spacy

nlp = None

def process_text(text):
global nlp
if nlp is None:
nlp = spacy.load('my_model')
return nlp(text)

关于google-app-engine - GAE/standard/second/Python 上的 Spacy 超出了最大实例的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55228492/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com