LLMs之ChatGLM-3:finetune.py文件解读—基于数据集(多轮对话格式/输入-输出格式)来微调ChatGLM3-6B模型来适应特定的任务(如对话系统)—参数解析和配置→加载预训练模型和

489 篇文章 382 订阅

LLMs之ChatGLM-3:finetune.py文件解读—基于数据集(多轮对话格式/输入-输出格式)来微调ChatGLM3-6B模型来适应特定的任务(如对话系统)—参数解析和配置→加载预训练模型和分词器(P-tuning v2技术+模型量化技术)→数据预处理(支持不同格式的训练数据【多轮对话格式/输入-输出格式】)→初始化数据收集器和训练器→模型训练(基于PyTorch分布式框架+梯度累积+梯度检查点技术等,显存21G/对比推理需要13G)

目录

finetune.py文件解读—基于数据集(多轮对话格式/输入-输出格式)来微调ChatGLM3-6B模型来适应特定的任务(如对话系统)—参数解析和配置→加载预训练模型和分词器(P-tuning v2技术+模型量化技术)→数据预处理(支持不同格式的训练数据【多轮对话格式/输入-输出格式】)→初始化数据收集器和训练器→模型训练(基于PyTorch分布式框架+梯度累积+梯度检查点技术等,显存21G/对比推理需要13G)

概述

# 1、参数解析和配置

# 1.0、清空CUDA缓存:使用torch.cuda.empty_cache()清空GPU缓存,释放显存资源

# 1.1、解析命令行参数或JSON文件中的参数,包括模型参数、数据训练参数和序列到序列训练参数。分别存储在model_args, data_args, training_args中

# 1.2、设置日志格式和级别:根据训练参数设置了日志的级别,决定了日志的详细程度

# 1.3、设置随机种子,以确保结果的可复现性

# 2、加载预训练模型和分词器:

# 2.1、加载预训练的模型配置、模型和分词器

# 2.2、根据需要进行微调或P-tuning:如果指定了P-tuning检查点,则加载检查点中的状态字典

# 2.3、根据参数对模型进行量化或类型转换

# 3、准备数据和预处理:

# 3.1、读取训练数据,并根据数据格式创建相应的数据集,支持JSON和JSONL格式,加载训练数据并转换为模型可接受的输入格式,并将数据转换为相应的数据集对象

# 3.2、数据预处理:根据数据集对象和标记器,将原始数据转换为模型可接受的输入格式(支持不同格式的训练数据,如多轮对话格式和输入-输出格式),并进行了一些数据的验证和预处理,比如转换、填充等

# 3.3、检查数据集是否合理

# 4、初始化数据收集器和训练器

# 4.1、初始化数据收集器:用于处理输入数据和标签,用于处理输入数据和标签,并设置一些参数,如标签填充的token id和是否进行padding等

# 4.2、初始化训练器:使用加载的模型、训练参数、数据集、标记器和数据收集器,初始化训练器对象PrefixTrainer

# 5、模型训练

# 5.1、加载预训练模型或从头开始训练:如果指定了检查点,则从指定的检查点继续训练、恢复训练

# 5.2、启用梯度检查点和输入梯度计算:对模型启用梯度检查点和输入的require_grads,用于训练过程中的梯度计算和反向传播

# 5.3、开始训练:调用训练器的train()方法开始训练过程,可以选择从指定的检查点恢复训练

# 5.4、模型保存:训练完成后,保存训练得到的模型和分词器,以及训练状态

全部代码


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个处女座的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值