LLMs之ChatGLM2:ChatGLM-Finetuning之源码解读(train.py文件)—解析命令→加载数据→模型训练(四种方式微调+DeepSpeed封装数据并行)+模型保存(定期输出lo

该博客详细解析了ChatGLM2模型的训练源码,涉及命令行参数解析、数据加载、模型微调(LoRA、Freeze、P-tuning)、DeepSpeed数据并行及模型保存。使用DeepSpeed进行分布式训练,包括梯度裁剪、优化器步进和模型状态保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LLMs之ChatGLM2:ChatGLM-Finetuning之源码解读(train.py文件)—解析命令行(模型路径+数据集相关【最大序列长度/最大输入长度】+训练参数相关【批次大小/学习率/权重衰减系数/训练轮数/梯度累计步数/学习率预热比例】+

导读:本代码文件实现了加载数据、定义预训练模型,根据不同的训练类型进行微调,使用DeepSpeed来进行分布式高效训练(利用deepspeed封装数据并行,以及通过step()和backward()实现优化器步进与反向传播),并定期打印训练过程中的损失和保存模型。当前代码中不包含模型评估部分,可以自定义测试样本进行规则打分自行评估

目录

解析命令→加载数据→模型训练(四种方式微调+DeepSpeed封装数据并行)+模型保存(定期输出loss)

# 1、解析命令行及初始化设置

# 1.1、解析命令行参数

# Model:模型的名称或路径

# DataSet:训练集的路径、训练数据中允许的最大序列长度、输入的最大长度、是否跳过一些样本?

# Train:每个设备上的batch size、学习率、权重衰减系数、训练轮数、梯度累积步数、学习率预热的比例,模型和训练结果的输出路径、模型类型、训练方式、随机种子、本地进程的排名(通常在分布式训练中使用)

# 显示loss的频率、否启用梯度检查点、保存模型的频率

# deepspeed features:DeepSpeed配置文件的路径

# LoRA:LoRA模型的维度、alpha参数正交性正则化因子(控制低秩分解矩阵的正交性)、dropout比例(正则化技术)、需要应用LoRA的模块名称(通常是注意力模块的query/key/value等)

# Freeze:需要冻结的参数层(不更新的权重层)

# P-tuning:前缀序列的长度,,P-tuning会先输入这个长度的前缀来初始化隐状态,是否要应用前缀投影,是否对前缀序列进行投影得到固定长度的Embedding

# 1.2、初始化设置

# 1.2.1、if判断是否启用分布式训练设置设备GPU

# 1.2.2、从指定的JSON文件中加载DeepSpeed配置参数(ZeRO2或ZeRO3)并添加其它参数:如批量大小、微批次大小(PP并行技术需要)、梯度积累步数

# 1.2.3、初始化主日志写入器(判断只有主进程才写入):只有在全局排名小于等于0的进程(通常是主进程)上才会创建TensorBoard的日志写入器

# 1.2.4、初始化随机种子

# 1.2.5、初始化分布式同步操作

# 2、数据处理

# 2.1、加载tokenizer用于文本分词

# 2.2、加载训练数据集

# 3、模型训练

# 3.1、加载模型:根据训练类型(lora、freeze、ptuning、all)加载相应的模型

# 3.2、载入优化器和学习率调度器,设置相关参数,最后封装到deepspeed的optimizer和scheduler中

# 3.2.1、载入优化器并设置参数

# 3.2.2、载入学习率调度器并设置参数

# 3.3、打印模型的可训练参数相关信息

# 3.4、判断是否启用梯度检查点

# 3.5、初始化DeepSpeed:将模型和优化器包装到deepspeed中

# 3.6、开始执行模型训练,包括循环迭代训练数据,计算损失,反向传播,梯度裁剪,更新模型参数等。

# 3.6.1、训练epoch循环

# 3.6.2、循环迭代训练数据,遍历dataloader,输入到模型,计算loss,执行反向传播

# 3.6.3、梯度裁剪:防止梯度爆炸,用于稳定深度学习模型训练的技巧

# 3.6.4、定期显示训练损失并保存模型:使用deepspeed的step进行优化器步进

# 3.6.5、最后再次保存模型

实现代码


LLMs之ChatGLM2:ChatGLM-Finetuning之源码解读(train.py文件)—解析命令行(模型路径+数据集相关【最大序列长度/最大输入长度】+训练参数相关【批次大小/学习率/权重衰减系数/训练轮数/梯度累计步数/学习率预热比例】+结果输出相关【输出路径/训练方式【四种方式微调,如Freeze/Lora/P-Tuning/全量参数】/进程标志/loss频率/保存模型频率】+否启用梯度检查点+DeepSpeed配置+LoRA/Freeze/P-tuning配置)及初始化设置(是否启用分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一个处女座的程序猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值