首页 > 其他分享 >GLM大模型训练

GLM大模型训练

时间:2023-09-28 16:45:20浏览次数:47  
标签:predict GLM 训练 -- 模型 py 故障 model

ChatGPTBook/LLMFTProj

Name Last commit message Last commit date

parent directory

..
ChatGLM-6B (Directory) update code 3 months ago
data (Directory) update code 3 months ago
images (Directory) update code 3 months ago
README.md (File) update code 3 months ago
configuration_chatglm.py (File) update code 3 months ago
data_helper.py (File) update code 3 months ago
data_set.py (File) update code 3 months ago
finetuning_freeze.py (File) update code 3 months ago
finetuning_lora.py (File) update code 3 months ago
finetuning_pt.py (File) update code 3 months ago
modeling_chatglm.py (File) update code 3 months ago
predict_freeze.py (File) update code 3 months ago
predict_lora.py (File) update code 3 months ago
predict_pt.py (File) update code 3 months ago
quantization.py (File) update code 3 months ago
requirements.txt (File) update code 3 months ago
tokenization_chatglm.py (File) update code 3 months ago

README.md

《大模型预训练》实战-基于大型语言模型的信息抽取实战。

项目简介

针对信息抽取数据集,对ChatGLM模型进行微调,帮助读者深入了解大型语言模型在微调过程中的原理、流程和注意事项等。

项目主要结构如下:

  • data 存放数据的文件夹
    • ori_data.json 原始信息抽取数据
    • sample.json 处理后语料样例
  • pretrain_model 预训练文件路径
    • config.json
    • ice_text.model
    • tokenizer_config.json
    • pytorch_model.bin.index.json
    • pytorch_model-00001-of-00008.bin
    • pytorch_model-00002-of-00008.bin
    • pytorch_model-00003-of-00008.bin
    • pytorch_model-00004-of-00008.bin
    • pytorch_model-00005-of-00008.bin
    • pytorch_model-00006-of-00008.bin
    • pytorch_model-00007-of-00008.bin
    • pytorch_model-00008-of-00008.bin
  • data_helper.py 数据预处理文件
  • data_set.py 模型所需数据类文件
  • modeling_chatglm.py 模型文件
  • configuration_chatglm.py 模型配置参数文件
  • tokenization_chatglm.py 模型分词器文件
  • finetuning_freeze.py Freeze方法模型微调文件
  • predict_freeze.py Freeze方法模型推理文件
  • finetuning_lora.py LoRA方法模型微调文件
  • predict_lora.py LoRA方法模型推理文件
  • finetuning_pt.py P-Tuning方法模型微调文件
  • predict_pt.py P-Tuning方法模型推理文件

注意:由于GitHub不方便放模型文件,因此pretrain_model文件夹中的模型bin文件,请从百度云盘中下载。

文件名称下载地址提取码
pretrain_model 百度云 vvpg

环境配置

模型训练或推理所需环境,请参考requirements.txt文件。

数据处理

数据预处理需要运行data_helper.py文件,会在data文件夹中生成训练集和测试集文件。

命令如下:

python3 data_helper.py
 

注意:如果需要修改数据生成路径或名称,请修改data_helper.py文件55-58行,自行定义。单个样本示例如下:

{
  "text": "故障现象:发动机水温高,风扇始终是低速转动,高速档不工作,开空调尤其如此。",
  "answer": "发动机_部件故障_水温高\n风扇_部件故障_低速转动"
}  
 

Freeze微调

模型训练

模型训练需要运行finetuning_freeze.py文件,会自动生成output_dir_freeze文件夹,存放每个epoch保存的模型文件。

命令如下:

CUDA_VISIBLE_DEVICES=0 deepspeed finetuning_freeze.py \
                 --num_train_epochs 5 \
                 --train_batch_size 2 \
                 --output_dir output_dir_freeze/ \
                 --max_len 768 \
                 --max_src_len 450   
 

注意:当服务器资源不同或读者更换数据等时,可以在模型训练时修改响应参数,详细参数说明见代码或阅读书6.5.3小节。

模型训练示例如下:

img.png

模型推理

模型训练需要运行predict_freeze.py文件,采用自己训练后的模型。

命令如下:

# 控制台单条预测
python3 predict_freeze.py --predict_one True 
or
# 文件批量预测
python3 predict_freeze.py --test_path data/spo_1.json --predict_one False
 

注意:如果修改模型路径,请修改--model_path参数。

模型推理示例如下: img.png

样例1:
待抽取文本:故障现象:发动;机怠速不规则抖动,故障灯亮
抽取三元组内容:['故障灯_部件故障_亮', '机怠速_性能故障_不规则抖动']
样例2:
待抽取文本:现象6:更换干式水表中换好水表与密封圈后,还出现渗漏故障。(1)故障原因分析:1)上表法兰片时,用力不均匀使法兰片倾斜。2)密封圈处有泥砂。(2)处理措施:1)上表法兰片时,应对角平衡上紧螺栓。2)密封圈处泥砂要擦干净。
抽取三元组内容:['密封圈_部件故障_有泥砂', '法兰片_部件故障_有泥砂']
 

