ModernBERT-base:终于等到了 BERT 回归

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: BERT于 2018 年发布(史前人工智能!),但它至今仍被广泛使用,BERT的纯编码器架构使其成为每天出现的各种场景的理想选择,例如检索、分类和实体提取。

01.引言

BERT于 2018 年发布(史前人工智能!),但它至今仍被广泛使用,BERT的纯编码器架构使其成为每天出现的各种场景的理想选择,例如检索、分类和实体提取。

6 年后,社区终于推出了替代品!今天,Answer.AI和LightOn发布了 ModernBERT。ModernBERT 是一个新的模型系列,在速度和准确性方面都比 BERT 系列实现了改进。该模型采用了近年来在大型语言模型 (LLM) 方面的数十项进展,并将它们应用于 BERT 风格的模型,包括对架构和训练过程的更新。

Decoder-Only 模型生成类似人类内容的能力使 GenAI 能够实现令人惊叹的全新应用领域,例如生成艺术和交互式聊天。但是许多实际应用需要一个精简的模型!而且它不需要是一个生成模型。对于大多数公司来说,大参数量的Decoder-Only模型过于复杂且成本高昂,难以复制。比如Llama的405B模型,或者闭源模型,通常需要等待几秒钟才能获得完整的 API 回复。而实际上更加精简,处理速度更快的小模型,可能更加适合传统的自然语言理解场景。

Encoder-Only模型的输出是数值列表(embedding tensor)。您可能会说,编码器模型不是用文本回答,而是将其“答案”直接编码为这种压缩的数字形式。该向量是模型输入的压缩表示,这就是为什么仅编码器模型有时被称为表征模型。

与参数量较大的Decoder-Only的模型相比,Encoder-Only的 Transformer 模型(例如 BERT)在检索和分类任务中提供了出色的性能和尺寸权衡。ModernBERT,它将现代模型优化引入Encoder-Only的模型,并且与旧编码器相比实现了重大的改进。ModernBERT 模型在 2 万亿个具有原生 8192 序列长度的 token 上进行训练,在大量评估中表现出最佳结果,这些评估涵盖了各种分类任务以及不同域(包括代码)上的单向量和多向量检索。除了强大的下游性能外,ModernBERT 还是速度和内存效率最高的编码器,专为在常见 GPU 上进行推理而设计。

02.模型概述

ModernBERT 是一种现代化的双向编码器 Transformer 模型(BERT 风格),预训练于 2 万亿个英文和代码数据标记,原生上下文长度可达 8,192 个标记。ModernBERT 利用了最近的架构改进,如:

  • Rotary Positional Embeddings 支持最多 8192 个标记的序列。
  • Unpadding 以确保不会在填充标记上浪费计算资源,从而加快混合长度序列批次的处理时间。
  • GeGLU用 GeGLU 层替换原来的 MLP 层,可提高性能。
  • Alternating Attention :大多数注意力层采用 128 个标记的滑动窗口,而全局注意力机制每 3 层才使用一次。
  • Flash Attention 注意加速处理。
  • 按照最近的“与硬件共同设计模型架构的案例”设计的模型,确保跨推理 GPU 的最高效率。
  • 现代训练数据规模(2 trillion tokens)和混合数据(包括代码和数学数据)

模型表现

添加图片注释,不超过 140 字(可选)

ModernBERT 的原生长上下文长度使其非常适合需要处理长文档的任务,例如检索、分类和大型语料库内的语义搜索。该模型在大量的文本和代码语料库上进行了训练,适用于广泛的下游任务,包括代码检索和混合(文本 + 代码)语义搜索。

模型下载

ModernBERT有以下几种大小可供选择:

03.模型推理

在魔搭社区长期免费的CPU资源上,即可流畅的运行ModernBERT模型,ModernBERT-base所需内存仅500M,处理速度ms级。

同时也可以使用GPU机器,更好的结合flash attention对ModernBERT模型加速。

添加图片注释,不超过 140 字(可选)

环境安装

!pip install git+https://github.com/huggingface/transformers.git

使用 AutoModelForMaskedLM模型推理

