【自然语言处理】PyTorch-Transformers预训练模型库的简单了解

本文主要是介绍【自然语言处理】PyTorch-Transformers预训练模型库的简单了解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、说明
  • 二、什么是PyTorch-Transformers
  • 三、安装PyTorch-Transformers
    • 3.1 命令:`pip install pytorch-transformers` 安装
  • 四、简单测试
    • 4.1 背景介绍
    • 4.2 案例测试一

前言

最近心事重重,寝不能安,夜也不能寐滴,外加慢性肠胃炎也开始作妖,于是乎早早醒来,恰逢老师微信推送,仔细一看,喔噢,这不是我早期关注过的嘛,仔细一看,人家昨天就推送了,看来还是自己的问题,等到老师推送才能重视,反思!!!


分割线走一波

一、说明

1、windows系统
2、conda 4.6.14
3、python3.5

二、什么是PyTorch-Transformers

简而言之就是一个目前用于自然语言处理(NLP)的最先进的预训练模型库。该库目前包含了如下列所示模型的PyTorch实现、预训练模型权重、使用脚本和下列模型的转换工具:

1、 BERT(来自 Google):作者 Jacob Devlin、Ming-Wei Chang、Kenton Lee 和 Kristina Toutanova:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding(《BERT:用于语言理解的深度双向 Transformer 的预训练》)
2、GPT (来自 OpenAI):作者 Alec Radford、Karthik Narasimhan、Tim Salimans 和 Ilya Sutskever:Improving Language Understanding by Generative Pre-Training (《通过生成式预训练提高语言理解能力》)
3、GPT-2 (来自 OpenAI):作者Alec Radford、Jeffrey Wu、Rewon Child、David Luan、Dario Amodei 和 Ilya Sutskever: Language Models are Unsupervised Multitask Learners (《语言模型是无监督的多任务学习器》)
4、Transformer-XL (来自 Google/CMU):作者 Zihang Dai、Zhilin Yang、Yiming Yang, Jaime Carbonell、Quoc V. Le、Ruslan Salakhutdinov:Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context (《Transformer-XL:超长上下文关系的注意力语言模型》)
5、XLNet (来自 Google/CMU):作者 Zihang Dai、Zhilin Yang、Yiming Yang、Jaime Carbonell、Quoc V. Le、Ruslan Salakhutdinov:​XLNet: Generalized Autoregressive Pretraining for Language Understanding (《XLNet:用于语言理解的广义自回归预训练》)
6、XLM (来自 Facebook):作者 Guillaume Lample 和 Alexis Conneau:Cross-lingual Language Model Pretraining (《跨语言的语言模型预训练》)

这家伙的开源地址:https://github.com/huggingface/pytorch-transformers#quick-tour
它的老窝:https://huggingface.co/pytorch-transformers/index.html

三、安装PyTorch-Transformers

3.1 命令:pip install pytorch-transformers 安装

通过命令pip install pytorch-transformers来进行安装:
在这里插入图片描述
是不是感觉很简单,哈哈哈要是那就好了,奈何,江湖险恶套路深呀,这年头一条道走到黑那是不可能的,总地让你来个九拐十八弯。
在这里插入图片描述
一个警告:ERROR: Could not find a version that satisfies the requirement torch>=1.0.0 (from pytorch-transformers) (from versions: 0.1.2, 0.1.2.post1, 0.1.2.post2) ERROR: No matching distribution found for torch>=1.0.0 (from pytorch-transformers)
大概意思是:找不到这个对应的版本。
解释一下:

1、如果没有安装过pytorch则应该不会有这样的报错问题
2、既然之前安装过了,那就说明安装的pytorch与我们现在安装Pytorch-Transformers冲突不符合

解决警告错误方案

1、修改已安装的版本
     就是修改setup.py中相关的版本号,这个比较麻烦,鉴于时间问题就不给自己找麻烦了,我们来看第二种方法
2、重新安装
     就是先卸载之前安装的pytorch,重新安装一个0.4.1的版本即可,具体看接下来的操作。

说明:
      PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。它主要由Facebookd的人工智能小组开发,不仅能够实现强大的GPU加速,同时还支持动态神经网络,这一点是现在很多主流框架如TensorFlow都不支持的。PyTorch提供了两个高级功能:
     1、具有强大的GPU加速的张量计算(如Numpy)
     2、包含自动求导系统的深度神经网络

