用于文本生成的预训练模型

使用 PyTorch 的文本深度学习

Shubham Jain

Instructor

为何使用预训练模型?

优势

  1. 基于大规模数据集训练
  2. 在多种文本生成任务上表现优异
    • 情感分析
    • 文本补全
    • 机器翻译

局限

  1. 训练计算成本高
  2. 存储占用大
  3. 自定义空间有限
使用 PyTorch 的文本深度学习

PyTorch 中的预训练模型

  • Hugging Face Transformers:预训练模型库
  • 预训练模型:
    • GPT-2
    • T5

HuggingFace 标志

使用 PyTorch 的文本深度学习

理解 GPT-2 的分词器与模型

GPT2LMHeadModel

  • HuggingFace 的 GPT-2 实现
  • 面向文本生成

GPT2Tokenizer

  • 将文本转换为 token
  • 支持子词分词:如 'larger' 可变为 ['large', 'r']
使用 PyTorch 的文本深度学习

GPT-2:文本生成实现

import torch
from transformers import GPT2Tokenizer, GPT2LMHeadModel

tokenizer = GPT2Tokenizer.from_pretrained('gpt2') model = GPT2LMHeadModel.from_pretrained('gpt2')
seed_text = "Once upon a time"
input_ids = tokenizer.encode(seed_text, return_tensors='pt')
使用 PyTorch 的文本深度学习

GPT-2:文本生成实现 II

output = model.generate(

                                                           ) 
使用 PyTorch 的文本深度学习

GPT-2:文本生成实现 II

output = model.generate(input_ids, max_length=40, 

                                                           ) 
使用 PyTorch 的文本深度学习

GPT-2:文本生成实现 II

output = model.generate(input_ids, max_length=40, temperature=0.7,     

                                                           ) 
使用 PyTorch 的文本深度学习

GPT-2:文本生成实现 II

output = model.generate(input_ids, max_length=40, temperature=0.7,     
                        no_repeat_ngram_size=2, 
                                                           ) 
使用 PyTorch 的文本深度学习

GPT-2:文本生成实现 II

output = model.generate(input_ids, max_length=40, temperature=0.7,     
                        no_repeat_ngram_size=2, 
                        pad_token_id=tokenizer.eos_token_id) 
使用 PyTorch 的文本深度学习

GPT-2:文本生成输出

generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)
Generated Text: Once upon a time, the world was a place of great beauty
and great danger. The world of the gods was the place where the great gods were 
born, and where they were to live.
使用 PyTorch 的文本深度学习

T5:机器翻译实现

  • t5-small:Text-to-Text Transfer Transformer
  • 预训练的机器翻译模型
import torch
from transformers import T5Tokenizer, T5ForConditionalGeneration

tokenizer = T5Tokenizer.from_pretrained("t5-small") model = T5ForConditionalGeneration.from_pretrained("t5-small")
input_prompt = "translate English to French: 'Hello, how are you?'"
input_ids = tokenizer.encode(input_prompt, return_tensors="pt")
output = model.generate(input_ids, max_length=100)
使用 PyTorch 的文本深度学习

T5:机器翻译输出

generated_text = tokenizer.decode(output[0], skip_special_tokens=True)

print("Generated text:",generated_text)
Generated text:
"Bonjour, comment êtes-vous?"
使用 PyTorch 的文本深度学习

选择合适的预训练模型

  • 可选项众多!

 

  • GPT-2:文本生成
  • DistilGPT-2(GPT-2 的精简版):文本生成
  • BERT:文本分类、问答
  • T5(t5-small 为精简版):机器翻译、摘要

 

  • 可在 HuggingFace 等仓库获取
使用 PyTorch 的文本深度学习

让我们练习吧!

使用 PyTorch 的文本深度学习

Preparing Video For Download...