学习如何使用GPT2进行文本生成(torch+transformers)

这篇具有很好参考价值的文章主要介绍了学习如何使用GPT2进行文本生成(torch+transformers)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习如何使用GPT2进行文本生成(torch+transformers)

GPT2是OPen AI发布的一个预训练语言模型,见论文《Language Models are Unsupervised Multitask Learners》,GPT-2利用单向Transformer的优势,做一些BERT使用的双向Transformer所做不到的事。那就是通过上文生成下文文本。
理论部分的文章有很多,这里不做深究,下面直接看代码吧

导入相关包

import torch
from transformers import GPT2Tokenizer, GPT2LMHeadModel

加载tokenizer

tokenizer = GPT2Tokenizer.from_pretrained('gpt2')

编码输入

对给出的文本进行编码,并转换为tensor

indexed_tokens = tokenizer.encode("Xiao Ming is a primary school student. He likes playing games")

print( tokenizer.decode(indexed_tokens))

tokens_tensor = torch.tensor([indexed_tokens])

Xiao Ming is a primary school student. He likes playing games

加载预训练模型(权重)

model = GPT2LMHeadModel.from_pretrained('gpt2')

将模型设置为评估模式

model.eval()
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

tokens_tensor = tokens_tensor.to(device)
model.to(device)

预测所有标记

with torch.no_grad():
    outputs = model(tokens_tensor)
    predictions = outputs[0]

得到预测的下一词

predicted_index = torch.argmax(predictions[0, -1, :]).item()
predicted_text = tokenizer.decode(indexed_tokens + [predicted_index])
print(predicted_text)

可以看到,GPT2预测的下一个词是and

Xiao Ming is a primary school student. He likes playing games and

生成一段完整的话

stopids = tokenizer.convert_tokens_to_ids(["."])[0] 
past = None
for i in range(100):
    with torch.no_grad():
        output, past = model(tokens_tensor, past_key_values=past, return_dict=False)

    token = torch.argmax(output[..., -1, :])

    indexed_tokens += [token.tolist()]

    if stopids== token.tolist():
        break
    tokens_tensor = token.unsqueeze(0)
    
sequence = tokenizer.decode(indexed_tokens)

print(sequence)

生成的文本为:and playing with his friends.与给出的句子构成了一段完整的话。

Xiao Ming is a primary school student. He likes playing games and playing with his friends.

试试其他语句

我们将上面的句子加上句号,gpt2会生成一个不一样的句子。
原:Xiao Ming is a primary school student. He likes playing games
现:Xiao Ming is a primary school student. He likes playing games.
生成为:

Xiao Ming is a primary school student. He likes playing games. He is also a member of the team that won the World Cup in 2010.文章来源地址https://www.toymoban.com/news/detail-664410.html

到了这里,关于学习如何使用GPT2进行文本生成(torch+transformers)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 开启想象翅膀:轻松实现文本生成模型的创作应用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用

    开启想象翅膀:轻松实现文本生成模型的创作应用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用

    TextGen 实现了多种文本生成模型,包括:LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用。 [2023/06/15] v1.0.0版本: 新增ChatGLM/LLaMA/Bloom模型的多轮对话微调训练,并发布医疗问诊LoRA模型shibing624/ziya-llama-13b-medical-lora。详见Release-v1.0.0 [2023/06/02] v0.2.7版本: 新增ChatG

    2024年02月13日
    浏览(8)
  • 如何用 500 行 SQL 实现 GPT2学习

    如何用 500 行 SQL 实现 GPT2学习

    俄罗斯有个大佬每年都会用 SQL 来实现一个挑战庆祝新年,已经坚持了 10 多年了。而 2023 年年底他完成了一件非常了不起的事情, 即用 500 行 SQL 实现了 GPT2:https://explainextended.com/2023/12/31/happy-new-year-15/ 整个项目的代码参见:https://github.com/quassnoi/explain-extended-2024 这里搬运总结

    2024年01月23日
    浏览(3)
  • 阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

    阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

    本文介绍如何使用GPU云服务器,使用 Megatron-Deepspeed框架 训练GPT-2模型并生成文本。 GPT-2模型是OpenAI于 2018年在GPT模型 的基础上发布的新的 无监督NLP模型 ,当时被称为“史上最强通用NLP模型”。该模型可以生成 连贯的文本段落 ,并且能在 未经预训练 的情况下,完成阅读理解

    2024年02月09日
    浏览(8)
  • 【GPT】文本生成任务(生成摘要、文本纠错、机器翻译等的模型微调)

    【GPT】文本生成任务(生成摘要、文本纠错、机器翻译等的模型微调)

    NLG:自然语言生成任务,很多NLP任务可以被描述为NLG任务,如经典的T5模型(text to text transfer transformer模型)就是NLG模型,如文本纠错任务,输出正确的文本描述、智能问答根据一定背景进行推理,然后回答。 主要分为三种: 抽取式摘要:从原文档中提取现成的句子作为摘要

    2023年04月26日
    浏览(10)
  • 训练自己的GPT2

    训练自己的GPT2

    所谓的 预训练 ,就是在海量的通用数据上训练大模型。比如,我把全世界所有的网页上的文本内容都整理出来,把全人类所有的书籍、论文都整理出来,然后进行训练。这个训练过程代价很大,首先模型很大,同时数据量又很大,比如GPT3参数量达到了175B,训练数据达到了

    2024年01月25日
    浏览(10)
  • GPT 内部 — I : 了解文本生成

    GPT 内部 — I : 了解文本生成

    年轻的陀思妥耶夫斯基被介绍给生成AI,通过Midjourney创建

    2024年02月09日
    浏览(2)
  • GPT2中文模型本地搭建(二)

    GPT2中文模型本地搭建(二)

    GPT2_ML项目是开源了一个中文版的GPT2,而且还是最大的15亿参数级别的模型。 OpenAI在GPT2的时期并没有帮忙训练中文,上篇文章的验证也可说明此问题,对应的模型直接上GitHub上下载即可。 本文主旨快速搭建本地模型,更全的攻略,大家也可以到GitHub中慢慢摸索。 本文是基于

    2024年02月09日
    浏览(7)
  • 如何使用LLM实现文本自动生成视频

    如何使用LLM实现文本自动生成视频

    推荐:使用 NSDT场景编辑器 助你快速搭建可二次编辑的3D应用场景     基于扩散的图像生成模型代表了计算机视觉领域的革命性突破。这些进步由Imagen,DallE和MidJourney等模型开创,展示了文本条件图像生成的卓越功能。有关这些模型内部工作的介绍,您可以阅读本文。 然而,

    2024年02月12日
    浏览(10)
  • GPT系列训练与部署——GPT2环境配置与模型训练

    GPT系列训练与部署——GPT2环境配置与模型训练

            本文为博主原创文章,未经博主允许不得转载。         本文为专栏《Python从零开始进行AIGC大模型训练与推理》系列文章,地址为“https://blog.csdn.net/suiyingy/article/details/130169592”。         Colossal-AI提供了多种并行方式来运行GPT,不同并行方式的相应配置位

    2024年02月10日
    浏览(20)
  • AIGC之文本内容生成概述(下)—— GPT

    AIGC之文本内容生成概述(下)—— GPT

      提到GPT模型,就不得不说众所周知的ChatGPT模型,ChatGPT的发展可以追溯到2018年,当时OpenAI发布了第一代GPT模型,即GPT-1,该模型采用Transformer结构和自注意力机制,能够生成自然流畅的文本。GPT的发展到目前为止,已经经历了多个版本更替,从最早的GPT-1、到GPT-2、GPT-3,再到

    2024年02月09日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包