【发布时间】:2022-05-04 03:29:18
【问题描述】:
我在这个问题中找到了从头开始训练模型的答案: How to train BERT from scratch on a new domain for both MLM and NSP?
一个答案使用 Trainer 和 TrainingArguments,如下所示:
from transformers import Trainer, TrainingArguments
training_args = TrainingArguments(
output_dir= "/path/to/output/dir/for/training/arguments"
overwrite_output_dir=True,
num_train_epochs=2,
per_gpu_train_batch_size= 16,
save_steps=10_000,
save_total_limit=2,
prediction_loss_only=True,
)
trainer = Trainer(
model=model,
args=training_args,
data_collator=data_collator,
train_dataset=dataset,
)
trainer.train()
trainer.save_model("path/to/your/model")
但是 huggingface 官方文档Fine-tuning a pretrained model 也同样使用 Trainer 和 TrainingArguments 来进行微调。 那么当我使用 Trainer 和 TrainingArguments 训练模型时,我是从头开始训练模型还是只是微调?
【问题讨论】:
-
取决于您设置为
model的内容。也许你会关注这篇 [博客文章]9https://huggingface.co/blog/how-to-train)。 -
从您发布的代码和您提供的链接中的代码来看,我认为该代码用于微调模型。
-
@cronoik 我看过博客,但它只描述了如何使用 run_language_modeling.py 之类的脚本而不是使用 Trainer。如果您解释了有关“取决于您设置为模型的内容”的更多详细信息,会有帮助的。
-
run_language_modeling脚本也在使用训练器。微调和预训练之间的区别不在于你对你的训练器做了一些特定的事情(也许你会调整学习率)。不同之处在于您随机初始化权重或加载一些权重并针对不是您的最终任务(预训练)的目标训练它们,或者为您想要解决的下游任务(例如情绪分析)训练模型(微调)。 -
我有同样的问题,我真的很迷失阅读他们的文档
标签: huggingface-transformers bert-language-model transformer fine-tune