一批文本逐条跑模型,Transformers Pipeline 可以边读边交结果

开源项目猫目发布于 来源:Hugging Face Transformers 官方资料
不必先把整份数据展开进内存;任务、模型和输入格式对齐后,再决定是否批量计算。

为什么值得关注

用统一推理接口处理文本数据,并保留逐项结果与原记录的对应。

适合谁:开始自行运行模型、需要处理一批资料的Python开发者

这次有哪些亮点

  • pipeline连接预处理、推理和结果处理
  • 可迭代处理数据集或生成器
  • 按硬件与输入长度决定批量设置

使用前需要知道

框架与模型许可分开;batch_size不保证加速,过长或不均匀输入可能增加显存占用。需按具体任务和模型核对语言范围。

几千条文本需要分类,最容易写出的办法是先把所有内容读进一个大列表,再一次性交给模型。数据量变大以后,内存和输入长度就会成为问题。Transformers的Pipeline不仅提供简单调用,也允许沿数据集或生成器逐项处理,让结果随着输入往下走。

对刚开始自行运行模型的人,这比立刻搭一个复杂服务更容易理解:先对准一项任务、一份模型和一批能核对的材料。

同一个入口,任务与模型都要明确

官方Pipeline指南将预处理、模型推理和输出处理放进同一个高层接口。创建时指定任务和模型,再按任务提供文字、图片或音频等相应输入。

任务名称相同,也不代表所有模型支持的语言和输出标签相同。比如文本分类,可能是情绪标签,也可能是另一个模型定义的类别。应用保存结果时,应保留实际模型标识和标签含义,不能把任何分类结果都叫作“内容质量分”。

这个接口降低的是调用环节的重复工作,真正的判断仍来自选定模型能完成什么,以及它的输出是否符合你要交付的表格或记录。

数据集不必先一次性变成列表

官方示例使用KeyDataset,从一份数据集里取出指定文本字段,再把可迭代对象交给pipeline,循环读取每条结果。指南也展示了直接使用生成器的方式,不要求事先把所有输入展开成一张完整列表。

这种组织方式适合把模型输出接回原始记录。实际应用中,最好让记录ID和文本位置保持对应,处理一条就保存一条结果或状态。否则,某一步失败后,只剩下若干标签,很难知道它们属于哪些原文。

以读者反馈整理作教学情境,可以先保留反馈ID和原文,再写入模型给出的分类。这个流程并没有证明某个模型适合中文反馈;它只是让之后核对、重跑或人工修正有清楚的位置。

batch_size为什么不是越大越好

Pipeline还提供批量推理参数,但官方指南明确提醒,批量不保证加速。硬件、模型和输入长度都会影响表现。尤其一组文本里有的很短、有的很长,准备批次时的填充和计算开销可能与直觉不同,还需要处理显存不足。

因此,“可以逐项读取数据”和“每次把多少项交给模型”是两个选择。前者帮助组织输入输出,后者影响运行效率。可以先用少量真实材料确保字段与结果对应,再在同一设备上调整批量并观察等待时间和资源,而不是先写一个很大的数字。

Transformers仓库覆盖多种模型架构,框架采用Apache 2.0,实际权重仍遵循各自许可。对于需要重复处理资料的人,Pipeline最有用的地方,是把每次调用接进可以继续整理的数据流程:输入能定位,输出能复查,失败后也知道该从哪里继续。

原始资料:Hugging Face Transformers 官方资料

以上为编辑整理,功能、许可与使用条件以官方说明为准。

返回每日分享