如何减少基于Spacy的Python应用程序的安装大小

时间:2019-07-17 21:43:33

标签: python spacy

我正在构建一个包含Python库spacy的Docker容器。我现在正在尝试减小此容器的大小,spacy似乎是磁盘大小的主要贡献者。

在未安装任何型号的情况下,并且在没有任何其他代码/依赖关系等的情况下,spacy在安装时会消耗大约500MB的磁盘!有没有人对以磁盘空间友好的方式安装spacy有任何有用的提示/技巧。

我的复制步骤是:

mkdir foo1                  # create a folder 
cd foo1                     # change directory
python3 -m venv .venv       # create virtual environment
source .venv/bin/activate   # activate virtual environment
pip install --upgrade pip   # upgrade pip
pip install spacy           # install spacy

完成此操作后,我然后导航至以下文件夹...

foo1/.venv/lib/python3.7/site-packages

...,并且可以看到spacy文件夹非常大:

$ du -sh spacy
425M    spacy

具体来说,这是很大的语言文件夹:

$ du -sh spacy/lang
401M spacy/lang

该文件夹中有52种语言,在很多情况下,我只关心一种或两种语言。具体来说,就我目前的情况而言,这是英语。

当我查看尺寸时,英语排在第14位(仅显示此列表中的前14位)...

$ du -sH spacy/lang/* | sort -n -r 

142024 spacy/lang/tr
86608 spacy/lang/pt
78368 spacy/lang/nb
76592 spacy/lang/da
74840 spacy/lang/sv
60672 spacy/lang/ca
50880 spacy/lang/es
48296 spacy/lang/fr
41688 spacy/lang/de
36960 spacy/lang/nl
34008 spacy/lang/it
32632 spacy/lang/ro
24160 spacy/lang/lt
8712 spacy/lang/en  <--- THE ONLY ONE I WANT

在没有所有这些语言的情况下,是否有一种特定的安装spacy的方式?

我可以破解安装后的内容,但是有一种更安全的方法来安装更少的语言吗?

通过上述步骤在MacOS上安装的版本如下:

$ pip freeze
blis==0.2.4
certifi==2019.6.16
chardet==3.0.4
cymem==2.0.2
idna==2.8
murmurhash==1.0.2
numpy==1.16.4
plac==0.9.6
preshed==2.0.1
requests==2.22.0
spacy==2.1.6
srsly==0.0.7
thinc==7.0.8
tqdm==4.32.2
urllib3==1.25.3
wasabi==0.2.2

$ python --version
Python 3.7.4

2 个答案:

答案 0 :(得分:1)

我将此问题作为针对GitHub上spacy项目的一个问题提出,看来这是一个已知问题,并且有计划解决spacy安装的规模。

https://github.com/explosion/spaCy/issues/3983

因此,目前没有支持/推荐的方法来减小软件包安装的大小。

答案 1 :(得分:1)

如果您将&& rm -Rf foo1/.venv/lib/python3.7/site-packages/spacy/lang/tr附加到RUN pip install spacy的{​​{1}}命令的末尾,则可以删除该语言的所有文件,而无需保存它们进入Docker容器中的一层。

我不确定只是剥离了不需要的语言后,您是否还能继续使用Dockerfile,并且您基本上必须为每种 don语言重复该命令't 希望保留,但是在spacy使自身变得更小或更模块化之前,它可能是一种解决方法。