1.0 背景
记录一下自己运行GLUE baseline的一些坑。
2.0 正文
2.1 环境(Linux)
安装ubuntu:
版本:ubuntu-18.04.1-desktop-amd64.iso
安装conda:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
Miniconda3-latest-Linux-x86_64.sh
输入命令:source ~/.bashrc
设置虚拟机共享目录(可选):
开始安装glue:
按照官方给出的环境文件安装:
conda env create -f environment.yml
(我安装好环境后也导出了一个yml,但是直接安装还是会有一些报错,但可以跳过“问题1”)
问题1:
- 网络不行,里面包的下载不下来。
- 那就只能自己按照文本内容一个个装了。
问题2:
-
Error:没有sklearn.utils.linear_assignment_
-
百度了一下,说是scikit-learn版本问题。卸载原来的scikit-learn,安装低版本的:
pip3 install -i https://pypi.douban.com/simple scikit-learn==0.19.2
问题3:
-
Error:from allennlp.modules.matrix_attention import DotProductMatrixAttention
-
安装github上面glue-baseline给的环境文件中,allennlp是0.4版本的,但是看了下0.4的代码文件里面没有这个matrix_attention的文件夹,但是github上的allennlp是有的,然后看了下版本更新,发现是从0.5版本开始支持0.4的pytorch(环境文件里给安装的是0.4的pytorch)。于是:
pip uninstall allennlp pip install allennlp==0.5
问题4:
-
Error:pg_config executable not found.
-
百度上的很多方法都试了,只有下面这个有效:
sudo apt-get install libpq-dev python-dev
问题5:
-
缺少cove,或者无法加载MTLSTM
-
需要安装cove,官方安装方法如下:
git clone https://github.com/salesforce/cove.git # use ssh: git@github.com:salesforce/cove.git cd cove pip install -r requirements.txt python setup.py develop
但是pip install -r requirements.txt的时候不行,然后手动装torchtext,注意版本:pytorch0.4是对应torchtext0.2.3。
pip install torchtext==0.2.3
问题6:
-
运行的时候发现log中显示:Finished building vocab. Using 2 words
(看着就不正常,但是不报错,会一直运行到beginning trainning然后就卡住了)
或者一直闪一段重复的log -
最后发现似乎是缺少nltk的punkt,然后按照以下方法装好,就没问题了:
git clone https://github.com/WILDCHAP/nltk_data 注意:要把下好的nltk_data放到能索引到的目录里(比如:/home/用户名/)
具体可以参考博客:https://blog.csdn.net/WILDCHAP_/article/details/108670801
问题7:
-
缺少gcc
sudo apt update sudo apt install build-essential
问题8:
-
其他
pip install overrides==4.1.2
问题9:
-
找不到训练数据集
glue代码里面/src/preprocess.py 中22行的这个地址要换成自己放glue数据的地址, 比如cola数据放在glue/CoLA ,这里就写/mnt/hgfs/share_file/glue/
2.2 测试
python /mnt/hgfs/share_file/GLUE-baselines-master/src/main.py --exp_dir /mnt/hgfs/share_file/all_out --run_dir /mnt/hgfs/share_file/all_out/run_dir --train_tasks cola --eval_tasks none --word_embs_file /mnt/hgfs/share_file/glove.840B.300d.txt --n_epochs 1 --cuda -1 --classifier_hid_dim 64 --d_hid 64 --val_interval 50 --patience 2
–exp_dir、–run_dir是输出的路径,–train_tasks 可以选all、none、或者几个任务名用,分隔。
(注意:all表示的是 [‘mnli’, ‘mrpc’, ‘qqp’, ‘rte’, ‘qnliv2’, ‘snli’, ‘sst’, ‘sts-b’, ‘wnli’, ‘cola’] 这些任务,比glue给的数据集下载地址 https://gluebenchmark.com/tasks 上可以下载的少了一个snli,但是提交的要求里也不含这个所以去掉就好了。如果没有要训练的任务,必须填none,不设置这个参数的话运行过程中会产生任务名为空串 “” 的任务,key找不到而出错。)
–cuda -1 没有gpu要设置为-1
–eval_tasks 这个和–train_tasks的区别是,train是基线模型(bilstm的那个)上面用glue数据集进行训练;eval指的是在模型后面加一层分类器,然后用glue数据集训练分类器,需要自己在源码里面添加连接代码,好像有给个空的函数可以填。
2.4 在服务器上安装时出现的新错误
- sudo apt-get -f install 后出现错误:
dpkg-deb: error: archive '/var/cache/apt/archives/nsight-compute-2019.4.0_2019.4.0.12-1_amd64.deb' has premature member 'control.tar.xz' before 'control.tar.gz', giving up
dpkg: error processing archive /var/cache/apt/archives/nsight-compute-2019.4.0_2019.4.0.12-1_amd64.deb (--unpack):
subprocess