xlm-roberta-longformer-base-4096项目介绍
项目背景
xlm-roberta-longformer-base-4096(简称XLM-Long)是对XLM-R模型的一种扩展,使其能够处理长达4096个标记的序列,而不是常规的512个标记。这个模型是从XLM-RoBERTa的检查点出发,使用Longformer的预训练方案在英文WikiText-103语料库上进行预训练的。
研究动机
该项目的研究目的是探索创建高效Transformer的方法,尤其针对低资源语言,例如瑞典语,而不需要在每种语言的长上下文数据集上进行预训练。这个训练模型是Peltarion的一个硕士论文项目的成果,并在多语言的问答任务上进行了微调。相关代码可以在这里找到。
模型特点
由于XLM-R模型和Longformer模型都是大型模型,建议在运行这些模型时,使用NVIDIA Apex(16位精度)、大GPU以及多个梯度累积步骤。
使用方法
模型可以用于下游任务的微调,例如问答任务。以下是一个使用Python的简单示例:
import torch
from transformers import AutoModel, AutoTokenizer
MAX_SEQUENCE_LENGTH = 4096
MODEL_NAME_OR_PATH = "markussagen/xlm-roberta-longformer-base-4096"
tokenizer = AutoTokenizer.from_pretrained(
MODEL_NAME_OR_PATH,
max_length=MAX_SEQUENCE_LENGTH,
padding="max_length",
truncation=True,
)
model = AutoModelForQuestionAnswering.from_pretrained(
MODEL_NAME_OR_PATH,
max_length=MAX_SEQUENCE_LENGTH,
)
训练过程
模型在WikiText-103语料库上进行了训练,使用了一块48GB的GPU。训练采用如下的脚本和参数,经过6000次迭代,大约花费了5天时间。完整的训练脚本和Github仓库提供了更多信息:
wget https://s3.amazonaws.com/research.metamind.io/wikitext/wikitext-103-raw-v1.zip
unzip wikitext-103-raw-v1.zip
export DATA_DIR=./wikitext-103-raw
scripts/run_long_lm.py \
--model_name_or_path xlm-roberta-base \
--model_name xlm-roberta-to-longformer \
--output_dir ./output \
--logging_dir ./logs \
--val_file_path $DATA_DIR/wiki.valid.raw \
--train_file_path $DATA_DIR/wiki.train.raw \
--seed 42 \
--max_pos 4096 \
--adam_epsilon 1e-8 \
--warmup_steps 500 \
--learning_rate 3e-5 \
--weight_decay 0.01 \
--max_steps 6000 \
--evaluate_during_training \
--logging_steps 50 \
--eval_steps 50 \
--save_steps 6000 \
--max_grad_norm 1.0 \
--per_device_eval_batch_size 2 \
--per_device_train_batch_size 1 \
--gradient_accumulation_steps 64 \
--overwrite_output_dir \
--fp16 \
--do_train \
--do_eval
以上是xlm-roberta-longformer-base-4096项目的详细介绍,希望能对读者有所帮助。