from transformers import AutoTokenizer, AutoModelForMaskedLM from modelscope import snapshot_download model_id = snapshot_download("answerdotai/ModernBERT-base") tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForMaskedLM.from_pretrained(model_id) text = "The capital of France is [MASK]." inputs = tokenizer(text, return_tensors="pt") outputs = model(**inputs) # To get predictions for the mask: masked_index = inputs["input_ids"][0].tolist().index(tokenizer.mask_token_id) predicted_token_id = outputs.logits[0, masked_index].argmax(axis=-1) predicted_token = tokenizer.decode(predicted_token_id) print("Predicted token:", predicted_token) # Predicted token:  Paris

使用pipeline:

import torch from transformers import pipeline from pprint import pprint pipe = pipeline(     "fill-mask",     model="answerdotai/ModernBERT-base",     torch_dtype=torch.bfloat16, ) input_text = "He walked to the [MASK]." results = pipe(input_text) pprint(results)

04.模型微调

我们使用ms-swift对ModernBERT-base进行分类任务微调。ms-swift是魔搭社区官方提供的大模型与多模态大模型微调部署框架。

ms-swift开源地址:

https://github.com/modelscope/ms-swift

微调数据集:

https://modelscope.cn/datasets/simpleai/HC3

在开始微调之前,请确保您的环境已准备妥当。

git clone https://github.com/modelscope/ms-swift.gitcd ms-swift pip install -e .[llm]

微调脚本如下:

CUDA_VISIBLE_DEVICES=0 \ swift sft \     --model answerdotai/ModernBERT-base \     --dataset simpleai/HC3:finance_cls#20000 \     --task_type seq_cls \     --num_labels 2 \     --train_type lora \     --torch_dtype bfloat16 \     --num_train_epochs 1 \     --per_device_train_batch_size 16 \     --per_device_eval_batch_size 16 \     --learning_rate 1e-4 \     --lora_rank 8 \     --lora_alpha 32 \     --target_modules all-linear \     --freeze_vit true \     --gradient_accumulation_steps 1 \     --eval_steps 100 \     --save_steps 100 \     --save_total_limit 5 \     --logging_steps 5 \     --max_length 2048 \     --output_dir output \     --warmup_ratio 0.05 \     --dataloader_num_workers 4

训练显存资源:

添加图片注释,不超过 140 字(可选)

自定义数据集格式如下,只需要指定`--dataset <dataset_path>`即可:

{"messages": [{"role": "user", "content": "今天天气真好呀"}], "label": 1} {"messages": [{"role": "user", "content": "今天真倒霉"}], "label": 0} {"messages": [{"role": "user", "content": "好开心"}], "label": 1}

训练分类acc:

添加图片注释,不超过 140 字(可选)

训练完成后,使用以下命令对训练时的验证集进行推理:

这里`--adapters`需要替换成训练生成的last checkpoint文件夹. 由于adapters文件夹中包含了训练的参数文件,因此不需要额外指定`--model`。

CUDA_VISIBLE_DEVICES=0 \ swift infer \     --adapters output/vx-xxx/checkpoint-xxx \     --max_batch_size 16 \     --load_data_args true

微调后模型部署:

CUDA_VISIBLE_DEVICES=0 \ swift deploy \     --adapters output/vx-xxx/checkpoint-xxx

部署完成后,使用以下命令进行客户端调用:

curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{ "model": "ModernBERT-base", "messages": [{"role": "user", "content": "<content>"}] }'

05.结论

本文介绍了 ModernBERT 模型,这是一组新型、先进的小型高效编码器模型,最终使 BERT 得到了急需的改造。

ModernBERT 证明,Encoder-Only的模型可以通过现代方法得到改进。它们在某些任务上继续提供非常强大的性能,提供极具吸引力的尺寸/性能比。

注:本文部分内容引用自blog:https://huggingface.co/blog/modernbert

点击链接阅读原文:ModelScope 魔搭社区

