【ChatBot开发笔记】GPT2模型的导入、使用和分析,模型训练

本文介绍了使用Transformers框架进行GPT2模型的导入和应用,该模型在上下文连贯性和情感表达上表现出色。尽管GPT3的参数量巨大,对于一般设备不切实际,但GPT2的15亿参数使得它成为训练的有效选择。文章详细讨论了训练过程中的参数设置,如epoch、batch_size和梯度累积,并提到了前馈传播和反向更新的算法分析。
摘要由CSDN通过智能技术生成

Transformers是一个先进的NLP框架,适用于pytorch和tensorflow2.0,这边使用的GPT2框架是一个OpenAI的先进技术,在上下文连贯性和情感表达上有相当好的表现,实际使用时可以直接从transformer库导入:

from transformers.models.gpt2.modeling_gpt2 import GPT2Config, GPT2LMHeadModel

其实OpenAI还推出了GPT3——1750亿的参数和千万级别的算力需求就不是笔记本显卡带的动的了。GPT2有15亿参数,面对8M的语料就需要4h左右,还是比较可行的方案


定义参数,统计step,采用梯度累积和warmup策略,导入tensorboardX

def train(model, device, train_list, multi_gpu, args):
    # model:被训练的模型
    # device:使用的GPU
    # train_list:经过划分后的训练集
    # multi_gpu:多GPU设置参数
    # args:代码参数管理器

    train_dataset = MyDataset(train_list)
    train_dataloader = DataLoader(train_dataset, batch_size=args.batch_size, shuffle=True, num_workers=args.num_workers,
                                  collate_fn=collate_fn)
    model.train()
    # 计算所有epoch进行参数优化的总步数total_steps
    # 在一定条件下,branch_size效果越大越好,梯度累积就以通过积累多个branch的梯度,在有限内存的前提下达到大branch的效果
    total_steps = int(train_dataset.__len__() * args.epochs / args.batch_size / args.gradient_accumulation)
    logger.info('total training steps = {}'.format(total_steps))

    # 设置优化器,并且在初始训练时,使用warmup策略
    # 普遍观点认为在初始阶段以小于基础学习率的学习率进行warmup有助于避免局部过拟合,帮助模型熟悉数据,节约时间
    optimizer = transformers.AdamW(model.parameters(), lr=args.lr
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值