Transformers 是一个由 Hugging Face 开发的开源软件库,为涵盖自然语言处理、计算机视觉和音频处理等任务提供数千种预训练的transformer模型架构和权重。该库于2018年在GitHub上公开发布,迅速成为机器学习生态系统中的核心工具,提供了一个统一的API来加载、微调和部署来自领先研究实验室和公司的模型。其设计强调易用性、互操作性和可扩展性,使先进的深度学习技术对研究人员和行业从业者都变得易于使用。
该库支持使用TensorFlow、PyTorch和jax构建的模型,允许用户以最少的代码更改在不同框架之间切换。它包含一个模型中心,截至2023年底托管了超过200,000个预训练检查点,范围从大型语言模型(如Llama和gpt)到来自Google DeepMind的视觉transformer,以及诸如Whisper的语音模型。该库的流行源于其跨不同架构的一致API,抽象了框架特定的细节,并支持快速实验。
架构与核心组件
Transformers库围绕三个主要抽象组织:PreTrainedModel类、Tokenizer类和Pipeline类。模型类处理权重、配置和序列化,而tokenizer将原始文本转换为与模型期望兼容的数值输入。Pipeline为文本分类、命名实体识别、问答和摘要等任务提供高级接口,隐藏了底层预处理和后处理步骤。
一个关键的设计选择是将模型配置与权重分离。配置存储超参数,如层数、隐藏维度和注意力头数,使用户无需加载预训练权重即可实例化模型。这种模块化支持自定义架构以及高效的剪枝和量化工作流。该库还包括用于优化器集成、学习率调度以及跨多个GPU或TPU进行分布式训练的实用工具。
支持的模型家族
自成立以来,Transformers已从一小部分架构扩展到涵盖几乎所有主要的模型家族。早期添加包括来自Google的BERT和来自OpenAI的GPT-2。随着时间的推移,它整合了来自Meta的Llama变体、Mistral AI、来自tii的Falcon以及来自Google的Gemma等数百种其他模型。对于序列到序列任务,该库提供T5 (Text-to-Text Transfer Transformer)、BART和m2m-100。对于视觉,它支持Vision Transformer (ViT)、swin、detr和来自OpenAI的CLIP。
该库还处理跨模态模型,如imagebind、blip和flamingo,它们结合了文本、图像和音频输入。模型中心的社区驱动特性允许第三方贡献者上传针对特定任务(如医学笔记摘要或代码生成)的微调版本。这种广度使Transformers成为人工智能研究社区中模型传播和复用的事实标准。
分词与预处理
分词是该库的关键组成部分,支持多种分词算法,包括字节对编码(BPE)、WordPiece和SentencePiece。几种tokenizer类型处理语言特定的细微差别,包括日语和韩语等语言的子词分词。该库还提供用Rust编写的快速tokenizer,与纯Python实现相比,其速度显著提升,这对于大规模训练和推理至关重要。
除了文本之外,Transformers还包括用于图像和音频输入的处理器,例如AutoImageProcessor和AutoFeatureExtractor。这些将原始像素或波形转换为与模型输入兼容的张量格式。统一的Auto API类通过根据检查点名称自动检测正确的类来简化模型和tokenizer的实例化,减少了样板代码和潜在错误。
训练与微调
该库与Hugging Face的Trainer类紧密集成,这是一个高级训练循环,处理梯度累积、混合精度、学习率预热和评估循环。它通过horovod和accelerate库支持分布式训练,后者抽象了多GPU和TPU设置。为特定数据集微调预训练模型通常只需几百行代码,包括数据加载、分词和训练回调。
Trainer还通过集成TRL(Transformer强化学习)等库,支持基于AI反馈的强化学习等高级技术。此外,该库提供了参数高效微调方法的实用工具,如LoRA和前缀调优,这些方法减少了内存需求,并支持在消费级硬件上进行微调。这些特性使Transformers成为学术研究和工业部署的首选。
推理与部署
该库包含一个优化的推理路径,支持onnx导出、tensorrt优化以及用于服务大型模型的vLLM集成。Pipeline类为生产使用提供了一个简单接口,接收原始文本或文件并返回预测结果。对于边缘设备,Transformers可以将模型量化为8位或4位精度,在保持性能的同时减少内存占用。它还支持用于文本生成的Beam Search、Top-K Sampling和Top-P (Nucleus) Sampling策略,可通过生成配置进行控制。
对于可扩展的服务,该库与hugging-face-inference-endpoints和Amazon SageMaker互操作,允许用户在REST API后面部署模型。它还与onnx-runtime和openvino集成,用于跨硬件供应商(包括AMD和Intel)的CPU和GPU优化。该库的序列化格式(safetensors)确保快速加载和安全的权重处理,减轻了与pickle反序列化相关的安全风险。
社区与生态系统
Transformers库是更大的Hugging Face生态系统的一部分,该生态系统包括Datasets、Tokenizers、Accelerate和Evaluate。公共模型中心不仅托管检查点,还托管数据集和评估工具,促进了可复现性。该库已被主要云提供商采用:Amazon Web Services通过SageMaker提供托管API,Microsoft Azure在AI笔记本上托管它,Google Cloud支持TPU训练,Oracle Cloud Infrastructure提供专用计算。像Groq和SambaNova这样的独立硬件初创公司也开发了在其加速器上运行Transformers模型的优化。
贡献来自广泛的学术和工业合作伙伴网络,包括Stanford AI Lab、University of Toronto和卡内基梅隆大学。企业赞助商和用户涵盖从医疗保健(例如,Intuitive Surgical研究)到汽车(例如,TomTom用于导航)等多个领域,并且该库已在数千篇研究论文中被引用。其宽松的Apache 2.0许可证和活跃的治理模式维持了一个庞大的全球维护者和贡献者社区。
对AI领域的影响
Transformers的引入加速了从专用模型向具有迁移学习的通用架构的转变。通过提供预训练权重,它消除了大多数从业者从头训练模型的需要,将计算成本降低了几个数量级。这种民主化使小型团队和独立开发者能够为小众任务微调大型模型,促进了生成式AI、聊天机器人系统和代码生成领域AI应用的激增。
该库还影响了模型开发实践,标准化了检查点格式并促进了开放研究。像Apple的Core ML和AMD的ROCm这样的竞争对手开发了与Transformers互操作的层。该库的成功催生了类似的举措,如Hugging Face的sentence-transformers和diffusers,它们将相同的设计理念扩展到嵌入和图像生成。
批评与局限性
尽管因其易用性和广度而广受赞誉,但Transformers也因其庞大的规模和对PyTorch或TensorFlow等重型库的依赖而面临批评。大量的模型和配置可能令人不知所措,并且主要版本有时会破坏向后兼容性。此外,该库对transformer架构的关注导致一些人认为它固化了特定范式,而像Mamba这样的状态空间模型和线性注意力方法等替代方案因长序列效率而受到关注。
对于需要专门硬件的大型模型,性能问题也会出现,尽管该库通过量化和卸载到CPU内存来解决这个问题。Hugging Face对开源原则的承诺受到称赞,但与OpenAI的API或Google Cloud的Vertex AI等竞争对手相比,商业支持和企业功能开发较少。尽管存在这些挑战,Transformers仍然是大多数从业者使用transformer模型的主要入口。
历史与发布
该库的首次公开发布于2018年10月1日,支持BERT和GPT-2。2019年的2.0版本增加了训练工具和更广泛的模型库。2020年引入Auto类是一个重要的里程碑,简化了模型加载。到2021年,该库在GitHub上拥有超过10,000颗星,成为增长最快的开源项目之一。2022年,Hugging Face引入了基于bleu的评估指标和Trainer回调系统,并在2023年,该库达到4.30版本,增加了对多模态和长上下文模型(如longformer和bigbird)的支持。
该项目的开发由Hugging Face的核心团队监督,该实体得到了Amazon Web Services和google的投资支持。虽然最初专注于NLP,但该库现在支持视觉和音频,这得益于Vision Transformer (ViT)、wav2vec2和clap的发布。截至2024年,Transformers是GitHub上星标最多的仓库之一,拥有超过100,000颗星,每周下载量超过2000万次,突显了其在现代应用深度学习和生成式AI中的核心作用。
局限性与批评
尽管取得了成功,但该库因其对Hugging Face模型中心集中式模型托管的依赖而面临批评,这引发了对供应商锁定和可用性的担忧。tokenizer和模型加载中的安全漏洞需要采取 safetensors和限制pickle使用等保障措施。对于极大的模型,抽象层带来的性能开销可能不容忽视,尽管vLLM和tensorrt-llm集成缓解了这一点。此外,新架构的快速添加有时会导致文档不一致或API弃用,尽管社区通过详细的发布说明和示例笔记本缓解了这些问题。
未来方向
正在进行的开发侧重于改进对长上下文模型、多模态架构和端上部署的支持。静态量化和推测解码等功能正在集成以减少推理延迟。该团队还探索与基于浏览器的运行时(如webllm)和基于Rust的引擎集成,用于无服务器应用。随着领域的发展,Transformers旨在保持其作为模型分发中立中心的角色,并支持像DeepSeek这样的开放权重模型和社区微调。该库继续与更广泛的机器学习格局共同发展,其发布与新兴研究和硬件能力保持同步。
该项目的治理保持开放,Hugging Face作为主要维护者和指导委员会。定期发布周期(大约每月一次)会增加新的模型支持、错误修复和性能增强。凭借其在学术界和工业界的广泛采用,Transformers作为当前人工智能发展浪潮的基础设施,支持从AI助手到机器人控制策略的创新,其影响力在可预见的未来可能会持续存在。