Huggingface Transformers各类库介绍(Tokenizer、Pipeline)

简介: Huggingface Transformers各类库介绍(Tokenizer、Pipeline)

前言

周四了,日复一日的时间过得飞快!


0、transformers的安装以及介绍


0-1、 介绍


Huggingface是一家在NLP社区做出杰出贡献的纽约创业公司,其创建的库Transformers被广泛使用,Transformers提供了数以千计针对于各种任务的预训练模型模型,开发者可以根据自身的需要,选择模型进行训练或微调,也可阅读api文档和源码, 快速开发新模型。


0-2、安装

# 安装轻量级Transformers,初学适用,一般情况下够用了。(包含AutoTokenizer、BertTokenizer,别的不知道)
pip install transformers
# 安装开发版本,进阶适用
pip install transformers[sentencepiece]


一、分词——transformers.AutoTokenizer


原理:Tokenizer的主要作用是将文本输入转化为模型可以接受的输入,即数值型的输入。


1-0、相关参数介绍(常用参数介绍)


  • text (str, List[str], List[List[str]]`):就是输入的待编码的序列(或1个batch的),可以是字符串或字符串列表。
  • add_special_tokens(bool, optional, defaults to True) :True就是给序列加上特殊符号,如[CLS],[SEP]
  • padding (Union[bool, str], optional, defaults to False) :给序列补全到一定长度,True or ‘longest’: 是补全到batch中的最长长度,max_length’:补到给定max-length或没给定时,补到模型能接受的最长长度。
  • truncation (Union[bool, str], optional, defaults to False) :截断操作,true or ‘longest_first’:给定max_length时,按照max_length截断,没给定max_lehgth时,到,模型接受的最长长度后截断,适用于所有序列(单或双)。only_first’:这个只针对第一个序列。only_second’:只针对第二个序列。
  • max_length (Union[int, None], optional, defaults to None) :控制padding和truncation的长度。
  • return_tensors (str, optional, defaults to None):返回数据的类型,可选tf’, ‘pt’ or ‘np’ ,分别表示tf.constant, torch.Tensor或np.ndarray


1-1、加载、保存

# tokenizer的加载和保存使用的方法是from_pretrained、save_pretrained
from transformers import AutoTokenizer
from transformers import BertTokenizer
from transformers import  AutoConfig
from transformers import  AutoModel
# 加载分词器
# bert-base-cased这里代表的是bert的基础版本
# 也可以加载本地保存的模型。
tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
# 保存
tokenizer.save_pretrained("no_more")
# 加载模型和加载模型配置
# AutoModel.from_pretrained('bert-base-uncased')
# AutoConfig.from_pretrained('bert-base-uncased')


bert的常用预训练模型:


655275e6a4ed4430afa9d0bb3f6b329c.png


1-2、使用以及原理

# 将文本转化为数字
tokenizer("It's impolite to love again", padding=True, truncation=True, return_tensors="pt")
# Tokenizer的过程先分词,后将分词后的token映射为数字
# 1、 分词
token = tokenizer.tokenize("It's impolite to love again")
# ['It', "'", 's', 'imp', '##oli', '##te', 'to', 'love', 'again']
# 2、 映射
ids = tokenizer.convert_tokens_to_ids(token)
# [1135, 112, 188, 24034, 11014, 1566, 1106, 1567, 1254]
# 3、 将映射后的数字再重新转变为文本
str = tokenizer.decode(ids)
# "It's impolite to love again"
# 4、也可以直接用对应的encode将字符串转变为数字
tokenizer.encode("It's impolite to love again")
# [1135, 112, 188, 24034, 11014, 1566, 1106, 1567, 1254]


二、黑盒子——transformers.pipeline

2-0、pipeline怎么理解?


含义:可以理解为一个打包好的黑盒子,内置流水线的处理方法(包含数据读取、数据预处理、创建模型、评估模型结果、模型调参等)。即输入原始数据,直接就可以给出结果,是不是十分方便?


2-1、目前可用的pipeline以及简单的小栗子

feature-extraction特征提取:把一段文字用一个向量来表示

fill-mask 填词:把一段文字的某些部分mask住,然后让模型填空

ner 命名实体识别:识别文字中出现的人名地名的命名实体

question-answering 问答:给定一段文本以及针对它的一个问题,从文本中抽取答案

sentiment-analysis 情感分析:一段文本是正面还是负面的情感倾向

summarization 摘要:根据一段长文本中生成简短的摘要

text-generation文本生成:给定一段文本,让模型补充后面的内容

translation 翻译:把一种语言的文字翻译成另一种语言


以下为常见任务所用到的模型举例:


e3d1b84f0a254573834cfe6f55ce6867.png

简单举例

# 过程遇到一个无法加载torch下的一个什么配置文件的错误,找了一下午资料不知道是什么原因,一气之下删掉torch,结果问题解决了。
from transformers import pipeline
# 这里使用任务会自动下载对应的模型,注意预留好空间。
# 下载速度很慢,可以直接到末尾参考链接里下载。
# 选择任务为文本生成,使用pipeline
generator = pipeline("text-generation")
generator("In this course, we will teach you how to")


输出:

[{‘generated_text’: 'In this course, we will teach you how to understand and use ’

'data flow and data interchange when handling user data. We ’

'will be working with one or more of the most commonly used ’'data flows — data flows of various types, as seen by the ’
‘HTTP’}]

参考文章:

Transformers Tokenizer API 的使用.

深度学习pipeline和baseline是什么意思?.

huggingface使用(一):AutoTokenizer(通用)、BertTokenizer(基于Bert).

[NLP] transformers 使用指南.

【Huggingface Transformers】保姆级使用教程02—微调预训练模型 Fine-tuning.

用huggingface.transformers在文本分类任务(单任务和多任务场景下)上微调预训练模型.

【Huggingface Transformers】保姆级使用教程—上.

【学习笔记】Transformers库笔记.

transformers官方文档.

AutoModel文档:.

AutoTokenizer文档:.

Pipeline文档:.

任务模型在这里下载:.


总结


再爱就不礼貌了。

相关文章
|
2天前
|
自然语言处理 PyTorch API
Transformers从入门到精通:Transformers介绍
transformer是当前大模型中最流行的架构,而Transformers是实现transformer的最流行的实现的库,由著名的huggingface推出。Transformers提供了丰富的API和工具,可以轻松下载和训练最先进的预训练模型。使用预训练的模型可以降低计算成本,并为从头开始训练模型节省所需的时间和资源。5月更文挑战第2天
32 0
|
8月前
|
自然语言处理 算法 语音技术
【nlp-with-transformers】|Transformers中的generate函数解析
今天社群中的小伙伴面试遇到了一个问题,如何保证生成式语言模型在同样的输入情况下可以保证同样的输出。 这里面造成问题的因素有两个方面: 一个方面是在forward过程中参数的计算出现了差异,这种情况一般发生在游戏显卡中,游戏显卡无法保证每一次底层算子计算都是成功的,也没有办法保证同输入同输出,这里我们就需要采用具有ecc内存纠错机智的专用显卡用来解决相关的问题。
394 0
|
8月前
|
机器学习/深度学习 存储 PyTorch
Huggingface:导出transformers模型到onnx
上一篇的初体验之后,本篇我们继续探索,将transformers模型导出到onnx。这里主要参考huggingface的官方文档:https://huggingface.co/docs/transformers/v4.20.1/en/serialization#exporting-a-model-to-onnx。
767 0
|
9月前
|
机器学习/深度学习 存储 自然语言处理
基于 LSTM 进行多类文本分类( TensorFlow 2.0)
基于 LSTM 进行多类文本分类( TensorFlow 2.0)
|
11月前
|
机器学习/深度学习 PyTorch TensorFlow
使用BERT对句子进行向量化(TensorFlow版和Pytorch版)
本文分别以TensorFlow版和Pytorch版对BERT的句子进行向量化
|
11月前
|
TensorFlow 算法框架/工具
基于Tensorflow实现Transformer模型
基于Tensorflow实现Transformer模型
188 0
|
机器学习/深度学习 PyTorch 算法框架/工具
|
搜索推荐 TensorFlow 算法框架/工具
TensorFlow中Embedding和One-Hot的区别
TensorFlow中Embedding和One-Hot的区别
126 0
|
机器学习/深度学习 固态存储 PyTorch
pytorch中torchvision读取预训练模型
pytorch中torchvision读取预训练模型
152 0
pytorch中torchvision读取预训练模型
|
数据可视化 PyTorch 算法框架/工具
使用onnx对pytorch模型进行部署
使用onnx对pytorch模型进行部署
487 0