You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GPT-2微调脚本运行时出现IndexError: index out of range in self的问题求助

GPT-2微调脚本运行时出现IndexError: index out of range in self的问题求助

Hey Joe,我来帮你拆解这个问题并给出解决方案!

关于你问的「index指的是什么」

你遇到的IndexError: index out of range in self里的index,指的是你新添加的[PAD] token对应的ID。GPT-2预训练模型的原始词汇表大小是50257,你给tokenizer添加[PAD]后,这个新token的ID就是50257(词汇表索引从0开始),但模型的词嵌入层还保持着原始的50257个向量的规模,当tokenizer把这个超出原始范围的ID传入模型时,就触发了索引越界的错误。

错误原因&解决办法

问题出在你只给tokenizer添加了pad token,却没有同步更新GPT-2模型的词嵌入层和语言模型头的参数。只需要在添加pad token后,调用model.resize_token_embeddings()方法,让模型适配新的词汇表大小即可。

修改后的完整可运行代码

from datasets import load_dataset
from transformers import GPT2Tokenizer, GPT2LMHeadModel, Trainer, TrainingArguments

# 调整顺序:先处理tokenizer,再加载模型
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
tokenizer.add_special_tokens({'pad_token': '[PAD]'})

# 加载模型后立刻调整嵌入层大小,匹配tokenizer的新词汇表
model = GPT2LMHeadModel.from_pretrained('gpt2')
model.resize_token_embeddings(len(tokenizer))  # 关键修复步骤

# 准备训练数据
train_file_path = 'shakespeare.txt'
extension = "text"
data_files = train_file_path

raw_datasets = load_dataset(
    extension,
    data_files=data_files,
)

def tokenize_function(examples):
    return tokenizer(examples['text'], padding='max_length', truncation=True, max_length=512)

column_names = list(raw_datasets["train"].features)
tokenized_datasets = raw_datasets.map(
    tokenize_function,
    batched=True,
    remove_columns=column_names,
)

# 训练参数设置
training_args = TrainingArguments(
    output_dir='./results',
    num_train_epochs=3,
    per_device_train_batch_size=2,
    per_device_eval_batch_size=2,
    warmup_steps=500,
    weight_decay=0.01,
    logging_dir='./logs',
    logging_steps=1000,
    save_steps=5000,
    evaluation_strategy='steps',
    eval_steps=5000,
    load_best_model_at_end=True
)

# 初始化Trainer并开始训练
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized_datasets["train"]
)

trainer.train()

额外说明

我还调整了tokenizer和模型的加载顺序,先处理tokenizer再加载模型,这样能确保resize_token_embeddings操作准确匹配最新的词汇表规模,避免潜在的逻辑问题。

备注:内容来源于stack exchange,提问作者joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 11:59:30