好啦,既然该解释的都解释清楚了,那就行动见真章吧!


老规矩,分割线见证我的帅气!!!
下图是官网给出的安装命令:
在这里插入图片描述
因为是国外的服务器,所以博主先离线下载下来,然后在本地安装。
安装命令:

1、cmd切换到此前下载下来的东东所在的目录下
2、pip install 包名

在这里插入图片描述
看到successfully,就不用多讲了吧,嘿嘿嘿。


现在我们回过头来继续安装PyTorch-Transformers包。
奈何依旧一样的报错,究其原因安装的pytorch的版本是0.4.0的,根据报错要需要大于等于1.1.0的。所以,卸载之前安装的pytorch,继续来安装一个1.1.0版本的吧。
卸载pytorch0.4.0在这里插入图片描述
安装1.1.0
在这里插入图片描述
注:获取pytorch链接:

  1. http://download.pytorch.org/whl/cu90/torch-1.1.0-cp36-cp36m-win_amd64.whl
  2. http://download.pytorch.org/whl/cu90/torch-0.4.0-cp36-cp36m-win_amd64.whl

再次通过命令:pip install pytorch-transformers安装
在这里插入图片描述
好嘛,看到最后,算是安装成功了。

四、简单测试

4.1 背景介绍

1、2019年2月,OpenAI发布了一种新的基于transformer语言模型GPT-2。GPT-2是一种于基于transformer的生成语言模型,它基于来自互联网上的40GB的精选文本进行训练。
2、什么是语言模型
简单说来,语言模型的作用就是根据已有句子的一部分,来预测下一个单词会是什么。最著名的语言模型你一定见过,就是我们手机上的输入法,它可以根据当前输入的内容智能推荐下一个词。
从这个角度出发:可以把GPT-2理解为相当于输入法的单词联想功能,但它比你手机上安装的此类应用大得多,也更加复杂。OpenAI 的研究人员使用了一个从网络上爬取的 40GB 超大数据集「WebText」训练 GPT-2,该数据集也是他们的工作成果的一部分。
3、近期的NLP方向
ELMO、GPT、BERT、Transformer-XL、GPT-2,各种预训练语言模型层出不穷,这些模型在各种NLP任务上一次又一次刷新上线,令人心驰神往。 到底该怎么将这些顶尖工具用到我的模型里呢?答案是Hugging Face的大神们开源的pytorch-pretrained-BERT。
Github 地址:
https://github.com/huggingface/pytorch-pretrained-BERT
3、说明

关于GPT-2更详细的内部细节的了解可参考如下链接:
http://www.sohu.com/a/336262203_129720
https://cloud.tencent.com/developer/article/1494634

4.2 案例测试一

在这里插入图片描述

"""author:jjkdatetime:2019/5/2coding:utf-8project name:Pycharm_workstationProgram function:
"""
import torch# 导入必要的库
from pytorch_transformers import GPT2Tokenizer, GPT2LMHeadModeltokenizer = GPT2Tokenizer.from_pretrained('gpt2')# 加载预训练模型tokenizer (vocabulary)text = "What is the fastest car in the"
indexed_tokens = tokenizer.encode(text)# 对文本输入进行编码
tokens_tensor = torch.tensor([indexed_tokens])# 在PyTorch张量中转换indexed_tokens# 加载预训练模型 (weights)
model = GPT2LMHeadModel.from_pretrained('gpt2')model.eval()#将模型设置为evaluation模式,关闭DropOut模块# 如果你有GPU,把所有东西都放在cuda上
tokens_tensor = tokens_tensor.to('cuda')
model.to('cuda')# 预测所有的tokens
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)

源码很直白,直接将文本标记为数字序列并将其缩影,然后传递给GPT2LMHeadModel模型。
在这里插入图片描述
不得不说,对于这么大的模型进行来训练,是需要硬件的要求确实很高。
具体的可以参考此链接:https://mp.weixin.qq.com/s/SNMlBd1RuenINmXwO3SVwQ

这篇关于【自然语言处理】PyTorch-Transformers预训练模型库的简单了解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/422367

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说