ConvLab-2 安裝與執行常見錯誤解決方法

Chao-Hsuan Ke
小小實驗室
Published in
7 min readSep 3, 2020
記錄 Windows 環境中安裝 ConvLab-2 時遇到的錯誤以及其解決方法

ConvLab-2 是一個 open source 的機器人對話 Framework,其中包含了 NLU、DST、POL 與 NLG 四個模組組成,算是完整的把機器人對話所需要的功能都建立在一起,而且可以直接使用別人訓練好的資料模組在不同模組內,對於建立一個對話系統相對是快速且簡單許多。

ConvLab2 也有發表paper 在 arxiv 上,寫得也算是簡單易懂,建議把整篇看完再來架設系統,對於系統上的一些邏輯會比較清楚。

在 ConvLab 的git 上也有完整的說明該如何架設此系統,並附上一些範例檔給大家參考。然而,裝過系統的人應該都知道,事情怎麼這麼順利都不會遇到錯誤,對吧 =.=

依據其 setup.py 內的要求,ConvLab-2 需要依賴到的 libs 有下面這麼多,要說安裝時都不會遇到問題也很難了 !!

'nltk>=3.4',
'tqdm>=4.30',
'checksumdir>=1.1',
'dataclasses',
'visdom',
'Pillow',
'future',
'torch',
'numpy>=1.15.0',
'scipy',
'scikit-learn==0.20.3',
'pytorch-pretrained-bert>=0.6.1',
'transformers>=2.3.0',
'tensorflow==1.14',
'tensorboard>=1.14.0',
'tensorboardX==1.7',
'tokenizers>=0.8.0',
'allennlp==0.9.0',
'requests',
'simplejson',
'spacy',
'unidecode',
'jieba',
'embeddings',
'quadprog',
'pyyaml'

這裡記錄一下安裝時遇到的錯誤以及其解決方法。作業系統是 Windows 環境 (因為 Windows 環境安裝時問題比較多啊 XD)。

1. Python 版本

需安裝 python 3.7.6 版即可,因為過了 3.8 後 tensflow-1.x 並不支援

2. Tensorflow 版本不符 / 未安裝

建議安裝 tensorflow-1.14 版,若安裝超過 2.0 版會造成 libs 相依問題。

pip3 install --user --upgrade tensorflow==1.14

3. 各種套件衝突

3.1 torch

出現狀況:ERROR: Failed building wheel for torch

解決辦法:至 torch 網站選擇 1.5 版安裝,勿使用 1.6 版以上。使用以下指令安裝

pip install torch==1.5.0+cpu torchvision==0.6.0+cpu -f https://download.pytorch.org/whl/torch_stable.html

3.2 allenalp

出現狀況:無法安裝 allennlp==0.9.0 時

解決辦法:當 Python 版本超過 3.8 時則無法安裝 allennlp==0.9.0 版,Python 3.7.x 版才能。

3.3 Microsoft Visual C++ 14.0

如果是在 windows 環境安裝套件,這個問題應該都會遇到,也有許多文章討論了這個問題。

出現狀況:error: Microsoft Visual C++ 14.0 is required

解決辦法:安裝 Microsoft Visual C++ 14.0。由於現在 Microsoft Visual Studio 已經發展到 19版,但由於需求空間太大,所以還是建議安裝舊版。下載 Microsoft Build Tools 2015 Update 3 並安裝即可。step-by-step 的解決方式可以參考這一篇教學:

Microsoft Visual Studio 舊版下載處:

執行

除了安裝時可能會出錯,在執行時也有可能會有錯誤,可能的問題與解決方法可參考下方做法:

1. Missing key(s)

出現狀況:Missing key(s) in state_dict: “bert.embeddings.position_ids”

RuntimeError: Error(s) in loading state_dict for JointBERT:
Missing key(s) in state_dict: “bert.embeddings.position_ids”.

解決辦法:將 model.load_state_dict(torch.load(os.path.join(output_dir, ‘pytorch_model.bin’), DEVICE)) 改成

model.load_state_dict(torch.load(os.path.join(output_dir, 'pytorch_model.bin'), DEVICE), strict=False)

2. en_core_web_sm

出現狀況:跟 spacy 相關的一個資料集 en_core_web_sm,在安裝 spacy 時或執行時可能會缺少此資料。

解決辦法:可使用以下指令安裝

python -m spacy download en_core_web_sm

--

--

Chao-Hsuan Ke
小小實驗室

永遠熱愛自己的工作,總是找一堆事把自己的時間塞滿。喜歡接觸不同領域,像是 歷史、文化、金融和公共政策 等議題,期許著自己會什麼就分享什麼。