LoRA微调

模型训练

模型训练需要运行finetuning_lora.py文件,会自动生成output_dir_lora文件夹,存放每个epoch保存的模型文件。

命令如下:

CUDA_VISIBLE_DEVICES=0 deepspeed finetuning_lora.py \
                 --num_train_epochs 5 \
                 --train_batch_size 2 \
                 --output_dir output_dir_lora/ \
                 --max_len 768 \
                 --max_src_len 450 \
                 --lora_r 8
 

注意:当服务器资源不同或读者更换数据等时,可以在模型训练时修改响应参数,详细参数说明见代码或阅读书6.5.4小节。

模型训练示例如下:

img.png

模型推理

模型训练需要运行predict_lora.py文件,采用自己训练后的模型。

命令如下:

# 控制台单条预测
python3 predict_lora.py --predict_one True
or
# 文件批量预测
python3 predict_lora.py --test_path data/spo_1.json --predict_one False
 

注意:如果修改模型路径,请修改--model_path参数。

模型推理示例如下: img.png

样例1:
待抽取文本:故障现象:奔腾B70做PDI检查时车辆无法启动
抽取三元组内容:['车_部件故障_无法启动']
样例2:
待抽取文本:处理原则:A)检查当地监控系统告警及动作信息,相关电流、电压数据,若相应极未闭锁,应将其紧急停运。B)立即向值班调控人汇报,及时通知消防部门。C)应注意单极闭锁对另一极的影响,及时配合调控对直流输送功率及运行方式进行调整。D)检查记录控制保护及自动装置动作信息,核对设备动作情况,检查设备着火情况。E)将着火的直流分压器设备转为检修,并在保证人身安全的前提下,用灭火器材灭火
抽取三元组内容:['单极_部件故障_闭锁', '设备_部件故障_着火', '极_部件故障_未闭锁']
 

P-Tuning V2微调

模型训练

模型训练需要运行finetuning_pt.py文件,会自动生成output_dir_pt文件夹,存放每个epoch保存的模型文件。

命令如下:

CUDA_VISIBLE_DEVICES=0 deepspeed finetuning_pt.py \
                 --num_train_epochs 5 \
                 --train_batch_size 2 \
                 --output_dir output_dir_lora/ \
                 --max_len 768 \
                 --max_src_len 450 \
                 --pre_seq_len 8 \
                 --prefix_projection True 
 

注意:当服务器资源不同或读者更换数据等时,可以在模型训练时修改响应参数,详细参数说明见代码或阅读书6.5.5小节。

模型训练示例如下:

img.png

模型推理

模型训练需要运行predict_pt.py文件,采用自己训练后的模型。

命令如下:

# 控制台单条预测
python3 predict_pt.py --predict_one True
or
# 文件批量预测
python3 predict_pt.py --test_path data/spo_1.json --predict_one False
 

注意:如果修改模型路径,请修改--model_path参数。

模型推理示例如下: 

样例1:
待抽取文本:故障现象:发动机噪音大。
抽取三元组内容:['发动机_部件故障_噪音大']
样例2:
待抽取文本:原因分析:夜行灯,照明灯由同一开关(大灯组合开关TNS档位)控制。保险丝由一条共用主保险120A和照明灯独立保险5A、夜行灯独立保险15A组成(线路图见附件二)。室内照明灯线路分布:手自一体开关、自动空调控制器、危险警报开关、音响控制单元、方向盘音响开关、组合仪表等仪表台照明灯。夜行灯线路分布:左右前位置灯、左右后行车灯和牌照灯。可能原因:手自一体开关、自动空调控制器、危险警报开关、音响控制单元、方向盘音响开关、组合仪表等故障,线路故障。解决措施:处理方向盘音响按扭线束
抽取三元组内容:['危险警报开关_部件故障_故障', '线路_组成_照明灯', '音响控制单元_部件故障_故障', '接线_组成_手自一体开关', '组合仪表_部件故障_故障', '方向盘音响开关_部件故障_故障', '夜行灯线路_部件故障_故障', '手自一体开关_部件故障_故障', '自动空调控制器_部件故障_故障']
 

总结

本项目中的代码包含大量的注释信息,帮助读者更容易的阅读代码、以及了解其原理。读者跑通代码的后,可以根据自己特定的任务,定向修改配置参数或代码,实现自己响应的功能。

 

【代码说明】

    # 实例化ChatGLM模型,并用半精度加载模型
    model = ChatGLMForConditionalGeneration.from_pretrained(args.model_dir)
    model = model.half().cuda()

    # 设置训练参数,仅训练模型最后五层-23、24、25、26、27层
    for name, param in model.named_parameters():
        if not any(nd in name for nd in ["layers.27", "layers.26", "layers.25", "layers.24", "layers.23"]):
            param.requires_grad = False

 

