写点什么

(2-2|27)🤗Huggingface.Transformers 是什么?

作者:mtfelix
  • 2022 年 2 月 07 日
  • 本文字数:1488 字

    阅读完需:约 5 分钟

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 就很简单:


pip install transformers
复制代码


当然,还可以从 source 安装等,不赘述。

用 pipeline()做预测

pipeline()是 hf 中应用模型的 API。举个例子,做情感识别。


>>> from transformers import pipeline
>>> classifier = pipeline("sentiment-analysis")
>>> classifier("We are very happy to show you the 🤗 Transformers library.")
[{'label': 'POSITIVE', 'score': 0.9998}]
复制代码


选择任务类型(“sentiment-analysis”),定义出一个分类器,然后把待处理文本输入,得到输出: 正向,置信度:接近 1。


这个分类器没有选择模型,使用默认的模型(“distilbert-base-uncased-finetuned-sst-2-english”)。


假设有你自己训练好的模型,可以如下设置。


classifier = pipeline("sentiment-analysis", model="your_path/your_sentiment_model")
复制代码

设计哲学

::为谁建立:::

  • 研究者和教育者,供他们使用/学习/扩展这些大规模(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()

参考文献

官网文档首页


🤗 Transformers


github 地址


官方介绍课程首页


Transformer models - Hugging Face Course

发布于: 刚刚阅读数: 2
用户头像

mtfelix

关注

内心平静是一生的追求 2018.01.17 加入

简单的技术人

评论

发布
暂无评论
(2-2|27)🤗Huggingface.Transformers是什么?