赞
踩
应用facebook 的XLM做机器翻译的示例,此为过程记录:
1.clone XLM源码
git clone https://github.com/facebookresearch/XLM.git
2. 处理数据数据
wget https://dl.fbaipublicfiles.com/XLM/codes_enfr
wget https://dl.fbaipublicfiles.com/XLM/vocab_enfr
问题1:先克隆到windows下再上传linux服务器,执行shell脚本会报权限错误,chmod +x shell脚本后会提示脚本内‘\r’问题,是windows上的换行符和linux上不一致,可以安装转换插件将换行符转化,但没再继续解决,直接在linux上克隆下来XLM源码,就不会发生上述问题。
问题2:重写处理脚本是遇到cat > 执行完处理步骤输出到原文件(名称同处理前相同)把文件内容清空,但没有写入到文件中的问题,重新命名输出文件才解决
问题3:TypeError: Class advice impossible in Python3. Use the @implementer class decorator instead. 找到/***/site-packages/apex/interfaces.py文件将implements改为implementer,包括import中的
(未完待续…)
数据准备好了(过程很艰辛,处理过程中断了一次,重新启动数据没有续接上,导致出来的平行语料数量不一致,检查不仔细,结果一层层回溯检查,重新生成文件,浪费不少时间,直接从源头向下检查就好了。)
模型启动命令(多GPU、平行语料):
import NGPU=2
CUDA_VISIBLE_DEVICES=‘6,7’ python -m torch.distributed.launch --nproc_per_node=$NGPU train.py --exp_name supMT_enfr --dump_path ./dumped_enfr/ --reload_model ‘mlm_tlm_xnli15_1024.pth,mlm_tlm_xnli15_1024.pth’ --data_path ./data/processed/en-fr/ --lgs ‘ar-bg-de-el-en-es-fr-hi-ru-sw-th-tr-ur-vi-zh’ --mt_steps ‘en-fr’ --bt_steps ‘en-fr-en,fr-en-fr’ --encoder_only false --emb_dim 1024 --n_layers 12 --n_heads 8 --dropout 0.1 --attention_dropout 0.1 --gelu_activation true --tokens_per_batch 400 --batch_size 16 --bptt 256 --max_vocab=95000 --optimizer adam_inverse_sqrt,beta1=0.9,beta2=0.98,lr=0.0001 --epoch_size 114620466 --eval_bleu true --stopping_criterion ‘valid_en-fr_mt_bleu,10’ --validation_metrics ‘valid_en-fr_mt_bleu’
问题1:结果总是超出显存,不断调小tokens_per_batch 参数,从2000调整到400依然不行
问题2:RuntimeError: cuda runtime error (38) : no CUDA-capable device is detected at /pytorch/aten/src/THC/THCGeneral.cpp:50,
CUDA_VISIBLE_DEVICES=‘6,7’,加上这个语句就会报上面错误CUDA_VISIBLE_DEVICES=6,7,去掉引号就可以了,
这次训练不知道怎么了,参数上加引号的,都把引号算作参数中的字符从而出现报错,所以吧命令中的引号都去掉了,才顺利执行
超出显存这个问题是绕不过了
《未完待续…》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。