GPT2的嵌入特征向量获取,为自己的模型提供养料

一、背景补充

1、NLP相关项目的总步骤

步骤一:
当数据为一些文本材料,常见的做法是,主要通过:清理、分词、词元化、特征演化规则(如tfidf等)许多NLP套餐式的处理流,来形成一些特征
步骤二:
继而,这些特征将形成我们的模型的喂入数据,参与模型训练、验证、评估
步骤三:
当然,模型可以为机器学习,也可以是深度神经网络,这将决定我们的技术方向;而模型的输出,则决定了我们研究的问题,是分类,还是回归;

2、GPT2预训练模型技术概念

2.1、GPT2在做什么?
实际上,只需要知道它是一个侧重于,通过前文,而预测或补全后文的,一种生成式功能的神经网络模型
2.2、GPT2预训练模型是什么?
从技术层面来说,它是一个,确定了神经网络结构(多少层、什么层、每层的参数)的已具备了预测功能的生产器(意思是,通常只用它来做model.predict)
2.3、GPT2预训练模型中的特征?
(此一点,是默认各位小伙伴,已经比较了解神经网络模型的结构、前后传播等概念)既然这个模型能够预测文本,那么必然可以认为它首先是有“读懂”文本的能力,即我们认为,这个模型其神经网络中隐藏层里形成的特征,是有借鉴意义的,就好像说,我们认为这些特征是原始文本的一个很好的“感知”(抽象比喻)、“翻译”(抽象比喻)、“嵌入特征化”(技术上说,即tensor、矩阵化)的;
2.4、GPT2预训练模型中获取的特征,其定位如何?
它等价于步骤一,即我们可以借鸡(GPT2)生蛋(特征)
2.5、GPT2预训练模型中的特征获取时,最需要关注的点是什么?
注意,预训练模型我们不需要其反向传播去计算梯度,所以,我们只需要让其只向前传播,而后我们取其隐藏层的某一层(最符合人思考的一定是最后一层)

二、GPT2预训练模型的下载

1、官方推荐(但不如人意)

官方推荐,大多是python包里,提供了一个从某网站下载的功能,此处略(网上随便搜),主要问题都是,其只适合海外用户,国内小伙伴下载缓慢超时

2、此处推荐

可以去hugface(需要翻墙,但一次下载:)

官网地址
进入后选择models,在搜索框内搜索比如:gpt2
在这里插入图片描述
当搜索完后可见很多个版本,其中gpt2就代表最小的版本(参数最小,预训练模型的文件夹最小);gpt2-medium其次,gpt2-large甚至xlarge更大,它们需要更大的内存(前向传播我们使用cpu实际上是最cheap的way)
在这里插入图片描述
选择gpt2-默认最小版本
在这里插入图片描述
在files and versions里面 是所有的文件,注意,其下载形式应该保留其格式,下载整体一个文件夹(建议此处先在本地创建跟其中一样的文件夹结构,然后手动单个下载文件于其内即可,如子文件夹onnx)当然,也有别的下载方式,可在网页上自行查找,精通git的下拉等略;

比如:我自建一个文件夹名为 GTP2_small ,其内有文件若干,一个子文件夹onnx
在这里插入图片描述

提示:新手一旦遇到非单个文件的“model”就会很慌,实际上,我们只需要模仿不变更其结构,比如我下载了一个文件夹,那么在之后,我引用时,我只需要给出这个文件夹的位置即可,里面的文件是不需要任何改动的(每个脚本都因处于一个文件夹,而能利用文件夹内的相对路径来执行)

三、代码实操

1、配置永远是前提

我们知道,tensorflow和torch都是处理tensor的利器,但是相信小伙伴通过我另一篇关于它们之间gpu和cpu以及清缓的切换来看,torch是更性价比高的;并且gpt2是更倾向于torch的,在hugface页面,通过model-card也有对应的使用预训练模型的代码(可借鉴)

配置1:torch(cpu)版本,通过conda或pip来安装
可选配置2:请激活一个虚拟环境conda或pip的(新手小白可以略)

配置2:下载好的本地的gpt2的文件夹

2、导入包、载入gpt2的预训练模型

gpt2_local_path = '/data/GPT2_small' # 本地的gpt2文件夹 【注意哦 末尾没有 / 】  
tokenizer = GPT2Tokenizer.from_pretrained(gpt2_local_path )  # 加载tokenizer和模型  官方给的是传入链接下载我们传本地地址
model = GPT2Model.from_pretrained(gpt2_local_path )   # 加载tokenizer和模型

3、使用配套的tokenizer

3.1 注意:我的文本数据是什么样的?

假设一百行数据,每一行数据就是一个长字符串,比如

  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值