(2-2|27)🤗Huggingface.Transformers 是什么?
2022.2.7 星期一 300P 进度:(2-2|27)
接下来几篇,准备介绍一个在 NLP 领域用的很广泛的端到端机器学习库:Huggingface.Transformers。
在目前的 NLP 领域(学界+工业界),算是一个公认的对齐模型资源的库。
本篇先大致介绍下它是什么、能干啥。基本上是官方介绍文档中一些主要内容的翻译复述。
是什么
可以理解为一个预训练模型库吧。
Transformers 本身是一个经典通用的端到端模型的范式。Huggingface 是一个公司。
Huggingface.Transformers(后续简称为 hf)是这个公司对这个技术范式的一个集大成的库。
能干什么
hf 提供了上千中预训练好的模型,这些模型可以应用在很多任务上:
文本处理。文本分类,信息抽取,问答,摘要,翻译,文本生成等。支持上百种语言。
图像处理。图像分类,物体检测,语义分割。
声音处理。语音识别,语音分类等。
而且还可以做很多多模态结合的任务:
基于表格的问答
光学字符识别 ocr
从扫描文档中信息抽取
视觉问答 visual QA
怎么用
hf 提供了 API,可以支持下载预训练模型,基于这些模型对给定文本进行处理,基于你自己的数据集微调模型并把未调好的模型贡献回社区(model hub)。
hf 架构在三个最流行的深度学习框架的:Jax, PyTorch, TensorFlow。 你可以在训练和预测时使用不同的框架。
安装
如果在你的环境中已经安装了:Python 3.6+, and PyTorch 1.1.0+ or TensorFlow 2.0+.
那么安装 hf 就很简单:
当然,还可以从 source 安装等,不赘述。
用 pipeline()做预测
pipeline()是 hf 中应用模型的 API。举个例子,做情感识别。
选择任务类型(“sentiment-analysis”),定义出一个分类器,然后把待处理文本输入,得到输出: 正向,置信度:接近 1。
这个分类器没有选择模型,使用默认的模型(“distilbert-base-uncased-finetuned-sst-2-english”)。
假设有你自己训练好的模型,可以如下设置。
设计哲学
::为谁建立:::
研究者和教育者,供他们使用/学习/扩展这些大规模(transformers)预训练模型
实践者,供他们基于这些模型再去做进一步微调,最终用在生产中(很多工业界 MLer 属于这里)
工程师,拿来直接用来解决 NLP 任务
::两个强目标:::
::尽可能易用::
尽可能减少需要用户学习的抽象数量。仅三个标准类:configuration、models 和 tokenizer。
初始化极简。仅一个通用的 from_pretrained()初始化函数,就可以完成下载,缓存,加载相关类实例、相关数据(configuration 的超参、tokenizer 的词表以及 models 的权重)。可以从 hf hub 加载,也可以从你的保存的 checkpoint 加载。
基于这三个类,提供了两个 API:
pipeline() 做预测,fit()做训练。
因此,本库::不是::用来搭建神经网络的组件工具箱。
::尽可能接近原始模型的 SOTA 效果::
对每一架构至少提供一个可以复现原作者效果的例子
不同框架版本的代码尽量接近。(e.g. TF<->PyTorch)
::主要概念::
Model classes. 比如 BertModel,是 torch.nn.Module 或者 tf.keras.Model 这种存在,本库中有 30+。
Configuration classes. 比如 BertConfig,用来存储建立模型所需的参数。
Tokenizer classes. 比如 BertTokenizer,用来存每个模型的词表。做编码、解码。
这些类都可以被初始化以及保存,通过两个方法:
from_pretrained()
save_pretrained()
参考文献
官网文档首页
github 地址
官方介绍课程首页
版权声明: 本文为 InfoQ 作者【mtfelix】的原创文章。
原文链接:【http://xie.infoq.cn/article/f1d427a832e56df0804422667】。文章转载请联系作者。
评论