目录
2.2设置映射(本地与服务器文件互传)关系并上传文件到服务器
3.2.2 ModuleNotFoundError: No module named 'rouge_score'
3.2.3 undefined symbol: cublasltHSHMatmulAlgolnit, version libcublaslt. so.1l编辑
3.3.1 requirements遗留问题:summ_eval
3.3.2 最终问题,RuntimeError: CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling `cublasLtMatmul
前言(训练用时):
3060环境下,
training.sh第一阶段20min*10次迭代
training.sh第二阶段共约6h
training.sh第三阶段共约1h
eval.sh第一阶段10min
eval.sh第二阶段30min
eval.sh第三阶段,其实10min内就能训练完,但是总时卡在第1104个数据,这里的出错就是最终的问题了
一、前期准备
书接上回(近日学习10.22 http://t.csdnimg.cn/W2kbA)
那时候的我逐渐意识到自己能力的问题,面对需要的文件上传到服务端,对我而言只有两条路:1、在服务端通过wget、git clone等命令直接下载
2、在pycharm通过ssh上传
对于1,存在的问题就是某些文件需要梯子才能下载
对于2,存在的问题是我的pycharm是以前搞的2022社区版,没有ssh传输功能,需要换专业版
鉴于个人本地的虚拟环境和pycharm均已过于杂乱,于是当天就把电脑里所有的anaconda,miniconda,pycharm,python都卸了(可能是之前做课设的时候安装了一堆东西),然后网上找了一个搞pojie pycharm专业版的教程Pycharm2023.1专业版安装与激活
里面包含了从anaconda到pycharm激活的全部流程,总而言之就是安装好了2023.1版本的pycharm,能够进行ssh传输了!
二、重续前路
为了方便管理,不污染已经存在的文件,所以我重新把相关文件复制一遍放到d盘
2.1部署ssh连接:
tools-start SSH Session-填写地址、端口、用户名、密码即可
然后命令行就会自己蹦出来,跳转到输入的网口地址,进入服务器了
进入服务器之后,在自己需要的地方mkdir XXX创建文件夹
2.2设置映射(本地与服务器文件互传)关系并上传文件到服务器
tools--deployment--confiduration--+号--SFTP(这里创建一个名字,如SAM)--mappings
local path就是本地的文件夹地址,deployment path就是我们刚刚创建的服务器文件夹地址
但是这个时候服务器文件夹内容还是空的,这就需要我们把本地文件上传上去了
右键本地文件夹,找到deployment,选择upload to SAM(刚刚创建的名字),就可以看到文件正在上传了
上传完后,可以到刚刚蹦出来的命令行cd到文件夹看看是否上传的文件都在,至此完成了最基础的文件配置,可以说能开始进行复现了
三、跑baseline
3.1速通requirements
有了前面的经验(10.22近日学习http://t.csdnimg.cn/W2kbA),requirements可以参考“2准备工作的问题”,唯一可优化的就是punkt和wordnet本地解压后文件夹可以直接在pycharm上传的服务器了,更方便了一点
3.2攻下run_baseline_training.sh
3.2.1 .sh执行权限问题
首先需要注意的是,不知道为什么,.sh文件都是没有执行权限的,需参考 10.22近日学习http://t.csdnimg.cn/W2kbA “3.1执行:$ ./bin/run_baseline_training.sh 时,报错:Permission denied没权限(执行权限)”,给training.sh和eval.sh添加执行权限
3.2.2 ModuleNotFoundError: No module named 'rouge_score'
解:直接pip install,后面好像还缺了个啥,也直接pip install就好
3.2.3 undefined symbol: cublasltHSHMatmulAlgolnit, version libcublaslt. so.1l
解:其实出现这个就是torch与cuda版本不匹配的问题了,直接查看自己的版本然后修改为合适的版本(比如我从11.1换成了11.7就好了(torch==1.13.1适配cuda==11.6/11.7))
解:老问题,没法直接从huggingface下载模型,这就得我们自己下到本地然后上传到服务器
但是到底要下载什么模型呢?这就得回到我们的training.sh了,可以看到需要在huggingface找到microsoft/deberta-v3-base和(忘了是谁好像是facebook?)的bart-base(facebook/bart-base)
知道要下什么就直接下载到本地把,记得最好按照他原本的文件嵌套模式(比如新建一个microsoft文件夹再在里面新建一个deberta-v3-base文件夹,把下载的模型文件都放进deberta-v3-base文件夹里,要不然就要和我一样把.sh里面调用模型的地址代码全都改一遍,如下图)
这是因为我只是建立了他们的模型文件夹,没有做Microsoft和Facebook的文件夹
最后检查一下自己的模型文件是否齐全,齐全了,那这个问题也就解决了。
3.3进军run_baseline_eval.sh
3.3.1 requirements遗留问题:summ_eval
当时没留意这个报错,后面做eval就会发现少了这个函数,然后报错
这里可以看出来是需要用到meteor,然后又是下载不了报错,还好,他给出了meteor的下载地址https://github.com/Maluuba/nlg-eval/blob/master/nlgeval/pycocoevalcap/meteor/meteor-1.5.jar?raw=true,我们直接下载到本地(meteor.1.5.jar)后上传到服务器,然后开始理解后操作:
3.3.1.1summ_val安装
首先是针对上面的红字报错,我们可以pip install summ-eval --user下载到自己的账户下,然后会出现提醒:WARNING: The script calc-scores is installed in '/disk2/undergraduate/yangzy/.local/bin' which is not on PATH.
这就需要把我们账户添加进路径:echo 'export PATH=/disk2/undergraduate/yangzy/.local/bin:$PATH' 这样我们就有了summ_val,eval.sh,但还是会报错,总是企图重新下载meteor
3.3.1.2summ_eval 使用问题
首先的想法,是为什么每次出问题都想下载meteor,于是搜索出现下载链接的文件,找到了,在meteor metric.py 出现了判定需要下载的情况:
于是,对症下药,我们直接把刚刚下载的meteor-1.5.jar放到自己的summ_eval文件夹下(一般就是3.3.1.1里需要我们添加的路径下面能找到summ_eval文件夹)
然后,在刚刚的meteor_metric文件里把关于网址的两行注释掉,然后下面修改为./meteor-1.5.jar
第三,在刚刚的summ_eval文件夹下新建一个data文件夹
因为我们发现,在程序运行的时候,score文件也是需要用到meteor,而且还要再下载一个paraphrase-en.gz
好消息是,他给出了下载地址https://github.com/tylin/coco-caption/blob/master/pycocoevalcap/meteor/data/paraphrase-en.gz?raw=true,我们也是可以直接下载到本地,然后,上传到刚刚创建的data文件夹里
最后,别忘了把上面的score.py文件里面两行关于网址的注释掉(像刚刚处理meteor_metric一样),然后那行outputf.write里面的内容改为"./paraphrase-en.gz"
这样就能解决他总想下载meteor的问题了,能够完成eval的前两个阶段。
3.3.2 最终问题,RuntimeError: CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling `cublasLtMatmul
目前没有解法合适,参考过的解法 :http://t.csdnimg.cn/oIyWx、令各个文件的CUDA device设置相同http://t.csdnimg.cn/V6vFe、截断法(我这不适用,因为会破坏文本完整性)http://t.csdnimg.cn/BW5nP、torch与cuda版本问题(不适用,已经是完美匹配了)http://t.csdnimg.cn/6Oa2j