Skip to content

笔记

我们大多数文本数据,都是以csv格式出现的

在python代码中,加载csv数据

python
from datasets import load_from_disk,load_dataset
# 这两个方法都可以
dataset = load_from_disk(r"D:/xxxx.csv")
print(dataset)
  1. 我们把文本转化为模型可输入的数值,这个过程我们叫做编码 tf是tensorflow的tensor数据类型,pt是pythorch的tensor,np是numpy的数据类型

  2. 什么叫做bert模型 BERT模型代表了从静态词嵌入到transformer的编码器bert。gpt是transformer的解码器,这都是ai术语,就是一个特征提取,特征还原。

  3. BertTokenizer 和 AutoTokenizer

    • 什么是微调? 只调整模型一部分的结构或者参数,为了让模型能适应我当前的任务
    • 为什么要微调? 因为我想白嫖模型已经训练好的部分参数,以此来缩短我自己训练模型的时间
    • 增量微调 在模型原有的结构基础上,增加一部分结构,让这部分增加的结构来完成我们自己的任务
  4. 为什么要加载预训练模型

  5. 训练时,损失在下降,精度在上升就没问题, 权重就是模型 疑问:预训练模型是用来做什么的,是 在预训练模型的基础上训练自己的数据吗,相当于基座这个意思? 判断过拟合得用验证集 模型微调的方式,步骤 模型内部只有下面这个三个会改变模型内部参数,其余操作不会改变 alt text

  6. 为什么加入验证集,去判断过拟合

  7. bert的语言字典vocab是给你开放出来了,正常情况下不会给你开放,字典内容加了数据,要进行重新训练,至少embedding模型要重新训练(微调)

  8. 模型有哪些结构?这个机构指的是神经元的组合方法,就是神经元以什么形式组合在一起的 当下主流的模型结构有:1、全连接MLP 2、RNN 循环神经网络(已经快消失了)3、CNN卷积4、图神经网络(它是一个拓扑结构) xw+b=h,变量是float32位数据,神经网络就是一堆数组构成的矩阵,做的就是数学计算

  9. 微调从大的方向分为?全量微调(所有模型都参与微调,就比如模型config发生改变)、局部微调、增量微调 增量微调只调增量部分,调的是w+b

  10. 模型训练增加精度的措施?1、保证数据的质量2、增加训练时长 在处理分类问题时,训练集中每个类别的数据量必须均衡,如果不均衡必须重采样

  11. 分类任务中,数据不均衡的问题处理方法? 使用imbalanced-learn的库,把少的变多的就是过采样,把多的变少的,就是欠采样 alt text

  12. 什么时候为什么要特征和标签分类

  13. 如何更改模型的config文件实现自定义embedding,满足数据要求?训练模型时,如果模型的配置改动了,增量训练就无效了,不能在 torch.nograd(): 中,继续训练,就是不能冻结权重 alt text

  14. 什么叫做冻结权重呢?就是不更改模型的参数

  15. 模型训练过程中,批次bacth_size(每次训练的数目)得试,批次越大越好,模型训练的效率越高,但是它和机器的显存有关(最优的时跑到显存90%左右)

  16. bert是transform的编码器部分,可以利用其做文本分类

  17. 加载模型和分词器,这个分词器是什么东西,为什么加载分词器和模型的时候,要写路径,是下载到本地加载? alt text

  18. 通过pytorch创建数据集 模板:

python
from torch.utils.data import Dataset

class MyDataset(Dataset):
   def __init__(self):
      pass
   
   def __len__(self):
      pass

   def __getitem__(self,item):
      pass
  1. gpt生成文本的数据集的label,是没有的,也不能说是没有,是当前文字的前一个字 拿python模板举例

    python
     def __getitem__(self,item):
        return self.lines[item]
  2. 那生成类的精度是靠什么判断的? 相似度 文本内容生成的评估指标:客观评估、主管评估,用一些大的开源模型跑一下分

  3. 训练语言模型的优化器一般用什么 AdamW,为什么用它,因为它快,它简单,它里面的学习率可以自动调整

  4. DataLoader的使用方法???

  5. 利用bert做文本分类的时候,我们用的是增量微调,这里的bert只做了个特征提取,意思就是 bert理解输入的含义就可以了

  6. input_ids是啥来着

  7. pytorch优化器学习率调整策略,有14种还是16种忘了,下面的这个是line线性策略,使得优化器在学习中更加稳定 alt text

  8. 做nlp的时候,loss一般在1.5左右就比较好了

  9. 模型训练时候的加速方法,大模型微调的时候也用到,混合精度运算

  10. 本地测试transformer模型时候,不用使用 model.eval() ,因为transformer内部有调用,原因后面再查查

混合精度训练(重点)

混合精度计算是一种能大幅度加速模型训练,并且减少显存占用,同时又不影响模型精度的技术,目前已经是大模型训练的默认配置。 计算机是怎样存储浮点数的呢? alt text 低精度带来的好处 alt text 同时 低精度也带来了一些问题,float16的小数位置只有10位,太小的数,导致小数溢出为0了 alt text

  • 所以混合精度应用而生,在高精度的位置采用FP32,低精度的位置采用FL16

tips:参数值相比较梯度来说都很大,就会有参数值吃掉梯度值的问题