背景:
配置PURE的算法环境,安装allennlp 0.9.0 (pip install allennlp==0.9.0)报错,如图所示:
探索:
- 发现allennlp的依赖中有spacy,是在安装spacy 2.1.9的依赖时报错了。
此时我尝试单独安装spacy 2.1.9也会报相同错误。所以是spacy这里出问题了。而我直接安装spacy最新版本(3.5.0),却是可以安装成功的。 - 当我尝试不制定版本安装allennlp时,发现它会下载最新的pytorch版本,我不希望我的pytorch版本被改变,因为会破坏了pytorch与cuda、cudnn的版本配套。
原因:
pytorch、transformers、allennlp、spacy版本不匹配
而transformer通常不会导致问题
解决办法:
综上,考虑选择合适的allenlp版本,能够兼顾到spacy版本和pytorch版本
因为allennlp是基于pytorch的NLP库,所以allennlp的版本会受pytorch的版本影响,若是直接pip install allennlp,则可能会安装新的pytorch版本。
因此,allennlp版本选取的前提是,不要破坏pytorch的版本。
而官方没有给出一个配套的建议,我的方法是实验,首先从一个稍微低一点并接近0.9.0的版本开始,
如:pip install allennlp1.1.0
此时发现它要求pytorch的版本低于1.7,此时则考虑增加版本,因为一般越近的版本使用的pytorch版本就越高。
pip install allennlp1.2.0, 顺利安装
此时,allenlp会自动安装配套的spacy和transformers及其它依赖。
Successfully installed allennlp-1.2.0 catalogue-1.0.2 jsonpickle-3.0.1 plac-1.1.3 spacy-2.3.9 srsly-1.0.6 thinc-7.4.6 tokenizers-0.9.2 transformers-3.4.0 wasabi-0.10.1
最后,给一个基于pytorch1.7.1的配套方案,若你也是这个版本,则可以直接按这个配套方案安装,若是不,则参考上面的实验找到合适的allennlp版本。
pytorch:1.7.1
allennlp:1.2.0
transformers:3.4.0
spacy:2.3.9