【自然语言处理】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

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro