Transformers翻译

目录:

入门

  • 快速探索
  • 安装
  • 理论
  • 术语

TRANSFORMERS 应用

  • 任务总结
  • 模型总结
  • 处理数据
  • 微调训练过的模型
  • 模型共享和上传
  • tokenizers总结
  • 多语种模型

高阶指南

  • 训练模型
  • 案例
  • 排除故障
  • 用自定义数据集进行微调
  • transformer notebooks
  • 亚马逊云端跑模型
  • 社区
  • Converting Tensorflow Checkpoints(未理解)
  • 先前包的迁移
  • How to contribute to transformers?
  • 如何为transformers添加模型?
  • 使用tokenizers
  • 测试
  • 调试
  • 导入transformers模型
  • 研究
  • BERTology
  • 定长模型的困惑
  • 基准

MAIN CLASSES(主要类别)

  • 回调
  • 配置
  • 数据容器
  • 日志
  • 模型
  • 优化
  • 模型输出
  • 管道
  • 处理器
  • 分词器
  • 训练
  • 特征提取

模型

  • ALBERT
  • Auto Classes
  • BART
  • BARThes
  • BERT
  • Bertweet
  • BertGeneration
  • BertJapanese
  • BigBird
  • BigBirdPegasus
  • Blenderbot
  • Blenderbot Small
  • BORT
  • CamemBERT
  • CLIP
  • ConvBERT
  • CPM
  • CTRL
  • BeBERTa
  • BeBERTa-v2
  • DeiT
  • DialoGPT
  • DistilBERT
  • DPR
  • ELECTRA
  • Encoder Dencoder Models
  • FlauBERT
  • FSMT
  • Funnel Transformer
  • herBERT
  • I-BERT
  • LayoutLM
  • LED
  • Longformer
  • LUKE
  • LXMERT
  • MarainMT
  • M2M100
  • MBart and MBart-50
  • MegatronBERT
  • MegatronGPT2
  • MobileBERT
  • MPNet
  • MT5
  • OpenAI GPT
  • OpenAI GPT2
  • GPT Neo
  • Pegasus
  • PhoBERT
  • ProphetNet
  • RAG
  • Reformer
  • RetriBERT
  • RoBERTa
  • Speech2TEXT
  • SqueezeBERT
  • T5
  • TAPAS
  • Transformer XL
  • Vision Transformer(ViT)
  • Wav2Vec2
  • XLM
  • XLM-ProphetNet
  • XLM-RoBERTa
  • XLNet
  • XLSR-Wav2Vec2

帮助

  • 自定义图层和工具
  • pipelines工具
  • tokenizers工具
  • trainer工具
  • generation工具
  • 一般工具

入门:

快速tour
快速了解transformer库特征,可为自然语言理解任务下载预训练模型,例如文本情感分析,可实现自然语言生成,如【问答、摘要】或翻译。

首先我们会使用pipeline API 应用这些预训练模型,然后,我们将进一步挖掘,看看库如何让您访问这些模型,并帮助您对数据进行预处理。

文档中的代码提供了两种深度学习框架语言(pytorch 和 tensorflow)

transformer提供下列解决方案

情感分析:文本是积极的还是消极的?
文本生成(英语 ):给一个提示,模型将生成以下内容
名称实体识别(NER):在句子中,标注标签实体
问答:为模型提供上下文和问题,并从上下文中提取答案
文本填充:如用mask填充空值
总结:生成长文本的摘要
翻译:语言翻译
特征提取:返回文本的tensor representation

情感分析样例
首次执行此命令时,预训练模型和分词器需要被下载和缓存,分词器为模型处理文本,以便模型进行预测,pipeline将这两部分组合在一起,举例:

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

也可传入列表句子,模型会进行批处理,返回列表结果;例如:

>>> results = classifier(["We are very happy to show you the  Transformers library.",
...            "We hope you don't hate it."])
>>> for result in results:
...     print(f"label: {result['label']}, with score: {round(result['score'], 4)}")
label: POSITIVE, with score: 0.9998
label: NEGATIVE, with score: 0.5309

可以看到第二句话被标签为消极,但得分居中;
默认情况下,为pipeline 下载“distilbert-base-uncased-finetuned-sst-2-english”模型,模型使用的是DistilBERT 框架,基于SST-2数据集进行微调,来完成情感分析任务。

也可以指定模型,例如:

>>> classifier = pipeline('sentiment-analysis', model="nlptown/bert-base-multilingual-uncased-sentiment")
>

加载本地模型,需要两个步骤,首先需要用AUTOTokenizer下载Tokenizer并完成实例化,其次用"AutoModelForSequenceClassification"下载模型本身

