我正在构建一个包含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
答案 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使自身变得更小或更模块化之前,它可能是一种解决方法。