首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在没有新下载的情况下将已下载的SpaCy语言模型导入到docker容器

在没有新下载的情况下将已下载的SpaCy语言模型导入到docker容器
EN

Stack Overflow用户
提问于 2022-05-30 08:53:14
回答 2查看 313关注 0票数 1

我想在不同的码头容器上运行多个spacy语言模型。我不希望码头映像包含行RUN python -m spacy download en_core_web_lg,因为其他进程可能有不同的语言模型。

我的问题是:是否可以将多个spacy语言模型下载到本地(即en_core_web_lg、en_core_web_md、.),然后在码头容器生成时将这些模型加载到python环境中?

这个过程可能有以下步骤:

  1. 生成停靠器容器,并将卷" language _models/“绑定到包含多个spacy模型的容器。
  2. 运行一些spacy命令,例如指向您希望环境具有的语言模型的python -m spacy download --local ./language_models/en_core_web_lg

希望在于,由于共享卷上已经存在语言模型,因此每个新容器的下载/导入时间都会大大减少。每个容器都不会有不必要的语言模型,Docker映像也不会针对任何语言模型。

EN

回答 2

Stack Overflow用户

发布于 2022-05-30 10:45:32

有两种方法可以做到这一点。

更简单的方法是使用模型目录在Docker中挂载卷,并将其指定为路径。spaCy允许您调用spacy.load("some/path"),因此不需要安装pip。

如果您真的需要使用pip来安装某些东西,您还可以下载压缩模型并安装该文件。然而,在默认情况下,这可能涉及复制它,减少收益。如果您解压缩模型下载和挂载,您可以使用pipe -e (可编辑),这通常用于develpoment。我不建议这样做,但是如果您正在使用import en_core_web_sm或其他什么东西,并且在重构方面有困难,那么它可能就是您想要的。

票数 1
EN

Stack Overflow用户

发布于 2022-05-31 12:44:53

谢谢你的评论@polm23 23!我还有一个额外的复杂性层,因为SpaCy模型最终被用来训练一个Rasa模型。我选择的解决方案是使用以下方法在本地保存模型:

代码语言:javascript
复制
nlp = spacy.load(model)
nlp.to_disk(f'language_models/{model}')

然后使用已挂载的卷使特定的模型目录对停靠器容器可见。然后,在Rasa中,您可以使用本地路径导入语言模型。

代码语言:javascript
复制
# Configuration for Rasa NLU.
# https://rasa.com/docs/rasa/nlu/components/
language: "../../language_models/MODEL_NAME"
recipe: default.v1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72431625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档