码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(一)


    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微调训练概述

    训练过程函数分为五个部分:训练参数配置,训练数据预处理,训练数据加载,执行迭代训练,训练评估与测试。

    训练参数配置
    训练数据预处理
    训练数据加载
    训练执行迭代
    训练评估与测试

    把训练任务参数配置传递给Trainer:

    1、预训练模型或者是torch模型
    from transformers import AutoModelForSequenceClassification
    model = AutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased")
    
    • 1
    • 2
    2、训练器的超参数

    TrainingArguments包含可以更改的模型超参数,如学习率、批大小和要训练的epoch数量。如果不指定任何训练参数,则使用默认值:

    from transformers import TrainingArguments
    training_args = TrainingArguments(
        output_dir="path/to/save/folder/",
        learning_rate=2e-5,
        per_device_train_batch_size=8,
        per_device_eval_batch_size=8,
        num_train_epochs=2,
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    3、数据预处理工具

    如分词器、图像处理器、特征提取器或处理器:

    from transformers import AutoTokenizer
    tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased")
    
    • 1
    • 2
    4、加载数据
    from datasets import load_dataset
    dataset = load_dataset("rotten_tomatoes")  # doctest: +IGNORE_RESULT
    
    • 1
    • 2
    5、分词处理

    创建一个函数对数据集进行分词,并使用map将其应用到整个数据集上:

    def tokenize_dataset(dataset):
        return tokenizer(dataset["text"])
    dataset = dataset.map(tokenize_dataset, batched=True)
    
    • 1
    • 2
    • 3
    6、数据预处理,如填充,前后缀

    使用DataCollatorWithPadding从数据集中创建一批示例:

    from transformers import DataCollatorWithPadding
    data_collator = DataCollatorWithPadding(tokenizer=tokenizer)
    
    • 1
    • 2
    7、训练参数配置

    在Trainer中使用所有这些类:

    from transformers import Trainer
    trainer = Trainer(
        model=model,
        args=training_args,
        train_dataset=dataset["train"],
        eval_dataset=dataset["test"],
        tokenizer=tokenizer,
        data_collator=data_collator,
    )  # doctest: +SKIP
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    8、执行训练

    调用train()开始训练:

    trainer.train()
    
    • 1

    对于使用序列到序列模型的任务(如翻译或摘要),请使用Seq2SeqTrainer和Seq2SeqTrainingArguments类。

    可以通过继承Trainer中的方法来自定义训练循环。允许自定义特性,如损失函数、优化器和调度器(scheduler)。请查看 Trainer参考文档,了解哪些方法可以被子类化。

    软件依赖

    需要pip安装中文分词器,中文评价指标,数据集管理

    pip install rouge_chinese nltk jieba datasets
    
    • 1

    数据处理

    训练数据形式的转换,本训练测试以广告数据集作为样例讲解。

    ADGEN数据集任务的数据形式,输入(content),生成输出(summary)

    {
        "content": "类型#上衣*版型#宽松*版型#显瘦*图案#线条*衣样式#衬衫*衣袖型#泡泡袖*衣款式#抽绳",
        "summary": "这件衬衫的款式非常的宽松,利落的线条可以很好的隐藏身材上的小缺点,穿在身上有着很好的显瘦效果。领口装饰了一个可爱的抽绳,漂亮的绳结展现出了十足的个性,配合时尚的泡泡袖型,尽显女性甜美可爱的气息。"
    }
    
    • 1
    • 2
    • 3
    • 4

    End


    ​
    GPT专栏文章:

    GPT实战系列-ChatGLM3本地部署CUDA11+1080Ti+显卡24G实战方案

    GPT实战系列-ChatGLM2模型的微调训练参数解读

    GPT实战系列-如何用自己数据微调ChatGLM2模型训练

    GPT实战系列-ChatGLM2部署Ubuntu+Cuda11+显存24G实战方案

    GPT实战系列-Baichuan2本地化部署实战方案

    决策引擎:
    Falcon构建轻量级的REST API服务

    决策引擎-利用Drools实现简单防火墙策略

    ​

  • 相关阅读:
    Milvus以及Web UI 安装
    typeof null 为什么是object
    Linux Traefik工具Dashboard结合内网穿透实现远程访问
    使用Jmeter进行http接口性能测试
    GBASE 8A v953报错集锦45--orato8a 导出报错 error while loading shared libraries 等
    如果访问不了www.baidu.com,可能是什么原因?/为什么ping别人的机器ping不通?
    3.前端开发就业前景
    js数据类型和判断数据类型的方法
    手把手教你使用 Spring Boot 3 开发上线一个前后端分离的生产级系统(六) - 本地缓存 Caffeine 和 分布式缓存 Redis 集成与配置
    MMSegmentation训练自己的语义分割数据集
  • 原文地址:https://blog.csdn.net/Alex_StarSky/article/details/83903735
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号