记录一下自己运行GLUE baseline的一些坑。
安装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: [email protected]: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/
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数据集训练分类器,需要自己在源码里面添加连接代码,好像有给个空的函数可以填。
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 dpkg-deb --control returned error exit status 2
Errors were encountered while processing:
/var/cache/apt/archives/nsight-compute-2019.4.0_2019.4.0.12-1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
解决:
https://blog.csdn.net/Three_dog/article/details/104653506/
根据博客的说法,应该更新dpkg:
aptitude upgrade dpkg
dpkg: error processing package cuda-10-1 (--configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of cuda:
cuda depends on cuda-10-1 (>= 10.1.243); however:
Package cuda-10-1 is not configured yet.
解决:
尝试 sudo dpkg --configure -a (这句的意思大概是检查依赖) 后:
dpkg: dependency problems prevent configuration of cuda-nsight-compute-10-1:
cuda-nsight-compute-10-1 depends on nsight-compute; however:
Package nsight-compute is not installed.
发现缺少nsight-compute
解决:
sudo apt-get install nsight-compute
重启虚拟机后,共享文件夹失效。
解决方法如下:
1、查看共享文件夹是否存在 vmware-hgfsclient
2、执行 sudo vmhgfs-fuse .host:/ /mnt/hgfs/ -o allow_other -o nonempty
任务运行过程中被kill了,内存太小,关闭虚拟机,调大内存。
复制保存到txt改名字为.yml即可。
name: glues
channels:
- defaults
dependencies:
- _libgcc_mutex=0.1=main
- blas=1.0=openblas
- ca-certificates=2020.10.14=0
- certifi=2020.6.20=py36h06a4308_2
- click=7.1.2=py_0
- cudatoolkit=9.0=h13b8566_0
- cudnn=7.6.5=cuda9.0_0
- intel-openmp=2019.4=243
- joblib=0.17.0=py_0
- ld_impl_linux-64=2.33.1=h53a641e_7
- libedit=3.1.20191231=h14c3975_1
- libffi=3.3=he6710b0_2
- libgcc-ng=9.1.0=hdf63c60_0
- libgfortran-ng=7.3.0=hdf63c60_0
- libopenblas=0.3.10=h5a2b251_0
- libstdcxx-ng=9.1.0=hdf63c60_0
- mkl=2018.0.3=1
- nccl=1.3.5=cuda9.0_0
- ncurses=6.2=he6710b0_1
- ninja=1.10.1=py36hfd86e86_0
- nltk=3.5=py_0
- numpy=1.19.2=py36h6163131_0
- numpy-base=1.19.2=py36h75fe3a5_0
- openssl=1.1.1h=h7b6447c_0
- pip=20.2.4=py36_0
- pycparser=2.20=py_2
- python=3.6.12=hcff3b4d_2
- pytorch=0.4.0=py36hdf912b8_0
- readline=8.0=h7b6447c_0
- scipy=1.5.2=py36habc2bb6_0
- setuptools=50.3.0=py36hb0f4dca_1
- sqlite=3.33.0=h62c20be_0
- threadpoolctl=2.1.0=pyh5ca1d4c_0
- tk=8.6.10=hbc83047_0
- tqdm=4.50.2=py_0
- wheel=0.35.1=py_0
- xz=5.2.5=h7b6447c_0
- zlib=1.2.11=h7b6447c_3
- pip:
- allennlp==0.5.0
- argparse==1.4.0
- attrs==20.2.0
- awscli==1.18.168
- backcall==0.2.0
- botocore==1.19.8
- cffi==1.11.2
- chardet==3.0.4
- colorama==0.4.3
- cymem==2.0.3
- cytoolz==0.9.0.1
- decorator==4.4.2
- dill==0.2.9
- docutils==0.15.2
- editdistance==0.5.3
- flaky==3.7.0
- flask==0.12.1
- flask-cors==3.0.3
- gevent==1.2.2
- greenlet==0.4.17
- h5py==2.10.0
- idna==2.10
- importlib-metadata==2.0.0
- iniconfig==1.1.1
- ipdb==0.13.4
- ipython==7.16.1
- ipython-genutils==0.2.0
- itsdangerous==1.1.0
- jedi==0.17.2
- jinja2==2.11.2
- jmespath==0.10.0
- markupsafe==1.1.1
- msgpack==0.5.6
- msgpack-numpy==0.4.3.2
- murmurhash==1.0.2
- overrides==3.1.0
- packaging==20.4
- parso==0.7.1
- pexpect==4.8.0
- pickleshare==0.7.5
- plac==0.9.6
- pluggy==0.13.1
- preshed==2.0.1
- prompt-toolkit==3.0.8
- protobuf==3.13.0
- psycopg2==2.8.6
- ptyprocess==0.6.0
- py==1.9.0
- pyasn1==0.4.8
- pygments==2.7.2
- pyhocon==0.3.35
- pyparsing==2.4.7
- pytest==6.1.2
- python-dateutil==2.8.1
- pytz==2017.3
- pyyaml==5.3.1
- regex==2018.1.10
- requests==2.24.0
- responses==0.12.0
- rsa==4.5
- s3transfer==0.3.3
- scikit-learn==0.19.2
- six==1.15.0
- spacy==2.0.18
- tensorboardx==1.2
- thinc==6.12.1
- toml==0.10.1
- toolz==0.11.1
- torchtext==0.2.3
- traitlets==4.3.3
- typing==3.7.4.3
- ujson==4.0.1
- unidecode==1.1.1
- urllib3==1.25.11
- wcwidth==0.2.5
- werkzeug==1.0.1
- wrapt==1.10.11
- zipp==3.4.0
prefix: /home/linhai/anaconda3/envs/glues