ModernBERT:英伟达开源的新一代编码器模型,性能超越 SOTA,通过去除填充和序列打包减少计算浪费,提高训练和推理的效率

231 阅读3分钟

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

原文链接:mp.weixin.qq.com/s/VgNrSY9YE…


🚀 快速阅读

  1. 功能:支持长上下文处理、信息检索、文本分类、实体识别和代码检索。
  2. 技术:基于现代化 Transformer 架构,优化参数和注意力机制,减少计算浪费。
  3. 应用:适用于语义搜索、内容推荐、自然语言理解和问答系统等场景。

正文(附运行示例)

ModernBERT 是什么

公众号: 蚝油菜花 - ModernBERT

ModernBERT 是由 Answer.AI、LightOn、约翰斯·霍普金斯大学、英伟达和 HuggingFace 联合推出的现代编码器-only Transformer 模型,是对经典 BERT 模型的一次重大升级。ModernBERT 在 2 万亿 token 的大规模数据上训练,支持长达 8192 token 的序列长度,显著提升处理长上下文的能力。

ModernBERT 在多种自然语言处理任务上性能赶超 SOTA,同时速度是 DeBERTa 的两倍,特别适合信息检索、文本分类和实体识别等应用。模型现已开源,供学术界和工业界研究和应用。

ModernBERT 的主要功能

  • 长上下文处理:支持长达 8192 token 的序列,相较于传统模型,大幅提升处理长文本的能力。
  • 信息检索:在语义搜索和文档检索任务中,ModernBERT 能更有效地表示文档和查询,提高检索准确性。
  • 文本分类:包括情感分析、内容审核等任务,能快速进行文本分类。
  • 实体识别:在自然实体识别(NER)任务中,识别文本中的特定实体。
  • 代码检索:在编程语言相关的任务中也表现出色,能处理和检索大量代码信息。
  • 效率提升:在保持高性能的同时,在速度和内存使用上进行优化,让模型更加高效。

ModernBERT 的技术原理

  • 现代化 Transformer 架构:基于 Transformer 架构改进,包括旋转位置嵌入(RoPE)和 GeGLU 激活函数,有助于模型更好地理解和处理长序列数据。
  • 参数优化:移除不必要的偏置项,更有效地利用参数预算,简化模型架构。
  • 注意力机制:引入交替的全局和局部注意力机制,提高模型处理长文本的效率。
  • Unpadding 和序列打包:去除填充(Unpadding)和序列打包(Sequence Packing),减少计算浪费,提高训练和推理的效率。
  • 硬件感知模型设计:在设计时考虑硬件的利用,基于优化模型结构最大化 GPU 的利用率。
  • 大规模训练数据:在 2 万亿 token 的大规模数据集上进行训练,包括网络文档、编程代码和科学文章,让模型具有更广泛的语言理解和应用能力。

如何运行 ModernBERT

ModernBERT 的训练和评估依赖于 composer 框架,所有训练都通过 YAML 文件进行配置。以下是一个简单的环境设置和训练示例:

conda env create -f environment.yaml
conda activate bert24
pip install "flash_attn==2.6.3" --no-build-isolation

训练 ModernBERT 模型时,可以使用 yamls 文件夹中的示例配置文件,例如 yamls/main/flex-bert-rope-base.yaml

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