另外,训练如果不用gpu基本上是不太可能完成的,GG!!!并且cuda这些都是要安装的。以后有GPU资源了再来倒腾一遍。  

 

标签:predict,GLM,训练,--,模型,py,故障,model
From: https://www.cnblogs.com/bonelee/p/17736079.html

相关文章

  • C++内存模型
    目录C++内存模型存储持续性内存分配位置链接性作用域对于函数C++内存模型存储持续性C++存储持续性有以下类别:自动存储持续性:在函数定义中声明的变量(包括函数参数)。静态存储持续性:在函数定义外定义的变量和使用关键字static定义的变量。线程存储持续性(C++11):使用关键字thread......
  • 数据分享|用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化|附代码数
    原文链接:http://tecdat.cn/?p=24127最近我们被客户要求撰写关于预测鲍鱼年龄的研究报告,包括一些图形和统计输出。鲍鱼是一种贝类,在世界许多地方都被视为美味佳肴养殖者通常会切开贝壳并通过显微镜计算环数来估计鲍鱼的年龄。因此,判断鲍鱼的年龄很困难,主要是因为它们的大小不仅......
  • 贝叶斯线性回归和多元线性回归构建工资预测模型|附代码数据
    原文链接:http://tecdat.cn/?p=21641最近我们被客户要求撰写关于贝叶斯线性回归的研究报告,包括一些图形和统计输出。在劳动经济学领域,收入和工资的研究为从性别歧视到高等教育等问题提供了见解工资模型在本文中,我们将分析横断面工资数据,以期在实践中使用贝叶斯方法,如BIC和贝叶......
  • R语言非线性回归和广义线性模型:泊松回归、伽马回归、逻辑回归、Beta回归分析机动车事
    全文链接:https://tecdat.cn/?p=33781原文出处:拓端数据部落公众号我们使用广义线性模型(GeneralizedLinearModels,简称GLM)来研究客户的非正态数据,并探索非线性关系。GLM是一种灵活的统计模型,适用于各种数据类型和分布,包括二项分布、泊松分布和负二项分布等非正态分布。通过GLM,我......
  • R语言广义相加(加性)模型(GAMs)与光滑函数可视化|附代码数据
    原文链接:http://tecdat.cn/?p=23509 原文出处:拓端数据部落公众号最近我们被客户要求撰写关于GAMs的研究报告,包括一些图形和统计输出。我们在研究工作中使用广义加性模型(GAMs)。mgcv软件包是一套优秀的软件,可以为非常大的数据集指定、拟合和可视化GAMs。这篇文章介绍一下广义加......
  • Python信贷风控模型:梯度提升Adaboost,XGBoost,SGD, GBOOST, SVC,随机森林, KNN预测金
    原文链接:http://tecdat.cn/?p=26184 原文出处:拓端数据部落公众号最近我们被客户要求撰写关于信贷风控模型的研究报告,包括一些图形和统计输出。在此数据集中,我们必须预测信贷的违约支付,并找出哪些变量是违约支付的最强预测因子?以及不同人口统计学变量的类别,拖欠还款的概率如何......
  • R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证
    全文链接:http://tecdat.cn/?p=31162最近我们被客户要求撰写关于SV模型的研究报告,包括一些图形和统计输出。本文做SV模型,选取马尔可夫蒙特卡罗法(MCMC)、正则化广义矩估计法和准最大似然估计法估计。模拟SV模型的估计方法:  sim<-svsim(1000,mu=-9,phi=0.97,sigma......
  • 阿里云易立:以云原生之力,实现大模型时代基础设施能力跃升 | KubeCon 主论坛分享
    今天,由云原生计算基金会CNCF主办的KubeCon+CloudNativeCon+OpenSourceSummitChina2023主论坛在上海举办。阿里云容器服务负责人易立在主论坛发表演讲,介绍阿里云为大模型提供的基础设施能力,以及通过云原生AI的方式助力大模型普惠提效。易立在主论坛现场演讲大模型无疑是AI......
  • 阿里云易立:以云原生之力,实现大模型时代基础设施能力跃升 | KubeCon 主论坛分享
    今天,由云原生计算基金会CNCF主办的KubeCon+CloudNativeCon+OpenSourceSummitChina2023主论坛在上海举办。阿里云容器服务负责人易立在主论坛发表演讲,介绍阿里云为大模型提供的基础设施能力,以及通过云原生AI的方式助力大模型普惠提效。易立在主论坛现场演讲大模型无疑是......
  • ChatGLM-6B-PT微调
    目录开发环境ChatGLM2-6B源码下载模型安装依赖下载ADGEN数据集微调前修改训练步数微调后开发环境矩池云https://www.matpool.com/host-market/gpuChatGLM2-6B源码https://github.com/THUDM/ChatGLM2-6Bgitclonehttps://github.com/THUDM/ChatGLM2-6B.git下载模型......