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

相关文章

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

回调的简单理解

之前一直不太明白回调的用法,现在简单的理解下 就按这张slidingmenu来说,主界面为Activity界面,而旁边的菜单为fragment界面。1.现在通过主界面的slidingmenu按钮来点开旁边的菜单功能并且选中”区县“选项(到这里就可以理解为A类调用B类里面的c方法)。2.通过触发“区县”的选项使得主界面跳转到“区县”相关的新闻列表界面中(到这里就可以理解为B类调用A类中的d方法

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用。如果你看不懂,请留言。 完整代码: <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><ti

python实现最简单循环神经网络(RNNs)

Recurrent Neural Networks(RNNs) 的模型: 上图中红色部分是输入向量。文本、单词、数据都是输入,在网络里都以向量的形式进行表示。 绿色部分是隐藏向量。是加工处理过程。 蓝色部分是输出向量。 python代码表示如下: rnn = RNN()y = rnn.step(x) # x为输入向量,y为输出向量 RNNs神经网络由神经元组成, python

基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别

转发来源:https://swift.ctolib.com/ooooverflow-chinese-ocr.html chinese-ocr 基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别 环境部署 sh setup.sh 使用环境: python 3.6 + tensorflow 1.10 +pytorch 0.4.1 注:CPU环境

YOLO v3 训练速度慢的问题

一天一夜出了两个模型,仅仅迭代了200次   原因:编译之前没有将Makefile 文件里的GPU设置为1,编译的是CPU版本,必须训练慢   解决方案: make clean  vim Makefile make   再次训练 速度快了,5分钟迭代了500次

百度OCR识别结构结构化处理视频

https://edu.csdn.net/course/detail/10506

如何在Java中处理JSON数据?

如何在Java中处理JSON数据? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨在Java中如何处理JSON数据。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,在现代应用程序中被广泛使用。Java通过多种库和API提供了处理JSON的能力,我们将深入了解其用法和最佳

将一维机械振动信号构造为训练集和测试集(Python)

从如下链接中下载轴承数据集。 https://www.sciencedirect.com/science/article/pii/S2352340918314124 import numpy as npimport scipy.io as sioimport matplotlib.pyplot as pltimport statistics as statsimport pandas

AI学习指南机器学习篇-朴素贝叶斯处理连续特征和离散特征

AI学习指南机器学习篇-朴素贝叶斯处理连续特征和离散特征 在机器学习领域,朴素贝叶斯是一种常用的分类算法,它的简单性和高效性使得它在实际应用中得到了广泛的应用。然而,在使用朴素贝叶斯算法进行分类时,我们通常会面临一个重要的问题,就是如何处理连续特征和离散特征。因为朴素贝叶斯算法基于特征的条件独立性假设,所以对于不同类型的特征,我们需要采取不同的处理方式。 在本篇博客中,我们将探讨如何有效地处理