大佬教程收集整理的这篇文章主要介绍了运行时错误:索引 3 处的输入张量的形状无效 [2, 2, 16, 128, 64] 但预期为 [2, 4, 16, 128, 64],大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用 SageMaker 中的 GPT2-medium 库对预训练的 Huggingface 模型进行微调时出现运行时错误 - ml.p3.8xlarge 实例。
finetuning_gpt2_script.py
包含以下内容,
图书馆:
from transformers import Trainer,TrainingArguments
from transformers import EarlyStopPingCallBACk
from transformers import GPT2LMheadModel,GPT2Tokenizer
from transformers import TextDataset,DataCollatorForLanguageModeling
预训练模型:
gpt2_model = GPT2LMheadModel.from_preTrained("gpt2-medium")
gpt2_tokenizer = GPT2Tokenizer.from_preTrained("gpt2-medium")
训练和测试数据构建:
Train_dataset = TextDataset(
tokenizer=gpt2_tokenizer,file_path=Train_path,BLOCK_SIZE=128)
test_dataset = TextDataset(
tokenizer=gpt2_tokenizer,file_path=test_path,BLOCK_SIZE=128)
data_collator = DataCollatorForLanguageModeling(
tokenizer=gpt2_tokenizer,mlm=false,)
Train_path
& test_path
是大小为 145 万和 20 万行数据的非结构化文本数据文件
训练参数:
Training_args = TrainingArguments(
output_dir="./gpt2-finetuned-models",#The output directory
overwrite_output_dir=True,#overwrite the content of the output directory
num_Train_epochs=1,# number of Training epochs
per_device_Train_batch_size=8,# batch size for Training #32
per_device_eval_batch_size=8,# batch size for evaluation #64
save_steps=100,# after # steps model is saved
warmup_steps=500,# number of warmup steps for learning rate scheduler
preDiction_loss_only=True,metric_for_best_model = "eval_loss",load_best_model_at_end = True,evaluation_strategy="epoch",)
Training_args
是为训练模型而构建的训练参数。
培训师:
Trainer = Trainer(
model=gpt2_model,args=Training_args,data_collator=data_collator,Train_dataset=Train_dataset,eval_dataset=test_dataset,callBACks = [early_stop_callBACk],)
early_stop_callBACk = EarlyStopPingCallBACk(early_stopPing_patIEnce = 3)
培训:
Trainer.Train()
Trainer.save_model(model_path)
在这里,使用 ml.p3.8xlarge 实例在 4 个 GPU 中仅完成了 1 个时期的训练。
训练是通过像下面这样的火炬分配来完成的,
python -m torch.diStributed.launch finetuning_gpt2_script.py
在 epoch 结束时进行训练,观察到以下错误,
RuntimeError: input tensor at index 3 has invalID shape [2,2,16,128,64] but expected [2,4,64]
RuntimeError
是否是因为 Train_dataset
和 test_dataset
使用 TextData
构造的方式?torch-diStribution
中做错了吗?以上是大佬教程为你收集整理的运行时错误:索引 3 处的输入张量的形状无效 [2, 2, 16, 128, 64] 但预期为 [2, 4, 16, 128, 64]全部内容,希望文章能够帮你解决运行时错误:索引 3 处的输入张量的形状无效 [2, 2, 16, 128, 64] 但预期为 [2, 4, 16, 128, 64]所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。