番禺做网站多少钱,雅布设计,做网站用的云控制台,互联网营销有哪些GPT实战系列-如何使用P-Tuning本地化训练ChatGLM2等LLM模型#xff1f; 文章目录 GPT实战系列-如何使用P-Tuning本地化训练ChatGLM2等LLM模型#xff1f;P-Tuning微调训练概述1、预训练模型或者是torch模型2、训练器的超参数3、数据预处理工具4、加载数据5、分词处理6、数据预…GPT实战系列-如何使用P-Tuning本地化训练ChatGLM2等LLM模型 文章目录 GPT实战系列-如何使用P-Tuning本地化训练ChatGLM2等LLM模型P-Tuning微调训练概述1、预训练模型或者是torch模型2、训练器的超参数3、数据预处理工具4、加载数据5、分词处理6、数据预处理如填充前后缀7、训练参数配置8、执行训练 软件依赖数据处理 P-Tuning v2 将 ChatGLM2-6B 模型需要微调的参数量减少到原来的 0.1%再通过模型量化、Gradient Checkpoint 等方法最低只需要 7GB 显存即可运行。 本文试图分析程序结构和代码解释序列转换生成模型的微调训练。为了篇幅不要过长下期解读训练代码。
P-Tuning微调训练概述
训练过程函数分为五个部分训练参数配置训练数据预处理训练数据加载执行迭代训练训练评估与测试。 #mermaid-svg-rn2R7ZNU7YgRZXFb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-rn2R7ZNU7YgRZXFb .error-icon{fill:#552222;}#mermaid-svg-rn2R7ZNU7YgRZXFb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-rn2R7ZNU7YgRZXFb .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-rn2R7ZNU7YgRZXFb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-rn2R7ZNU7YgRZXFb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-rn2R7ZNU7YgRZXFb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-rn2R7ZNU7YgRZXFb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-rn2R7ZNU7YgRZXFb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-rn2R7ZNU7YgRZXFb .marker.cross{stroke:#333333;}#mermaid-svg-rn2R7ZNU7YgRZXFb svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-rn2R7ZNU7YgRZXFb .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-rn2R7ZNU7YgRZXFb .cluster-label text{fill:#333;}#mermaid-svg-rn2R7ZNU7YgRZXFb .cluster-label span{color:#333;}#mermaid-svg-rn2R7ZNU7YgRZXFb .label text,#mermaid-svg-rn2R7ZNU7YgRZXFb span{fill:#333;color:#333;}#mermaid-svg-rn2R7ZNU7YgRZXFb .node rect,#mermaid-svg-rn2R7ZNU7YgRZXFb .node circle,#mermaid-svg-rn2R7ZNU7YgRZXFb .node ellipse,#mermaid-svg-rn2R7ZNU7YgRZXFb .node polygon,#mermaid-svg-rn2R7ZNU7YgRZXFb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-rn2R7ZNU7YgRZXFb .node .label{text-align:center;}#mermaid-svg-rn2R7ZNU7YgRZXFb .node.clickable{cursor:pointer;}#mermaid-svg-rn2R7ZNU7YgRZXFb .arrowheadPath{fill:#333333;}#mermaid-svg-rn2R7ZNU7YgRZXFb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-rn2R7ZNU7YgRZXFb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-rn2R7ZNU7YgRZXFb .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-rn2R7ZNU7YgRZXFb .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-rn2R7ZNU7YgRZXFb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-rn2R7ZNU7YgRZXFb .cluster text{fill:#333;}#mermaid-svg-rn2R7ZNU7YgRZXFb .cluster span{color:#333;}#mermaid-svg-rn2R7ZNU7YgRZXFb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-rn2R7ZNU7YgRZXFb :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 训练参数配置 训练数据预处理 训练数据加载 训练执行迭代 训练评估与测试 把训练任务参数配置传递给Trainer
1、预训练模型或者是torch模型
from transformers import AutoModelForSequenceClassification
model AutoModelForSequenceClassification.from_pretrained(distilbert-base-uncased)2、训练器的超参数
TrainingArguments包含可以更改的模型超参数如学习率、批大小和要训练的epoch数量。如果不指定任何训练参数则使用默认值
from transformers import TrainingArguments
training_args TrainingArguments(output_dirpath/to/save/folder/,learning_rate2e-5,per_device_train_batch_size8,per_device_eval_batch_size8,num_train_epochs2,
)3、数据预处理工具
如分词器、图像处理器、特征提取器或处理器
from transformers import AutoTokenizer
tokenizer AutoTokenizer.from_pretrained(distilbert-base-uncased)4、加载数据
from datasets import load_dataset
dataset load_dataset(rotten_tomatoes) # doctest: IGNORE_RESULT5、分词处理
创建一个函数对数据集进行分词并使用map将其应用到整个数据集上
def tokenize_dataset(dataset):return tokenizer(dataset[text])
dataset dataset.map(tokenize_dataset, batchedTrue)6、数据预处理如填充前后缀
使用DataCollatorWithPadding从数据集中创建一批示例
from transformers import DataCollatorWithPadding
data_collator DataCollatorWithPadding(tokenizertokenizer)7、训练参数配置
在Trainer中使用所有这些类
from transformers import Trainer
trainer Trainer(modelmodel,argstraining_args,train_datasetdataset[train],eval_datasetdataset[test],tokenizertokenizer,data_collatordata_collator,
) # doctest: SKIP8、执行训练
调用train()开始训练
trainer.train()对于使用序列到序列模型的任务如翻译或摘要请使用Seq2SeqTrainer和Seq2SeqTrainingArguments类。
可以通过继承Trainer中的方法来自定义训练循环。允许自定义特性如损失函数、优化器和调度器scheduler。请查看 Trainer参考文档了解哪些方法可以被子类化。
软件依赖
需要pip安装中文分词器中文评价指标数据集管理
pip install rouge_chinese nltk jieba datasets数据处理
训练数据形式的转换本训练测试以广告数据集作为样例讲解。
ADGEN数据集任务的数据形式输入content生成输出summary
{content: 类型#上衣*版型#宽松*版型#显瘦*图案#线条*衣样式#衬衫*衣袖型#泡泡袖*衣款式#抽绳,summary: 这件衬衫的款式非常的宽松利落的线条可以很好的隐藏身材上的小缺点穿在身上有着很好的显瘦效果。领口装饰了一个可爱的抽绳漂亮的绳结展现出了十足的个性配合时尚的泡泡袖型尽显女性甜美可爱的气息。
}End GPT专栏文章
GPT实战系列-ChatGLM3本地部署CUDA111080Ti显卡24G实战方案
GPT实战系列-ChatGLM2模型的微调训练参数解读
GPT实战系列-如何用自己数据微调ChatGLM2模型训练
GPT实战系列-ChatGLM2部署UbuntuCuda11显存24G实战方案
GPT实战系列-Baichuan2本地化部署实战方案
决策引擎 Falcon构建轻量级的REST API服务
决策引擎-利用Drools实现简单防火墙策略