相关文章
|
9天前
|
调度 云计算 芯片
云超算技术跃进,阿里云牵头制定我国首个云超算国家标准
近日,由阿里云联合中国电子技术标准化研究院主导制定的首个云超算国家标准已完成报批,不久后将正式批准发布。标准规定了云超算服务涉及的云计算基础资源、资源管理、运行和调度等方面的技术要求,为云超算服务产品的设计、实现、应用和选型提供指导,为云超算在HPC应用和用户的大范围采用奠定了基础。
179604 21
|
1天前
|
弹性计算 人工智能 安全
对话 | ECS如何构筑企业上云的第一道安全防线
随着中小企业加速上云,数据泄露、网络攻击等安全威胁日益严重。阿里云推出深度访谈栏目,汇聚产品技术专家,探讨云上安全问题及应对策略。首期节目聚焦ECS安全性,提出三道防线:数据安全、网络安全和身份认证与权限管理,确保用户在云端的数据主权和业务稳定。此外,阿里云还推出了“ECS 99套餐”,以高性价比提供全面的安全保障,帮助中小企业安全上云。
对话 | ECS如何构筑企业上云的第一道安全防线
|
18天前
|
人工智能 自然语言处理 前端开发
从0开始打造一款APP:前端+搭建本机服务,定制暖冬卫衣先到先得
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。
9518 25
|
4天前
|
机器学习/深度学习 分布式计算 供应链
阿里云先知安全沙龙(上海站) ——大模型基础设施安全攻防
大模型基础设施的安全攻防体系涵盖恶意输入防御和基础设施安全,包括框架、三方库、插件、平台、模型和系统安全。关键漏洞如CVE-2023-6019(Ray框架命令注入)、CVE-2024-5480(PyTorch分布式RPC)及llama.cpp中的多个漏洞,强调了代码安全性的重要性。模型文件安全方面,需防范pickle反序列化等风险,建议使用Safetensors格式。相关实践包括构建供应链漏洞库、智能化漏洞分析和深度检测,确保全方位防护。
|
6天前
|
JSON 分布式计算 数据处理
加速数据处理与AI开发的利器:阿里云MaxFrame实验评测
随着数据量的爆炸式增长,传统数据分析方法逐渐显现出局限性。Python作为数据科学领域的主流语言,因其简洁易用和丰富的库支持备受青睐。阿里云推出的MaxFrame是一个专为Python开发者设计的分布式计算框架,旨在充分利用MaxCompute的强大能力,提供高效、灵活且易于使用的工具,应对大规模数据处理需求。MaxFrame不仅继承了Pandas等流行数据处理库的友好接口,还通过集成先进的分布式计算技术,显著提升了数据处理的速度和效率。
|
22天前
|
Cloud Native Apache 流计算
资料合集|Flink Forward Asia 2024 上海站
Apache Flink 年度技术盛会聚焦“回顾过去,展望未来”,涵盖流式湖仓、流批一体、Data+AI 等八大核心议题,近百家厂商参与,深入探讨前沿技术发展。小松鼠为大家整理了 FFA 2024 演讲 PPT ,可在线阅读和下载。
5158 15
资料合集|Flink Forward Asia 2024 上海站
|
1月前
|
人工智能 自动驾驶 大数据
预告 | 阿里云邀您参加2024中国生成式AI大会上海站,马上报名
大会以“智能跃进 创造无限”为主题,设置主会场峰会、分会场研讨会及展览区,聚焦大模型、AI Infra等热点议题。阿里云智算集群产品解决方案负责人丛培岩将出席并发表《高性能智算集群设计思考与实践》主题演讲。观众报名现已开放。
|
14天前
|
Docker 容器
|
2天前
|
机器学习/深度学习 人工智能 安全
通义视觉推理大模型QVQ-72B-preview重磅上线
Qwen团队推出了新成员QVQ-72B-preview,这是一个专注于提升视觉推理能力的实验性研究模型。提升了视觉表示的效率和准确性。它在多模态评测集如MMMU、MathVista和MathVision上表现出色,尤其在数学推理任务中取得了显著进步。尽管如此,该模型仍存在一些局限性,仍在学习和完善中。
|
17天前
|
消息中间件 人工智能 运维
12月更文特别场——寻找用云高手,分享云&AI实践
我们寻找你,用云高手,欢迎分享你的真知灼见!
1323 76

热门文章

最新文章