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

如何向Transformers Pipeline输入文本时限制为512个token?

解决BERT模型Pipeline处理长文本的长度超限问题

问题场景

使用Transformers Pipeline测试本地预训练BERT模型时,短文本(token数<512)运行正常,但长文本触发报错:
RuntimeError: The size of tensor a (1593) must match the size of tensor b (512) at non-singleton dimension 1

现有代码

预测逻辑代码

def get_predicted_folder(text, model):
    pipe = pipeline("text-classification", model=model)
    if text:
        predicted_folder = pipe(text)
        label = predicted_folder[0]['label']
        score = predicted_folder[0]['score']
        return label, score
    else:
        err = "Error: The provided text is empty."
        return err, None

my_saved_model = "model/danish_bert_model"  # 本地保存的模型
label, score = get_predicted_folder(text, my_saved_model)

训练阶段分词代码

def tokenize_dataset(tokenizer, examples):
    return tokenizer(examples['text'], truncation=True, max_length=512)
tokenizer = AutoTokenizer.from_pretrained(model_ckpt)
dataset = dataset.map(lambda examples: tokenize_dataset(tokenizer, examples), batched=True)

已尝试的无效操作

  • 为Pipeline传入tokenizer=model参数
  • 提前加载分词器但未配置截断参数

解决方案

问题核心是Pipeline默认不对长文本做截断,而BERT模型最大输入长度固定为512,必须显式配置分词器的截断规则:

修正后的预测函数

from transformers import AutoTokenizer

def get_predicted_folder(text, model_path):
    # 加载与模型匹配的分词器
    tokenizer = AutoTokenizer.from_pretrained(model_path)
    # 初始化Pipeline时传入分词器并强制截断
    pipe = pipeline(
        "text-classification",
        model=model_path,
        tokenizer=tokenizer,
        truncation=True,
        max_length=512
    )
    if text:
        predicted_folder = pipe(text)
        return predicted_folder[0]['label'], predicted_folder[0]['score']
    else:
        return "Error: The provided text is empty.", None

my_saved_model = "model/danish_bert_model"
label, score = get_predicted_folder(text, my_saved_model)

关键要点

  • 必须单独加载分词器实例传入Pipeline,不能直接传模型路径作为tokenizer参数
  • 通过truncation=True和max_length=512确保输入文本被截断到模型支持的最大长度
  • 若需保留更多文本信息,可实现滑动窗口分段预测后取加权平均,但基础场景下截断即可解决报错

内容的提问来源于stack exchange,提问作者D. F. R. 123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:35:17