-
conda package下载:https://pan.seu.edu.cn:443/link/DD2C607645BDFE29F170E4A45CC0412A 有效期限:2028-10-19 访问密码:Q8rz
-
已训练好的
model.pt
下载:https://pan.seu.edu.cn:443/link/A283F7808F10ECFA1F1752D4C22FDD66 有效期限:2028-10-20 访问密码:X2d8 -
HuggingFace相关(暂时不用):https://pan.seu.edu.cn:443/link/3D80A0FFBB56DB0AC396666DC37112FD 有效期限:2028-10-20 访问密码:LngL
-
下载完成后请直接放置在当前文件夹,使用
pwd
命令查看当前目录,应该为../../../fairseq/
,RoBERTa.tar.gz
和model.pt
在当前目录下
-
创建目录
RoBERTa
,并将环境解压至该目录:mkdir -p RoBERTa tar -xzf RoBERTa.tar.gz -C RoBERTa
-
激活环境,同时这步操作会将路径
RoBERTa/bin
添加到环境变量 path:source RoBERTa/bin/activate
-
在环境中运行 Python,确认版本无误后请进入预训练部分:
(RoBERTa) $ python Python 3.9.18 (main, Sep 11 2023, 13:41:44)
-
之后的全部代码运行完成后,停用环境以将其从环境变量 path 中删除
(RoBERTa) $ source RoBERTa/bin/deactivate
数据应该按照语言建模格式进行预处理,即每个文档之间应该用空行分隔(只在使用 --sample-break-mode complete_doc 时有用)。在训练期间,这些行将被连接成一个一维文本流。
cd src
python split_data.py
请注意修改split_data.py
文件中的txt_files
参数为所有数据文件组成的列表
然后将所有数据移至当前目录的mydata
文件夹中
mv data.train.raw ./mydata/
mv data.test.raw ./mydata/
mv data.valid.raw ./mydata/
for SPLIT in train valid test; do \
python -m examples.roberta.multiprocessing_bpe_encoder \
--encoder-json gpt2_bpe/encoder.json \
--vocab-bpe gpt2_bpe/vocab.bpe \
--inputs mydata/data.${SPLIT}.raw \
--outputs mydata/data.${SPLIT}.bpe \
--keep-empty \
--workers 60; \
done
更换数据时,请将数据放入一个文件夹内,如创建mydata
文件夹,将data.train.raw
data.test.raw
和data.valid.raw
放入该文件夹,并将inputs
参数行改为--inputs mydata/data.${SPLIT}.raw \
,对应outputs
参数行改为--outputs mydata/data.${SPLIT}.bpe \
fairseq-preprocess \
--only-source \
--srcdict gpt2_bpe/dict.txt \
--trainpref mydata/data.train.bpe \
--validpref mydata/data.valid.bpe \
--testpref mydata/data.test.bpe \
--destdir data-bin/mydata \
--workers 60
此处trainpref
validpref
testpref
和destdir
参数注意更改,与上一步同理
这里指定DATA_DIR
相对路径可能会出问题,建议使用绝对路径,注意更改DATA_DIR
DATA_DIR=data-bin/mydata
finetune
的config
放在了src/examples/roberta/config/finetuning/finetune.yaml
,请根据实际情况调整参数,需要注意的是src/examples/roberta/config/finetuning/finetune.yaml
的max_update
参数必须大于src/examples/roberta/config/pretraining/base.yaml
中的该参数
mv ../model.pt ./
fairseq-hydra-train -m --config-dir examples/roberta/config/finetuning --config-name finetune task.data=$DATA_DIR checkpoint.restore_file=./model.pt
首先通过以下命令找到checkpoint_best.pt
文件
find . -type f -name "*.pt"
移动到一个文件夹pt里
mkdir pt
cp checkpoint_best.pt文件的路径 ./pt/model.pt
cp ./gpt2_bpe/dict.txt ./pt/
python convert_roberta_original_pytorch_checkpoint_to_pytorch.py --roberta_checkpoint_path ./pt/ --pytorch_dump_folder_path ./
当前目录新生成的pytorch_model.bin
和config.json
即为目标文件
Ott, M., Edunov, S., Baevski, A., Fan, A., Gross, S., Ng, N., Grangier, D., & Auli, M. (2019). fairseq: A Fast, Extensible Toolkit for Sequence Modeling. Proceedings of NAACL-HLT 2019: Demonstrations.