BERT是 Google 于 2018 年 10 月发布的早期语言模型。与现代法学硕士不同,它并不是为生成文本而设计的。 BERT 接受了屏蔽标记预测的训练,通常应用于命名实体识别或情感分析等问题。 BERT 本身也不是很有用——大多数应用程序都需要您在其基础上微调模型。
在探索 BERT 时,我决定尝试dslim/distilbert-NER ,这是一种在 DistilBERT(原始 BERT 模型的较小蒸馏版本)之上进行微调的流行命名实体识别模型。这是我使用uv run
运行该程序的笔记。
Jeremy Howard 的Answer.AI研究小组支持 ModernBERT 的开发,这是一种全新的 BERT 风格模型,应用了过去六年该领域进展的许多增强功能。
BERT 使用 33 亿个 token 进行训练,产生 1.1 亿和 3.4 亿个参数模型,而 ModernBERT 使用 2 万亿个 token 进行训练,产生 1.4 亿和 3.95 亿个参数模型。参数数量并没有增加太多,因为它被设计为在低端硬件上运行。它的 token 上下文长度为 8192,比 BERT 的 512 有显着改进。
我能够使用像这样的uv run
来运行公告帖子中的演示之一(我不确定为什么我必须使用numpy<2.0
但如果没有它,我会收到一个关于cannot import name 'ComplexWarning' from 'numpy.core.numeric'
):
uv run --with ' numpy<2.0 ' --with torch --with ' git+https://github.com/huggingface/transformers.git ' python
然后这个Python:
进口火炬 从变压器进口管道 从pprint导入pprint 管道=管道( “填充掩模” , 模型= “answerdotai/ModernBERT-base” , torch_dtype =火炬. bfloat16 , ) input_text = "他走向[面具]。" 结果=管道(输入文本) 打印结果(结果)
下载了 573MB 到~/.cache/huggingface/hub/models--answerdotai--ModernBERT-base
并输出:
[{ '分数' : 0.11669921875 , 'sequence' : '他走到门口。' , “令牌” : 3369 , 'token_str' : '门' }, { “分数” : 0.037841796875 , 'sequence' : '他走到办公室。' , “令牌” : 3906 , 'token_str' : '办公室' }, { “分数” : 0.0277099609375 , 'sequence' : '他走到图书馆。' , “令牌” : 6335 , 'token_str' : '库' }, { “分数” : 0.0216064453125 , 'sequence' : '他走到门口。' , “令牌” : 7394 , 'token_str' : '门' }, { “分数” : 0.020263671875 , 'sequence' : '他走到窗前。' , “令牌” : 3497 , 'token_str' : '窗口' }]
我期待尝试使用 ModernBERT 作为基础的模型。该模型发布附带一篇论文(更智能、更好、更快、更长:用于快速、内存高效和长上下文微调和推理的现代双向编码器)以及将其与 Transformers 库一起使用的新文档。
标签:人工智能、杰里米-霍华德、变形金刚、拥抱脸、 uv 、 python 、 nlp
原文: https://simonwillison.net/2024/Dec/24/modernbert/#atom-everything