>>> from transformers import AutoTokenizer, AutoModelForSequenceClassification
>>> model_name = "nlptown/bert-base-multilingual-uncased-sentiment"
>>> model = AutoModelForSequenceClassification.from_pretrained(model_name)
>>> tokenizer = AutoTokenizer.from_pretrained(model_name)
>>> classifier = pipeline('sentiment-analysis', model=model, tokenizer=tokenizer)

使用分析器
第一步:分词器将文本分割成单词,通常称为tokens,有多种规则,因此我们要使用模型名称实例化tokenizer,确保训练模型时使用的是相同的规则。
第二步:将tokens转化为数字,构建tensor去拟合模型,tokenizer有一个词汇表vocab, from_pretrained和pretrained需使用相同的词汇表。

>>> inputs = tokenizer("We are very happy to show you the  Transformers library.")
>>> print(inputs)
{'input_ids': [101, 2057, 2024, 2200, 3407, 2000, 2265, 2017, 1996, 100, 19081, 3075, 1012, 102], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}
Copy to clipboard

分词器接受列表输入,用模型进行批处理,填充列表元素到相同长度,清空并填充到模型可接受的最大长度,并指定返回值。

>>> tf_batch = tokenizer(
...     ["We are very happy to show you the  Transformers library.", "We hope you don't hate it."],
...     padding=True,
...     truncation=True,
...     max_length=512,
...     return_tensors="tf"
... )

模型自动填充案例如下:
input_ids和attention_mask均用0进行了填充

>>> for key, value in tf_batch.items():
...     print(f"{key}: {value.numpy().tolist()}")
input_ids: [[101, 2057, 2024, 2200, 3407, 2000, 2265, 2017, 1996, 100, 19081, 3075, 1012, 102], [101, 2057, 3246, 2017, 2123, 1005, 1056, 5223, 2009, 1012, 102, 0, 0, 0]]
attention_mask: [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0]]

模型应用

>>> tf_outputs = tf_model(tf_batch)

模型输出

>>> print(tf_outputs)
TFSequenceClassifierOutput(loss=None, logits=<tf.Tensor: shape=(2, 2), dtype=float32, numpy=
array([[-4.0832963 ,  4.3364143 ],
       [ 0.081807  , -0.04178282]], dtype=float32)>, hidden_states=None, attentions=None)

自定义tokenizer和模型,代替自动获取

>>> from transformers import DistilBertTokenizer, DistilBertForSequenceClassification
>>> model_name = "distilbert-base-uncased-finetuned-sst-2-english"
>>> model = DistilBertForSequenceClassification.from_pretrained(model_name)
>>> tokenizer = DistilBertTokenizer.from_pretrained(model_name)

Glossary 术语

autoencoding 模型: MLM
autoregressive 模型: CLM
CLM:因果语言建模,模型读取预训练任务文本,然后预测接下来的词汇。通常的实现方法是给定完整语句,但隐藏其中部分词汇,用模型进行预测;
DEEP LEARNING:多层神经网络机器学习算法;
MLM:掩码语言建模,破坏文本,随机填充一些特殊字符,然后去预测原始文本;
多模式:将文本与另一种输入(例如图像)相结合的任务;
自然语言生成:生成相关性文本;
自然语言处理:一种通用方法处理文本;
自然语言理解:理解整个文本(例如:文本分类,词汇分类)
预训练模型:通过数据进行预训练,模型采用的是监督学习方法,如:学习本文预测下一个词汇,随机填充词汇后进行预测;
循环神经网络:循环处理文本;
自注意力机制:从关注到关注重点;
seq2seq or sequence-to-sequence:通过输入生成新的句子,如翻译、汇总,聊天(问答);
token:句子的一部分,通常是一个单词,标点符号;
transformer:基于深度学习模型框架自注意力机制

模型输入
每一个模型都是不同的也有相似之处;因此,大多数模型使用相同的输入,这里将详细介绍这些输入以及使用示例。
模型通常仅需要input_ids参数,她们通常是token指数、数值;
每一个分词器的工作方式不同,但底层工作机制是一样的,这是一个Bert分词器的案例,wordpiece的分词器

from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained("bert-base-cased")
sequence = "A Titan RTX has 24GB of VRAM"

分词器用词汇表将语句分割成可用的c z

tokenized_sequence = tokenizer.tokenize(sequence)
print(tokenized_sequence)
['A', 'Titan', 'R', '##T', '##X', 'has', '24', '##GB', 'of', 'V', '##RA', '##M']

学习时间:

提示:这里可以添加计划学习的时间
例如:
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


学习产出:

提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个

你可能感兴趣的:(笔记)